<?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>189257</bug_id>
          
          <creation_ts>2018-09-03 23:31:45 -0700</creation_ts>
          <short_desc>Resurrect WebKitTestRunner for Windows port</short_desc>
          <delta_ts>2018-11-12 10:59:24 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=123152</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>lforschler</cc>
    
    <cc>pvollan</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>takashi.komori</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456267</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-03 23:31:45 -0700</bug_when>
    <thetext>Resurrect WebKitTestRunner for Windows port

It has been removed in Bug 123152.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475413</commentid>
    <comment_count>1</comment_count>
      <attachid>353945</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-05 21:48:05 -0800</bug_when>
    <thetext>Created attachment 353945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475415</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-05 22:01:28 -0800</bug_when>
    <thetext>Attachment 353945 did not pass style-queue:


ERROR: Source/WebKit/PlatformWin.cmake:195:  Alphabetical sorting problem. &quot;Shared/API/c/cairo&quot; should be before &quot;Shared/API/c/win&quot;.  [list/order] [5]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:30:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:120:  Missing space before {  [whitespace/braces] [5]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:183:  Missing spaces around =  [whitespace/operators] [4]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:183:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:183:  Missing space before {  [whitespace/braces] [5]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:199:  Use the class HWndDC instead of calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:200:  Use adoptGDIObject and GDIObject&lt;HDC&gt; when calling CreateCompatibleDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:219:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:220:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:221:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:222:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:223:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:224:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:225:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:226:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:180:  Missing space before {  [whitespace/braces] [5]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:180:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:183:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:185:  bundle_dir is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:189:  bundle_dir_utf is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:190:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Tools/WebKitTestRunner/win/WebKitTestRunnerPrefix.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 24 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475573</commentid>
    <comment_count>3</comment_count>
      <attachid>353945</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-06 10:39:13 -0800</bug_when>
    <thetext>Comment on attachment 353945
Patch

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

Overall looks about ready to go. Just some cleanup on the macros is needed.

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:73
&gt; +#if !PLATFORM(GTK) &amp;&amp; !PLATFORM(WPE) &amp;&amp; !PLATFORM(WIN)

Could probably be #if PLATFORM(COCOA) at this point

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:82
&gt; +#if (!PLATFORM(GTK) &amp;&amp; !PLATFORM(WPE) &amp;&amp; !PLATFORM(WIN)) || !HAVE(ACCESSIBILITY)

if PLATFORM(COCOA) || !HAVE(ACCESSIBILITY)

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:365
&gt; +#if PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(WPE) || PLATFORM(WIN)

Think this guard can be removed.

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp:96
&gt; +#if PLATFORM(GTK) || PLATFORM(WPE) || PLATFORM(WIN)

#if !PLATFORM(COCOA)

&gt; Tools/WebKitTestRunner/InjectedBundle/TestRunner.h:43
&gt; +#elif PLATFORM(GTK) || PLATFORM(WPE) || PLATFORM(WIN)

I think this can probably just be an #else since it looks like there&apos;s a PLATFORM(COCOA) above.

&gt; Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.h:45
&gt; +#ifdef __OBJC__
&gt; +#import &lt;Foundation/Foundation.h&gt;
&gt; +#endif
&gt; +
&gt; +#include &lt;WebKit/WebKit2_C.h&gt;
&gt; +#include &lt;wtf/Platform.h&gt;
&gt; +
&gt; +/* When C++ exceptions are disabled, the C++ library defines |try| and |catch|
&gt; +* to allow C++ code that expects exceptions to build. These definitions
&gt; +* interfere with Objective-C++ uses of Objective-C exception handlers, which
&gt; +* use |@try| and |@catch|. As a workaround, undefine these macros. */
&gt; +
&gt; +#ifdef __cplusplus
&gt; +#include &lt;algorithm&gt; // needed for exception_defines.h
&gt; +#endif
&gt; +
&gt; +#ifdef __OBJC__
&gt; +#undef try
&gt; +#undef catch
&gt; +#endif

Delete this part we don&apos;t have ObjC in Windows.

&gt; Tools/WebKitTestRunner/PlatformWebView.h:65
&gt; +#elif PLATFORM(WIN)
&gt; +#include &lt;cairo.h&gt;
&gt; +class TestRunnerWindow;
&gt; +typedef HWND PlatformWindow;
&gt; +typedef cairo_surface_t* PlatformImage;
&gt; +typedef WKViewRef PlatformWKView;

It looks like it would be better to define PlatformImage in a #if USE(CAIRO) that way WPE/GTK/WinCairo all get it.

&gt; Tools/WebKitTestRunner/TestController.cpp:881
&gt; +#if !PLATFORM(COCOA) &amp;&amp; !PLATFORM(WPE) &amp;&amp; !PLATFORM(WIN)

#if PLATFORM(GTK)

&gt; Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h:50
&gt; +#if OS(WINDOWS)
&gt; +#undef WEBCORE_EXPORT
&gt; +#define WEBCORE_EXPORT WTF_IMPORT_DECLARATION
&gt; +#endif

There any WebKit exports that need to be defined?

&gt; Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp:171
&gt; +static cairo_surface_t* generateCairoSurfaceFromBitmap(BITMAP bitmapTag)

Not a huge deal but it might make sense to have some #if USE(CAIRO) guards around these. Apple is looking at a Direct2D backend and is interested in having WebKit support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475960</commentid>
    <comment_count>4</comment_count>
      <attachid>354083</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-07 04:42:02 -0800</bug_when>
    <thetext>Created attachment 354083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475961</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-07 05:00:35 -0800</bug_when>
    <thetext>Attachment 354083 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:189:  bundleDir_utf is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/WebKitTestRunner/win/WebKitTestRunnerPrefix.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476375</commentid>
    <comment_count>6</comment_count>
      <attachid>354192</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-07 18:36:11 -0800</bug_when>
    <thetext>Created attachment 354192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476380</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-07 18:49:42 -0800</bug_when>
    <thetext>Attachment 354192 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WebKitTestRunner/win/TestControllerWin.cpp:189:  bundleDir_utf is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/WebKitTestRunner/win/WebKitTestRunnerPrefix.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476391</commentid>
    <comment_count>8</comment_count>
      <attachid>354199</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-07 19:17:24 -0800</bug_when>
    <thetext>Created attachment 354199
Patch

Fix style check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476394</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-07 19:20:58 -0800</bug_when>
    <thetext>Attachment 354199 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WebKitTestRunner/win/WebKitTestRunnerPrefix.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476395</commentid>
    <comment_count>10</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-07 19:29:08 -0800</bug_when>
    <thetext>We can&apos;t include config.h into TestRunnerInjectedBundlePrefix.cpp and WebKitTestRunnerPrefix.cpp because these source files are used for precompiled header.

This no config.h style is also used in DumpRenderTreePrefix.cpp and TestWebKitAPIPrefix.cpp for the same purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476414</commentid>
    <comment_count>11</comment_count>
      <attachid>354199</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-07 20:29:03 -0800</bug_when>
    <thetext>Comment on attachment 354199
Patch

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

&gt; ChangeLog:3
&gt; +        Implement WebKitTestRunner for WinCairo

The summary doesn&apos;t match. Did you use prepare-ChangeLog? Change either the ChangeLog or Bugzilla summary.

&gt; Source/cmake/OptionsWin.cmake:87
&gt; +    WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCESSIBILITY PRIVATE ON)

I want to know the reason why ENABLE_ACCESSIBILITY is needed.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:-28
&gt; -

Do not remove this blank line.
https://webkit.org/code-style-guidelines/#include-others

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:32
&gt; +

Do not add a blank line here.
https://webkit.org/code-style-guidelines/#include-others

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:882
&gt; +#if USE(CF) &amp;&amp; !PLATFORM(WIN_CAIRO)

Why do you need this guard?

&gt; Tools/WebKitTestRunner/PlatformWin.cmake:29
&gt; +    ${DERIVED_SOURCES_DIR}/WebKit/Interfaces

Remove ${DERIVED_SOURCES_DIR}/WebKit/Interfaces. This is WK1.

&gt; Tools/WebKitTestRunner/PlatformWin.cmake:52
&gt; +    ${WEBKIT_TESTRUNNER_BINDINGS_DIR}/JSWrapper.cpp

I want to know the reason why you remove JSWrapper.cpp.

&gt; Tools/WebKitTestRunner/PlatformWin.cmake:60
&gt; +    &quot;${WEBKIT_TESTRUNNER_DIR}/win/WebKitTestRunnerPrefix.cpp&quot;

You don&apos;t need these double-quote here. CMake string quoting rule is different from shell scripts.

&gt; Tools/WebKitTestRunner/TestController.cpp:77
&gt; +#endif

Original code was sorted alphabetically.
Move these code bellow in this case.

&gt; Tools/WebKitTestRunner/TestController.cpp:881
&gt; +#if !PLATFORM(COCOA) &amp;&amp; !PLATFORM(WPE) &amp;&amp; !PLATFORM(WIN)

#if PLATFORM(GTK)
because WKTextCheckerContinuousSpellCheckingEnabledStateChanged is a GTK-only API.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:50
&gt; +#endif

Original code was sorted alphabetically.
Move these code bellow in this case.

&gt; Tools/WebKitTestRunner/win/TestControllerWin.cpp:179
&gt; +    TCHAR exePath[MAX_PATH];

Theoretically you are right, but TCHAR is not used nowadays. Simply use wchar_t. Don&apos;t include tchar.h. Don&apos;t use _t* API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476415</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-07 20:30:14 -0800</bug_when>
    <thetext>A link for the original code.
https://github.com/WebKit/webkit/tree/a7fa8412b48e21125b826e47261540a2243ba8a5/Tools/WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476777</commentid>
    <comment_count>13</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-08 19:36:03 -0800</bug_when>
    <thetext>&gt;&gt; Source/cmake/OptionsWin.cmake:87
&gt;&gt; +    WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCESSIBILITY PRIVATE ON)
&gt;
&gt;I want to know the reason why ENABLE_ACCESSIBILITY is needed.

It it for appending AccessiblityController.cpp into TestRunnerInjectedBundle project.
Because Windows ports add HAVE_ACCESSIBILITY definition automatically in Platform.h, if we don&apos;t append it we can&apos;t build AccessibilityControllerWin.cpp


&gt;&gt; Tools/WebKitTestRunner/PlatformWin.cmake:52
&gt;&gt; +    ${WEBKIT_TESTRUNNER_BINDINGS_DIR}/JSWrapper.cpp
&gt;
&gt;I want to know the reason why you remove JSWrapper.cpp.


WEBKIT_ADD_PRECOMPILED_HEADER overwrites ForcedIncludeFiles attribute (precompiled header), so we can&apos;t use this macro twice.
Because JSWrapper.cpp is reffered from two projects WebKitTestRunnerLib and WebKitTestRunnerInjectedBundle, building overwritten precompiled headers have a conflict.

JSWrapper.cpp doesn&apos;t require the header, so it is easy way to avoid this conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476780</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-08 20:12:37 -0800</bug_when>
    <thetext>Wow. I didn&apos;t know that Windows port has macros HAVE_ACCESSIBILITY=1 and ENABLE_ACCESSIBILITY=0.
This has been filed. I will do it after your patch will land.

  Bug 21802 – HAVE_ACCESSIBILITY should probably be ENABLE_ACCESSIBILITY</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476819</commentid>
    <comment_count>15</comment_count>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-08 23:28:07 -0800</bug_when>
    <thetext>&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:882
&gt;&gt; +#if USE(CF) &amp;&amp; !PLATFORM(WIN_CAIRO)
&gt;
&gt;Why do you need this guard?

Because WebCoreTestSupport::createXMLStringFromWebArchiveData is implemented in Objective-C, we can&apos;t use the code in InjectedBundlePage::dumpDOMAsWebArchive function.

 Source/WebCore/testing/cocoa/WebArchiveDumpSupport.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476946</commentid>
    <comment_count>16</comment_count>
      <attachid>354199</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-09 09:32:56 -0800</bug_when>
    <thetext>Comment on attachment 354199
Patch

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

&gt; Tools/WebKitTestRunner/win/TestControllerWin.cpp:31
&gt; +#include &lt;WebKit/WKStringCF.h&gt;

bfulgham has stated that Apple intends to remove CoreFoundation in Windows. We should not introduce any CF code in anything windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477465</commentid>
    <comment_count>17</comment_count>
      <attachid>354525</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-11 19:05:36 -0800</bug_when>
    <thetext>Created attachment 354525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477466</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-11 19:08:20 -0800</bug_when>
    <thetext>Attachment 354525 did not pass style-queue:


ERROR: Tools/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WebKitTestRunner/win/WebKitTestRunnerPrefix.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477470</commentid>
    <comment_count>19</comment_count>
      <attachid>354527</attachid>
    <who name="Takashi Komori">takashi.komori</who>
    <bug_when>2018-11-11 19:46:28 -0800</bug_when>
    <thetext>Created attachment 354527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477471</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-11 19:48:30 -0800</bug_when>
    <thetext>Attachment 354527 did not pass style-queue:


ERROR: Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerInjectedBundlePrefix.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Tools/WebKitTestRunner/win/WebKitTestRunnerPrefix.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477478</commentid>
    <comment_count>21</comment_count>
      <attachid>354527</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-11 21:25:32 -0800</bug_when>
    <thetext>Comment on attachment 354527
Patch

Looks good to me. Please wait for a day before landing this patch for more review or objections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477599</commentid>
    <comment_count>22</comment_count>
      <attachid>354527</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-11-12 09:47:34 -0800</bug_when>
    <thetext>Comment on attachment 354527
Patch

Looks fine to me, too, and the EWS bots seem happy. I say land away!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477642</commentid>
    <comment_count>23</comment_count>
      <attachid>354527</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-12 10:58:09 -0800</bug_when>
    <thetext>Comment on attachment 354527
Patch

Clearing flags on attachment: 354527

Committed r238098: &lt;https://trac.webkit.org/changeset/238098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477643</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-12 10:58:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477644</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-12 10:59:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/45995584&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353945</attachid>
            <date>2018-11-05 21:48:05 -0800</date>
            <delta_ts>2018-11-07 19:28:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wincairo-testrunner-impl-1106.patch</filename>
            <type>text/plain</type>
            <size>69977</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDNhZWI2YTRhYjA0Li44ZTZiMTEzYTM3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xOTIsNiArMTkyLDcgQEAgc2V0KFdlYktpdF9GT1JX
QVJESU5HX0hFQURFUlNfRElSRUNUT1JJRVMKIAogICAgIFNoYXJlZC9BUEkvYy9jZgogICAgIFNo
YXJlZC9BUEkvYy93aW4KKyAgICBTaGFyZWQvQVBJL2MvY2Fpcm8KIAogICAgIFVJUHJvY2Vzcy9B
UEkvQwogICAgIFVJUHJvY2Vzcy9BUEkvY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IGYyMmYz
ZjE4M2Q0Li4wODFkYWVjNDk3YiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4u
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTg0LDYgKzg0LDcg
QEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQogICAgIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QgUFJJVkFURSBPTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFVCTElD
IE9OKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFU1NJ
QklMSVRZIFBSSVZBVEUgT04pCiAKICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgcGx1Z2luIHByb2Nl
c3Mgb24gTW9kZXJuIFdlYktpdC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTMxMwogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9O
RVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvUGxhdGZv
cm1XaW4uY21ha2UgYi9Ub29scy9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBlNGUyZTdhNTQ0Ni4u
YWNmZDk4NWNjMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1Rv
b2xzL1BsYXRmb3JtV2luLmNtYWtlCkBAIC00LDMgKzQsNyBAQCBhZGRfc3ViZGlyZWN0b3J5KElt
YWdlRGlmZikKIGlmIChFTkFCTEVfV0VCS0lUX0xFR0FDWSkKICAgICBhZGRfc3ViZGlyZWN0b3J5
KE1pbmlCcm93c2VyL3dpbikKIGVuZGlmICgpCisKK2lmIChFTkFCTEVfV0VCS0lUKQorICAgIGFk
ZF9zdWJkaXJlY3RvcnkoV2ViS2l0VGVzdFJ1bm5lcikKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdHRlc3RydW5uZXIKaW5kZXggMTc3MzdmYTk4OTcuLjE4NmE0NWQzNjEyIDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKKysrIGIvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCkBAIC02Miw4ICs2Miw4IEBAIGNoZGlyICJUb29s
cy9XZWJLaXRUZXN0UnVubmVyIiBvciBkaWU7CiBteSAkcmVzdWx0OwogaWYgKGlzQXBwbGVDb2Nv
YVdlYktpdCgpKSB7CiAgICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCJXZWJLaXRUZXN0
UnVubmVyIiwgJGNsZWFuLCBYY29kZU9wdGlvbnMoKSwgQEFSR1YpOwotfSBlbHNpZiAoaXNHdGso
KSB8fCBpc1dQRSgpIHx8IGlzUGxheVN0YXRpb24oKSkgewotICAgICMgR1RLKywgV1BFLCBhbmQg
UGxheVN0YXRpb24gYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWls
ZCBhbnl0aGluZyBoZXJlLgorfSBlbHNpZiAoaXNHdGsoKSB8fCBpc1dQRSgpIHx8IGlzUGxheVN0
YXRpb24oKSB8fCBpc0FueVdpbmRvd3MoKSkgeworICAgICMgR1RLKywgV1BFLCBQbGF5U3RhdGlv
biwgYW5kIFdpbmRvd3MgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBi
dWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1bHQgPSAwOwogfSBlbHNlIHsKICAgICBkaWUg
IldlYktpdFRlc3RSdW5uZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLlxuIjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IGZiZGZmZGFkZTk1Li43NTAw
OWJiYjQ3OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4
dAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0xMjksNiAr
MTI5LDkgQEAgaWYgKENPTVBJTEVSX0lTX0dDQ19PUl9DTEFORykKICAgICBXRUJLSVRfQUREX1RB
UkdFVF9DWFhfRkxBR1MoV2ViS2l0VGVzdFJ1bm5lciAtV25vLXVudXNlZC1wYXJhbWV0ZXIpCiBl
bmRpZiAoKQogCi1pZiAoTk9UIEFQUExFKQoraWYgKFdJTjMyKQorICAgIGFkZF9kZXBlbmRlbmNp
ZXMoV2ViS2l0VGVzdFJ1bm5lckxpYiBXZWJLaXRUZXN0UnVubmVyQmluZGluZ3MpCisgICAgYWRk
X2RlcGVuZGVuY2llcyhXZWJLaXRUZXN0UnVubmVyIFdlYktpdFRlc3RSdW5uZXJMaWIpCitlbHNl
aWYgKE5PVCBBUFBMRSkKICAgICBhZGRfZGVwZW5kZW5jaWVzKFdlYktpdCAke0ZvcndhcmRpbmdI
ZWFkZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9OQU1FfSkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDlkMWU2MGIwNDZmLi4yYWRlZmQ1NWVm
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKQEAgLTE0NCw2
ICsxNDQsOSBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90IG1fbW91c2VCdXR0b25zQ3VycmVudGx5
RG93biB7IDAgfTsKICAgICBWZWN0b3I8c3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXc+
IG1fdG91Y2hFdmVudHM7CiAgICAgSGFzaFNldDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWdu
ZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4g
bV91cGRhdGVkVG91Y2hFdmVudHM7CisjZWxpZiBQTEFURk9STShXSU4pCisgICAgdWludDMyX3Qg
bV9idXR0b25TdGF0ZTsKKyAgICB1aW50MzJfdCBtX21vdXNlQnV0dG9uc0N1cnJlbnRseURvd24g
eyAwIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5k
ZXggN2I4MTY3NjQyMjQuLjdhYjM4NDU2MmFmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpl
bmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkKCkKICAgICByZXR1cm4gV0tBY2Nlc3NpYmlsaXR5
RW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKEdUSykg
JiYgIVBMQVRGT1JNKFdQRSkKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV1BFKSAm
JiAhUExBVEZPUk0oV0lOKQogUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2Ug
PSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCAxOWRjMGNmOTMyNi4uZWMwZjMwM2UxMmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNzksNyArNzksNyBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0Zv
ckVsZW1lbnQoKSB7CiAjZW5kaWYKICAgICAKIC8vIFVuc3VwcG9ydGVkIG1ldGhvZHMgb24gdmFy
aW91cyBwbGF0Zm9ybXMuIEFzIHRoZXkncmUgaW1wbGVtZW50ZWQgb24gb3RoZXIgcGxhdGZvcm1z
IHRoaXMgbGlzdCBzaG91bGQgYmUgbW9kaWZpZWQuCi0jaWYgKCFQTEFURk9STShHVEspICYmICFQ
TEFURk9STShXUEUpKSB8fCAhSEFWRShBQ0NFU1NJQklMSVRZKQorI2lmICghUExBVEZPUk0oR1RL
KSAmJiAhUExBVEZPUk0oV1BFKSAmJiAhUExBVEZPUk0oV0lOKSkgfHwgIUhBVkUoQUNDRVNTSUJJ
TElUWSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
aGFyYWN0ZXJBdE9mZnNldChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQoaW50KSB7IHJl
dHVybiBudWxscHRyOyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuaAppbmRleCBiMDBjNTQ5ZGE5Ni4uMzA2YWQzMTk0ZmYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBAIC0zNjIsNyArMzYyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmLCBWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2lmIFBMQVRGT1JN
KENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkgfHwgUExBVEZPUk0oV0lO
KQogICAgIHZvaWQgZ2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiA+Jik7CiAgICAgdm9pZCBnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVu
Z3RoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCmluZGV4IDRmMTI3MjIxNDc4Li4w
NTIwMGVhYmE1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcApAQCAtMjgsNyArMjgsMTEgQEAK
ICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUlu
aXRpYWxpemUuaD4KIAorI2lmIGRlZmluZWQoV0lOMzIpCitleHRlcm4gIkMiIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KQorI2Vsc2UKIGV4dGVybiAiQyIKKyNlbmRpZgogdm9pZCBXS0J1bmRsZUluaXRp
YWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSkKIHsKICAgICBXVFI6OkluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5pbml0aWFsaXplKGJ1
bmRsZSwgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5k
ZXggODBhMGE0OGI4MTcuLjM0MTQxNmRkMzhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBA
IC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFVTRShDRikKKyNpZiBVU0UoQ0YpICYm
ICFQTEFURk9STShXSU5fQ0FJUk8pCiAjaW5jbHVkZSAiV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmgi
CiAjZW5kaWYKIApAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
dW1wQWxsRnJhbWVzVGV4dChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogCiB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewotI2lmIFVTRShDRikKKyNpZiBV
U0UoQ0YpICYmICFQTEFURk9STShXSU5fQ0FJUk8pCiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVm
PiB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAs
IFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSksIFdLRGF0YUdldFNpemUod2tEYXRhLmdldCgp
KSkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBhZG9wdENGKFdlYkNv
cmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5n
ZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggYzk1MmE5ZmYyNzkuLmQ3ZWRmNWNkZGM5IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgLCBtX2RhdGFi
YXNlTWF4UXVvdGEoLTEpCiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0RW5hYmxlZChmYWxzZSkKICAg
ICAsIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbihhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCIiKSkpCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpIHx8IFBMQVRGT1JNKFdJTikKICAgICAsIG1f
d2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVGVzdFJ1bm5l
cjo6d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCkKICNlbmRpZgogewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA0N2U1
OTcyMjE0Yi4uNDZlNGVlZTI5OWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgog
dHlwZWRlZiBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IFBsYXRmb3JtVGltZXJSZWY7Ci0j
ZWxpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyNlbGlmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oV1BFKSB8fCBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIG5hbWVzcGFjZSBXVFIgewogY2xhc3MgVGVzdFJ1bm5lcjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyV2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uZmJlYTkxNDlhMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5j
cHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEsIFMu
TC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorCisjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3Bh
Y2UgV1RSIHsKKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShudWxscHRyKTsKK30K
KworUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpm
b2N1c2VkRWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG51bGxwdHIpOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdUUgorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dFdpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uMjYxYzE3ZTVjNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcApA
QCAtMCwwICsxLDk3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEsIFMuTC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJ
VFkpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBX
VFIgeworCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBs
YXRmb3JtVUlFbGVtZW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhS
YW5nZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYsIHVuc2lnbmVkLCB1
bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCwgaW50KQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCisKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgodW5z
aWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWdu
ZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgodW5z
aWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdElu
ZGV4KHVuc2lnbmVkKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVk
Q2hpbGRyZW5Db3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlz
Y2xvc2VkQnlSb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVu
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmli
dXRlcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
dW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCitKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2RvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
bGlja1BvaW50WSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bWluVmFsdWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24o
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzRGVjcmVtZW50QWN0aW9uU3VwcG9ydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Vu
YWJsZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNTZWxlY3RlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZE9wdGlv
bkFjdGl2ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGll
cmFyY2hpY2FsTGV2ZWwoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzcGVha0FzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQoKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BF
ZmZlY3RzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKGludCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQb3Np
dGlvbihpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWdu
ZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQsIHVuc2lnbmVk
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFByZWRp
Y2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBib29sLCBKU1ZhbHVl
UmVmLCBKU1N0cmluZ1JlZiwgYm9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4dFJl
ZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2wsIEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVm
LCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzZWxlY3RUZXh0V2l0aENyaXRlcmlhKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYsIEpTVmFs
dWVSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRl
cnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDb2x1bW5zKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mUm93cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcigpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJvd0NvdW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uQ291bnQoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWdu
ZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRS
YW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZSh1bnNp
Z25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRl
Y3JlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzaG93TWVudSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcygpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxk
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENo
aWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbkF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGVhclNlbGVjdGVkQ2hpbGRyZW4oKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5n
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRV
UkkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJl
ZiBmdW5jdGlvbkNhbGxiYWNrKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNh
dGlvbkxpc3RlbmVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVlbigp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNTaW5nbGVMaW5lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpTGluZSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVj
dGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
aW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2Vy
Rm9yQm91bmRzKGludCwgaW50LCBpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQsIGlu
dCwgaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VXaXRo
T3B0aW9ucyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiwgYm9vbCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0
dHJpYnV0ZShKU1N0cmluZ1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtl
VmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50KGludCwgaW50KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQsIGludCwgaW50LCBpbnQpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlw
dGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3QoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNldChpbnQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNl
dChpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRl
bmNlQXRPZmZzZXQoaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlICBXVEYKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNT
SUJJTElUWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvd2luL0FjdGl2YXRlRm9udHNXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjI2YzE2ZmNlMjRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHAK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWN0aXZhdGVGb250cy5o
IgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBhY3RpdmF0ZUZvbnRzKCkKK3sKK30KKwordm9p
ZCBpbnN0YWxsRmFrZUhlbHZldGljYShXS1N0cmluZ1JlZikKK3sKK30KKwordm9pZCB1bmluc3Rh
bGxGYWtlSGVsdmV0aWNhKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRs
ZVdpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9Jbmpl
Y3RlZEJ1bmRsZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjI0MDgxZmYzYTI5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCkBAIC0wLDAgKzEsMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKK25hbWVzcGFjZSBX
VFIgeworCit2b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBlUmVm
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZp
eC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5iOGVjZjM0MTQxNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZp
eC5jcHAKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjaW5jbHVkZSAiVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4Lmgi
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9U
ZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMjAwMTE5ODZjMQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RS
dW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZkZWYgX19PQkpDX18KKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2Vu
ZGlmCisKKyNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Ml9DLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisKKy8qIFdoZW4gQysrIGV4Y2VwdGlvbnMgYXJlIGRpc2FibGVkLCB0aGUgQysrIGxp
YnJhcnkgZGVmaW5lcyB8dHJ5fCBhbmQgfGNhdGNofAorKiB0byBhbGxvdyBDKysgY29kZSB0aGF0
IGV4cGVjdHMgZXhjZXB0aW9ucyB0byBidWlsZC4gVGhlc2UgZGVmaW5pdGlvbnMKKyogaW50ZXJm
ZXJlIHdpdGggT2JqZWN0aXZlLUMrKyB1c2VzIG9mIE9iamVjdGl2ZS1DIGV4Y2VwdGlvbiBoYW5k
bGVycywgd2hpY2gKKyogdXNlIHxAdHJ5fCBhbmQgfEBjYXRjaHwuIEFzIGEgd29ya2Fyb3VuZCwg
dW5kZWZpbmUgdGhlc2UgbWFjcm9zLiAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRl
IDxhbGdvcml0aG0+IC8vIG5lZWRlZCBmb3IgZXhjZXB0aW9uX2RlZmluZXMuaAorI2VuZGlmCisK
KyNpZmRlZiBfX09CSkNfXworI3VuZGVmIHRyeQorI3VuZGVmIGNhdGNoCisjZW5kaWYKKworI2lm
IE9TKFdJTkRPV1MpCisjdW5kZWYgV0VCQ09SRV9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9FWFBP
UlQgV1RGX0lNUE9SVF9ERUNMQVJBVElPTgorI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNWZiZmY1YWZhYgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rl
c3RSdW5uZXJXaW4uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRlc3RSdW5uZXIuaCIKKworI2luY2x1ZGUgIkFjdGl2YXRlRm9udHMuaCIKKworbmFtZXNwYWNl
IFdUUiB7CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjpwYXRoVG9Mb2Nh
bFJlc291cmNlKEpTU3RyaW5nUmVmKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJVUkwoKQor
eworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIik7Cit9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkKK3sKKyAg
ICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBUZXN0UnVubmVy
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OmluaXRpYWxp
emVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fd2FpdFRv
RHVtcFdhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0KTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpp
bnN0YWxsRmFrZUhlbHZldGljYShKU1N0cmluZ1JlZiBjb25maWd1cmF0aW9uKQoreworICAgIFdU
Ujo6aW5zdGFsbEZha2VIZWx2ZXRpY2EodG9XSyhjb25maWd1cmF0aW9uKS5nZXQoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
bGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKaW5kZXggY2UzNjhmZjBlNmEuLjQzYWVjOTQ5MzlhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTU3LDYgKzU3LDEyIEBAIGNsYXNzIEhlYWRsZXNzVmll
d0JhY2tlbmQ7CiB0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgV1BF
VG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kKiBQbGF0Zm9ybVdpbmRvdzsKIHR5
cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBQbGF0Zm9ybUltYWdlOworI2VsaWYgUExBVEZPUk0oV0lO
KQorI2luY2x1ZGUgPGNhaXJvLmg+CitjbGFzcyBUZXN0UnVubmVyV2luZG93OwordHlwZWRlZiBI
V05EIFBsYXRmb3JtV2luZG93OwordHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3JtSW1h
Z2U7Cit0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV1RSIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iZWU4MWYwN2U1NAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCAr
MSw4NiBAQAorc2V0KFdlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFUworICAgICR7V2ViS2l0VGVz
dFJ1bm5lcl9TT1VSQ0VTfQorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9jYWlyby9UZXN0
SW52b2NhdGlvbkNhaXJvLmNwcAorICAgIHdpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAorICAg
IHdpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCisgICAgd2luL1Rlc3RDb250cm9sbGVyV2luLmNw
cAorICAgIHdpbi9tYWluLmNwcAorKQorCitzZXQoV2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCisg
ICAgJHtUT09MU19ESVJ9L3dpbi9ETExMYXVuY2hlci9ETExMYXVuY2hlck1haW4uY3BwCispCisK
K2xpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9BY3RpdmF0ZUZvbnRz
V2luLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS93aW4v
SW5qZWN0ZWRCdW5kbGVXaW4uY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJV
TkRMRV9ESVJ9L3dpbi9UZXN0UnVubmVyV2luLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
SU5KRUNURURCVU5ETEVfRElSfS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCisg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50V2luLmNwcAorKQorCisKK2xpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgIGNhaXJvCisgICAgd2luCisgICAgJHtDQUlST19JTkNM
VURFX0RJUlN9CisgICAgJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfQorICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS93aW4KKyAgICAke0RFUklWRURfU09VUkNFU19E
SVJ9L1dlYktpdC9JbnRlcmZhY2VzCispCisKKworc2V0KFdlYktpdFRlc3RSdW5uZXJMaWJfTElC
UkFSSUVTCisgICAgJHtXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFU30KKyAgICBDb21zdXBwdwor
ICAgIE9sZWFjYworKQorCitsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0xJQlJBUklFUwor
ICAgIFdURgorICAgIFdlYktpdAorKQorCitzZXQoV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVu
ZGxlX0xJQlJBUklFUworICAgIFdlYkNvcmVUZXN0U3VwcG9ydAorICAgIFdlYktpdAorKQorCisK
K2xpc3QoUkVNT1ZFX0lURU0KKyAgICBXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVMKKyAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNwcAorKQorbGlzdChS
RU1PVkVfSVRFTQorICAgIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9CSU5ESU5HU19ESVJ9L0pTV3JhcHBlci5jcHAKKykKKwor
V0VCS0lUX0FERF9QUkVDT01QSUxFRF9IRUFERVIoIldlYktpdFRlc3RSdW5uZXJQcmVmaXguaCIK
KyAgICAiJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L3dpbi9XZWJLaXRUZXN0UnVubmVyUHJlZml4
LmNwcCIKKyAgICBXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVMKKykKK1dFQktJVF9BRERfUFJF
Q09NUElMRURfSEVBREVSKCJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaCIKKyAgICAi
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9UZXN0UnVubmVySW5q
ZWN0ZWRCdW5kbGVQcmVmaXguY3BwIgorICAgIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRs
ZV9TT1VSQ0VTCispCisKK2xpc3QoQVBQRU5ECisgICAgV2ViS2l0VGVzdFJ1bm5lckxpYl9TT1VS
Q0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9CSU5ESU5HU19ESVJ9L0pTV3JhcHBlci5jcHAK
KykKK2xpc3QoQVBQRU5ECisgICAgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJD
RVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNwcAor
KQorCisKK3NldChDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5L
RVJfRkxBR1N9ICR7TVNWQ19SVU5USU1FX0xJTktFUl9GTEFHU30iKQorYWRkX2xpYnJhcnkoV2Vi
S2l0VGVzdFJ1bm5lckxpYiBTSEFSRUQgJHtXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVN9KQor
dGFyZ2V0X2xpbmtfbGlicmFyaWVzKFdlYktpdFRlc3RSdW5uZXJMaWIgJHtXZWJLaXRUZXN0UnVu
bmVyTGliX0xJQlJBUklFU30pCisKK2FkZF9kZWZpbml0aW9ucygKKyAgICAtRFdJTl9DQUlSTwor
ICAgIC1EVVNFX0NPTlNPTEVfRU5UUllfUE9JTlQKKyAgICAtRF9VTklDT0RFCispCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDgxN2YwZjRkYTkwLi44NzBj
NDI4YjMyNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTY4LDcgKzY4LDEzIEBACiAjaW5jbHVkZSA8ZnN0cmVhbT4KICNpbmNsdWRlIDxzdGRsaWIuaD4K
ICNpbmNsdWRlIDxzdHJpbmc+CisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPGRpcmVjdC5o
PgorI2RlZmluZSBnZXRjd2QgX2dldGN3ZAorI2RlZmluZSBQQVRIX01BWCBfTUFYX1BBVEgKKyNl
bHNlCiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWlu
ZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgpAQCAtODcyLDcgKzg3OCw3IEBAIGJvb2wgVGVz
dENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMsIFJlCiAgICAgLy8gc29tZSBvdGhlciBjb2RlIGRvaW5nIHRoaXMsIGl0IHNo
b3VsZCBwcm9iYWJseSBiZSByZXNwb25zaWJsZSBmb3IgY2xlYW51cCB0b28uCiAgICAgcmVzZXRQ
cmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhvcHRpb25zKTsKIAotI2lmICFQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKFdQRSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9S
TShXUEUpICYmICFQTEFURk9STShXSU4pCiAgICAgV0tUZXh0Q2hlY2tlckNvbnRpbnVvdXNTcGVs
bENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZCh0cnVlKTsKICNlbmRpZgogCkBAIC0xMDkxLDgg
KzEwOTcsMTUgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0
aE9yVVJMKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gMDsKIAorI2lmIFBMQVRG
T1JNKFdJTikKKyAgICBjb25zdCBjaGFyIHNlcGFyYXRvciA9ICdcXCc7CisgICAgYm9vbCBpc0Fi
c29sdXRlUGF0aCA9IGZhbHNlOworICAgIGlmIChzdHJsZW4ocGF0aE9yVVJMKSA+PSAzICYmIHBh
dGhPclVSTFsxXSA9PSAnOicgJiYgcGF0aE9yVVJMWzJdID09IHNlcGFyYXRvcikKKyAgICAgICAg
aXNBYnNvbHV0ZVBhdGggPSB0cnVlOworI2Vsc2UKICAgICBjb25zdCBjaGFyIHNlcGFyYXRvciA9
ICcvJzsKICAgICBib29sIGlzQWJzb2x1dGVQYXRoID0gcGF0aE9yVVJMWzBdID09IHNlcGFyYXRv
cjsKKyNlbmRpZgogICAgIGNvbnN0IGNoYXIqIGZpbGVQcmVmaXggPSAiZmlsZTovLyI7CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBwcmVmaXhMZW5ndGggPSBzdHJsZW4oZmlsZVByZWZpeCk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggZDJiOGNhMTAy
YWUuLjEyNDBiYjFhYjk2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcApAQCAtNDIsNyArNDIsMTIgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmg+CiAjaW5jbHVkZSA8Y2xpbWl0cz4KICNpbmNsdWRlIDxjc3RkaW8+CisjaWYgUExB
VEZPUk0oV0lOKQorI2luY2x1ZGUgPGlvLmg+CisjZGVmaW5lIGlzYXR0eSBfaXNhdHR5CisjZWxz
ZQogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaAppbmRleCA1Zjk4OWZjNTRlNy4uZjIw
MDExOTg2YzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lclByZWZpeC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
clByZWZpeC5oCkBAIC00NCwzICs0NCw3IEBACiAjdW5kZWYgY2F0Y2gKICNlbmRpZgogCisjaWYg
T1MoV0lORE9XUykKKyN1bmRlZiBXRUJDT1JFX0VYUE9SVAorI2RlZmluZSBXRUJDT1JFX0VYUE9S
VCBXVEZfSU1QT1JUX0RFQ0xBUkFUSU9OCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjAyNzA5MjkwODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKQEAgLTAsMCArMSwx
MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgorCisj
aW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXVFIgewor
CisvLyBLZXkgZXZlbnQgbG9jYXRpb24gY29kZSBkZWZpbmVkIGluIERPTSBMZXZlbCAzLgorZW51
bSBLZXlMb2NhdGlvbkNvZGUgeworICAgIERPTUtleUxvY2F0aW9uU3RhbmRhcmQgICAgICA9IDB4
MDAsCisgICAgRE9NS2V5TG9jYXRpb25MZWZ0ICAgICAgICAgID0gMHgwMSwKKyAgICBET01LZXlM
b2NhdGlvblJpZ2h0ICAgICAgICAgPSAweDAyLAorICAgIERPTUtleUxvY2F0aW9uTnVtcGFkICAg
ICAgICA9IDB4MDMKK307CisKK2VudW0gQnV0dG9uU3RhdGUgeworICAgIEJ1dHRvblJlbGVhc2Vk
ID0gMCwKKyAgICBCdXR0b25QcmVzc2VkID0gMQorfTsKKworZW51bSBQb2ludGVyQXhpcyB7Cisg
ICAgVmVydGljYWxTY3JvbGwgPSAwLAorICAgIEhvcml6b250YWxTY3JvbGwgPSAxCit9OworCitF
dmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29u
dHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCisgICAgLCBt
X3RpbWUoMCkKKyAgICAsIG1fbGVmdE1vdXNlQnV0dG9uRG93bihmYWxzZSkKKyAgICAsIG1fY2xp
Y2tDb3VudCgwKQorICAgICwgbV9jbGlja1RpbWUoMCkKKyAgICAsIG1fY2xpY2tCdXR0b24oa1dL
RXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9uKQorICAgICwgbV9idXR0b25TdGF0ZShCdXR0b25SZWxl
YXNlZCkKK3sKK30KKworRXZlbnRTZW5kZXJQcm94eTo6fkV2ZW50U2VuZGVyUHJveHkoKQorewor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b24sIFdL
RXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVu
dE1vZGlmaWVycyB3a01vZGlmaWVycykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNl
U2Nyb2xsQnkoaW50IGhvcml6b250YWwsIGludCB2ZXJ0aWNhbCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhpbnQgaG9yaXpvbnRhbCwgaW50IHZlcnRpY2FsLCBpbnQsIGlu
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6
OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCwgaW50LCBib29sKQoreworfQorCit2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpCit7CisgICAgbV90
aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5
OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVy
cywgdW5zaWduZWQgbG9jYXRpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9Q
bGF0Zm9ybVdlYlZpZXdXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZv
cm1XZWJWaWV3V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
Mzk1YzcyODRjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5j
bHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorCisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMgTFBDV1NUUiBob3N0V2luZG93Q2xh
c3NOYW1lID0gTCJXVFJXZWJWaWV3SG9zdFdpbmRvdyI7CitzdGF0aWMgTFBDV1NUUiB0ZXN0UnVu
bmVyV2luZG93TmFtZSA9IEwiV2ViS2l0VGVzdFJ1bm5lciI7CisKK3N0YXRpYyB2b2lkIHJlZ2lz
dGVyV2luZG93Q2xhc3MoKQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7
CisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZWQg
PSB0cnVlOworCisgICAgV05EQ0xBU1NFWFcgd25kQ2xhc3MgPSB7MH07CisgICAgd25kQ2xhc3Mu
Y2JTaXplID0gc2l6ZW9mKHduZENsYXNzKTsKKyAgICB3bmRDbGFzcy5zdHlsZSA9IENTX0hSRURS
QVcgfCBDU19WUkVEUkFXOworICAgIHduZENsYXNzLmxwZm5XbmRQcm9jID0gRGVmV2luZG93UHJv
YzsKKyAgICB3bmRDbGFzcy5oQ3Vyc29yID0gTG9hZEN1cnNvcigwLCBJRENfQVJST1cpOworICAg
IHduZENsYXNzLmhJbnN0YW5jZSA9IEdldE1vZHVsZUhhbmRsZSgwKTsKKyAgICB3bmRDbGFzcy5s
cHN6Q2xhc3NOYW1lID0gaG9zdFdpbmRvd0NsYXNzTmFtZTsKKworICAgIDo6UmVnaXN0ZXJDbGFz
c0V4Vygmd25kQ2xhc3MpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhX
S1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBv
cHRpb25zKQorICAgIDogbV93aW5kb3cobnVsbHB0cikKKyAgICAsIG1fd2luZG93SXNLZXkodHJ1
ZSkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQoreworICAgIHJlZ2lzdGVyV2luZG93Q2xhc3Mo
KTsKKworICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2MDB9OworICAgIG1fd2luZG93
ID0gOjpDcmVhdGVXaW5kb3dFeCgKKyAgICAgICAgMCwKKyAgICAgICAgaG9zdFdpbmRvd0NsYXNz
TmFtZSwKKyAgICAgICAgdGVzdFJ1bm5lcldpbmRvd05hbWUsCisgICAgICAgIFdTX09WRVJMQVBQ
RURXSU5ET1csCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIHZpZXdSZWN0LnJpZ2h0
LAorICAgICAgICB2aWV3UmVjdC5ib3R0b20sCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAg
ICAgIEdldE1vZHVsZUhhbmRsZSgwKSwKKyAgICAgICAgMCk7CisgICAgbV92aWV3ID0gV0tWaWV3
Q3JlYXRlKHZpZXdSZWN0LCBjb25maWd1cmF0aW9uLCBtX3dpbmRvdyk7CisgICAgV0tWaWV3U2V0
SXNJbldpbmRvdyhtX3ZpZXcsIHRydWUpOworCisgICAgU2hvd1dpbmRvdyhtX3dpbmRvdywgU1df
U0hPVyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCit7CisgICAg
aWYgKDo6SXNXaW5kb3cobV93aW5kb3cpKQorICAgICAgICA6OkRlc3Ryb3lXaW5kb3cobV93aW5k
b3cpOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgs
IHVuc2lnbmVkIGhlaWdodCwgV2ViVmlld1NpemluZ01vZGUpCit7CisgICAgOjpTZXRXaW5kb3dQ
b3MoCisgICAgICAgIFdLVmlld0dldFdpbmRvdyhtX3ZpZXcpLAorICAgICAgICAwLAorICAgICAg
ICAwLAorICAgICAgICAwLAorICAgICAgICB3aWR0aCwKKyAgICAgICAgaGVpZ2h0LAorICAgICAg
ICBTV1BfTk9NT1ZFIHwgU1dQX05PWk9SREVSIHwgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9DT1BZ
QklUUyk7Cit9CisKK1dLUGFnZVJlZiBQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UoKQoreworICAgIHJl
dHVybiBXS1ZpZXdHZXRQYWdlKG1fdmlldyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpm
b2N1cygpCit7CisgICAgOjpTZXRGb2N1cyg6OldLVmlld0dldFdpbmRvdyhtX3ZpZXcpKTsKK30K
KworV0tSZWN0IFBsYXRmb3JtV2ViVmlldzo6d2luZG93RnJhbWUoKQoreworICAgIFdLUmVjdCB3
a0ZyYW1lID0gezB9OworICAgIFJFQ1QgcjsKKworICAgIGlmICg6OkdldFdpbmRvd1JlY3QobV93
aW5kb3csICZyKSl7CisgICAgICAgIHdrRnJhbWUub3JpZ2luLnggPSByLmxlZnQ7CisgICAgICAg
IHdrRnJhbWUub3JpZ2luLnkgPSByLnRvcDsKKyAgICAgICAgd2tGcmFtZS5zaXplLndpZHRoID0g
ci5yaWdodCAtIHIubGVmdDsKKyAgICAgICAgd2tGcmFtZS5zaXplLmhlaWdodCA9IHIuYm90dG9t
IC0gci50b3A7CisgICAgfQorCisgICAgcmV0dXJuIHdrRnJhbWU7Cit9CisKK3ZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpzZXRXaW5kb3dGcmFtZShXS1JlY3QgZnJhbWUsIFdlYlZpZXdTaXppbmdNb2Rl
KQoreworICAgIDo6U2V0V2luZG93UG9zKAorICAgICAgICBtX3dpbmRvdywKKyAgICAgICAgMCwK
KyAgICAgICAgZnJhbWUub3JpZ2luLngsCisgICAgICAgIGZyYW1lLm9yaWdpbi55LAorICAgICAg
ICBmcmFtZS5zaXplLndpZHRoLAorICAgICAgICBmcmFtZS5zaXplLmhlaWdodCwKKyAgICAgICAg
U1dQX05PWk9SREVSIHwgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9DT1BZQklUUyk7Cit9CisKK3Zv
aWQgUGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygpCit7Cit9CisKK3ZvaWQg
UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0
Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRm
b3JtV2ViVmlldzo6YWRkVG9XaW5kb3coKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6
cmVtb3ZlRnJvbVdpbmRvdygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5k
b3dJc0tleShib29sIHdpbmRvd0lzS2V5KQoreworICAgIG1fd2luZG93SXNLZXkgPSB3aW5kb3dJ
c0tleTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25k
ZXIoKQoreworfQorCitzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZW5lcmF0ZUNhaXJvU3VyZmFj
ZUZyb21CaXRtYXAoQklUTUFQIGJpdG1hcFRhZykKK3sKKyAgICBjYWlyb19zdXJmYWNlX3QqIGlt
YWdlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoCisgICAgICAgIENBSVJPX0ZPUk1BVF9B
UkdCMzIsCisgICAgICAgIGJpdG1hcFRhZy5ibVdpZHRoLAorICAgICAgICBiaXRtYXBUYWcuYm1I
ZWlnaHQpOworCisgICAgdW5zaWduZWQgY2hhciogc3JjID0gKHVuc2lnbmVkIGNoYXIqKWJpdG1h
cFRhZy5ibUJpdHM7CisgICAgaW50IHNyY1BpdGNoID0gYml0bWFwVGFnLmJtV2lkdGhCeXRlczsK
KyAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGlt
YWdlKTsKKyAgICBpbnQgZHN0UGl0Y2ggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUo
aW1hZ2UpOworCisgICAgZm9yIChpbnQgeT0wOyB5PGJpdG1hcFRhZy5ibUhlaWdodDsgeSsrKXsK
KyAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCBkc3RQaXRjaCk7CisgICAgICAgIHNyYyArPSBzcmNQ
aXRjaDsKKyAgICAgICAgZHN0ICs9IGRzdFBpdGNoOworICAgIH0KKworICAgIHJldHVybiBpbWFn
ZTsKK30KKworY2Fpcm9fc3VyZmFjZV90KiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90
SW1hZ2UoKQoreworICAgIFJFQ1Qgd2luZG93UmVjdDsKKyAgICA6OkdldENsaWVudFJlY3QobV93
aW5kb3csICZ3aW5kb3dSZWN0KTsKKyAgICBMT05HIHdpZHRoID0gd2luZG93UmVjdC5yaWdodCAt
IHdpbmRvd1JlY3QubGVmdDsKKyAgICBMT05HIGhlaWdodCA9IHdpbmRvd1JlY3QuYm90dG9tIC0g
d2luZG93UmVjdC50b3A7CisKKyAgICBIREMgd2luZG93REMgPSA6OkdldERDKG1fd2luZG93KTsK
KyAgICBIREMgbWVtb3J5REMgPSA6OkNyZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQyk7CisKKyAg
ICBCSVRNQVBJTkZPIGJpdG1hcEluZm8gPSB7MH07CisgICAgV0tSZWN0IHdrRnJhbWUgPSB3aW5k
b3dGcmFtZSgpOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpU2l6ZSA9IHNpemVvZihCSVRN
QVBJTkZPSEVBREVSKTsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVdpZHRoID0gd2lkdGg7
CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlIZWlnaHQgPSAtaGVpZ2h0OworICAgIGJpdG1h
cEluZm8uYm1pSGVhZGVyLmJpUGxhbmVzID0gMTsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5i
aUJpdENvdW50ID0gMzI7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlDb21wcmVzc2lvbiA9
IEJJX1JHQjsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVNpemVJbWFnZSA9IHdpZHRoICog
aGVpZ2h0ICogNDsKKworICAgIHZvaWQqIGJpdHNQb2ludGVyID0gMDsKKyAgICBIQklUTUFQIGJp
dG1hcCA9IDo6Q3JlYXRlRElCU2VjdGlvbih3aW5kb3dEQywgJmJpdG1hcEluZm8sIERJQl9SR0Jf
Q09MT1JTLCAmYml0c1BvaW50ZXIsIDAsIDApOworICAgIGlmICghYml0bWFwKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIDo6U2VsZWN0T2JqZWN0KG1lbW9yeURDLCBiaXRtYXApOwor
ICAgIDo6Qml0Qmx0KG1lbW9yeURDLAorICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgICB3aWR0aCwKKyAgICAgICAgICAgICBoZWlnaHQsCisgICAgICAgICAgICAg
d2luZG93REMsCisgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAwLAorICAgICAgICAgICAg
IFNSQ0NPUFkpOworCisgICAgQklUTUFQIGJpdG1hcFRhZyA9IHswfTsKKyAgICBHZXRPYmplY3Qo
Yml0bWFwLCBzaXplb2YoYml0bWFwVGFnKSwgJmJpdG1hcFRhZyk7CisgICAgQVNTRVJUKGJpdG1h
cFRhZy5ibUJpdHNQaXhlbCA9PSAzMik7CisKKyAgICBjYWlyb19zdXJmYWNlX3QqIGltYWdlID0g
Z2VuZXJhdGVDYWlyb1N1cmZhY2VGcm9tQml0bWFwKGJpdG1hcFRhZyk7CisKKyAgICA6OkRlbGV0
ZURDKG1lbW9yeURDKTsKKyAgICA6OlJlbGVhc2VEQyhtX3dpbmRvdywgd2luZG93REMpOworICAg
IDo6RGVsZXRlT2JqZWN0KGJpdG1hcCk7CisKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK3ZvaWQg
UGxhdGZvcm1XZWJWaWV3OjpjaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKGZsb2F0KQoreworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0TmF2aWdhdGlvbkdlc3R1cmVzRW5hYmxlZChib29s
KQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9yY2VXaW5kb3dGcmFtZXNDaGFuZ2Vk
KCkKK3sKK30KKworYm9vbCBQbGF0Zm9ybVdlYlZpZXc6OmRyYXdzQmFja2dyb3VuZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0RHJh
d3NCYWNrZ3JvdW5kKGJvb2wpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MzY5NTU5NDJkYgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcApAQCAt
MCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisK
KyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
U3RyaW5nQ0YuaD4KKyNpbmNsdWRlIDxXaW5CYXNlLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDxzdHJpbmc+Cisj
aW5jbHVkZSA8dGNoYXIuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKworCisjZGVmaW5lIElOSkVDVEVEX0JVTkRMRV9ETExfTkFNRSAiVGVzdFJ1bm5l
ckluamVjdGVkQnVuZGxlLmRsbCIKKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBIQU5ETEUg
d2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnQ7CitzdGF0aWMgY29uc3QgY2hhciB3ZWJQcm9jZXNzQ3Jh
c2hpbmdFdmVudE5hbWVbXSA9ICJXZWJLaXRUZXN0UnVubmVyLldlYlByb2Nlc3NDcmFzaGluZyI7
CisvLyBUaGlzIGlzIHRoZSBsb25nZXN0IHdlJ2xsIHdhaXQgKGluIHNlY29uZHMpIGZvciB0aGUg
d2ViIHByb2Nlc3MgdG8gZmluaXNoIGNyYXNoaW5nIGFuZCBhIGNyYXNoCisvLyBsb2cgdG8gYmUg
c2F2ZWQuIFRoaXMgaW50ZXJ2YWwgc2hvdWxkIGJlIGp1c3QgYSB0aW55IGJpdCBsb25nZXIgdGhh
biBpdCB3aWxsIGV2ZXIgcmVhc29uYWJseQorLy8gdGFrZSB0byBzYXZlIGEgY3Jhc2ggbG9nLgor
c3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtV2FpdEZvcldlYlByb2Nlc3NUb0NyYXNoID0gNjA7
CisKKworc3RhdGljIExPTkcgV0lOQVBJIGV4Y2VwdGlvbkZpbHRlcihFWENFUFRJT05fUE9JTlRF
UlMqKQoreworICAgIGZwdXRzKCIjQ1JBU0hFRFxuIiwgc3RkZXJyKTsKKyAgICBmZmx1c2goc3Rk
ZXJyKTsKKyAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKK30KKworZW51bSBS
dW5Mb29wUmVzdWx0IHsgVGltZWRPdXQsIE9iamVjdFNpZ25hbGVkLCBDb25kaXRpb25TYXRpc2Zp
ZWQgfTsKKworc3RhdGljIFJ1bkxvb3BSZXN1bHQgcnVuUnVuTG9vcFVudGlsKGJvb2wmIGNvbmRp
dGlvbiwgSEFORExFIG9iamVjdCwgZG91YmxlIHRpbWVvdXQpCit7CisgICAgRFdPUkQgZW5kID0g
OjpHZXRUaWNrQ291bnQoKSArIHRpbWVvdXQgKiAxMDAwOworICAgIGlmICh0aW1lb3V0IDwgMCkK
KyAgICAgICAgZW5kID0gVUxPTkdfTUFYOworCisgICAgd2hpbGUgKCFjb25kaXRpb24pIHsKKyAg
ICAgICAgRFdPUkQgbm93ID0gOjpHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgaWYgKG5vdyA+IGVu
ZCkKKyAgICAgICAgICAgIHJldHVybiBUaW1lZE91dDsKKworICAgICAgICBEV09SRCB3YWl0ID0g
ZW5kIC0gbm93OworICAgICAgICBEV09SRCBvYmplY3RDb3VudCA9IG9iamVjdCA/IDEgOiAwOwor
ICAgICAgICBjb25zdCBIQU5ETEUqIG9iamVjdHMgPSBvYmplY3QgPyAmb2JqZWN0IDogMDsKKwor
ICAgICAgICBEV09SRCByZXN1bHQgPSA6Ok1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeChvYmpl
Y3RDb3VudCwgb2JqZWN0cywgd2FpdCwgUVNfQUxMSU5QVVQsIE1XTU9fSU5QVVRBVkFJTEFCTEUp
OworICAgICAgICBpZiAocmVzdWx0ID09IFdBSVRfVElNRU9VVCkKKyAgICAgICAgICAgIHJldHVy
biBUaW1lZE91dDsKKworICAgICAgICBpZiAob2JqZWN0Q291bnQgJiYgcmVzdWx0ID49IFdBSVRf
T0JKRUNUXzAgJiYgcmVzdWx0IDwgV0FJVF9PQkpFQ1RfMCArIG9iamVjdENvdW50KQorICAgICAg
ICAgICAgcmV0dXJuIE9iamVjdFNpZ25hbGVkOworCisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0g
V0FJVF9PQkpFQ1RfMCArIG9iamVjdENvdW50KTsKKyAgICAgICAgLy8gVGhlcmUgYXJlIG1lc3Nh
Z2VzIGluIHRoZSBxdWV1ZS4gUHJvY2VzcyB0aGVtLgorICAgICAgICBNU0cgbXNnOworICAgICAg
ICB3aGlsZSAoOjpQZWVrTWVzc2FnZVcoJm1zZywgMCwgMCwgMCwgUE1fUkVNT1ZFKSkgeworICAg
ICAgICAgICAgOjpUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOworICAgICAgICAgICAgOjpEaXNwYXRj
aE1lc3NhZ2VXKCZtc2cpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIENvbmRpdGlv
blNhdGlzZmllZDsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCit7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sKQoreworfQorCit2b2lkIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIC8vIEN5Z3dpbiBjYWxs
cyA6OlNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTKSwgd2hpY2ggd2Ugd2lsbCBp
bmhlcml0LiBUaGlzIGlzIGJhZCBmb3IKKyAgICAvLyB0ZXN0aW5nL2RlYnVnZ2luZywgYXMgaXQg
Y2F1c2VzIHRoZSBwb3N0LW1vcnRlbSBkZWJ1Z2dlciBub3QgdG8gYmUgaW52b2tlZC4gV2UgcmVz
ZXQgdGhlCisgICAgLy8gZXJyb3IgbW9kZSBoZXJlIHRvIHdvcmsgYXJvdW5kIEN5Z3dpbidzIGJl
aGF2aW9yLiBTZWUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTUyMjI+LgorICAgIDo6U2V0RXJyb3JN
b2RlKDApOworCisgICAgOjpTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoZXhjZXB0aW9uRmls
dGVyKTsKKworICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7CisgICAgX3NldG1vZGUoMiwgX09f
QklOQVJZKTsKKworICAgIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50ID0gOjpDcmVhdGVFdmVudEEo
MCwgRkFMU0UsIEZBTFNFLCB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVudE5hbWUpOworfQorCitXS1By
ZWZlcmVuY2VzUmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVByZWZlcmVuY2VzKCkKK3sKKyAg
ICByZXR1cm4gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhtX3BhZ2VHcm91cC5nZXQoKSk7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtRGVzdHJveSgpCit7Cit9CisKK3N0YXRp
YyBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdG9XSyhjb25zdCBjaGFyKiBzdHJpbmcpCit7Cisg
ICAgcmV0dXJuIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPihBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmcpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7CisgICAgLy8gRklYTUU6IEZJWE1FISBOTyBXS0Nv
bnRleHRTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzIGluIEFQSSBsaXN0CisgICAgLy8gRklY
TUU6IE1ha2UgRFJUIHBhc3Mgd2l0aCBXaW5kb3dzIG5hdGl2ZSBjb250cm9scy4gPGh0dHA6Ly93
ZWJraXQub3JnL2IvMjU1OTI+CisgICAgLy8gV0tDb250ZXh0U2V0U2hvdWxkUGFpbnROYXRpdmVD
b250cm9scyhtX2NvbnRleHQuZ2V0KCksIGZhbHNlKTsKKworICAgIFdLQ29udGV4dFNldEluaXRp
YWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShtX2NvbnRleHQuZ2V0KCksIHRvV0so
d2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnROYW1lKS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgY29uZGl0aW9uLCBXVEY6OlNlY29uZHMgdGlt
ZW91dCkKK3sKKyAgICBSdW5Mb29wUmVzdWx0IHJlc3VsdCA9IHJ1blJ1bkxvb3BVbnRpbChjb25k
aXRpb24sIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50LCB0aW1lb3V0LnNlY29uZHMoKSk7CisgICAg
aWYgKHJlc3VsdCA9PSBUaW1lZE91dCB8fCByZXN1bHQgPT0gQ29uZGl0aW9uU2F0aXNmaWVkKQor
ICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHJlc3VsdCA9PSBPYmplY3RTaWduYWxlZCk7CisK
KyAgICAvLyBUaGUgd2ViIHByb2Nlc3MgaXMgY3Jhc2hpbmcuIEEgY3Jhc2ggbG9nIG1pZ2h0IGJl
IGJlaW5nIHNhdmVkLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcKKyAgICAvLyB0aW1lLCBhbmQgd2Ug
ZG9uJ3Qgd2FudCB0byB0aW1lIG91dCB3aGlsZSB0aGF0IGhhcHBlbnMuCisKKyAgICAvLyBGaXJz
dCwgbGV0IHRoZSB0ZXN0IGhhcm5lc3Mga25vdyB0aGlzIGhhcHBlbmVkIHNvIGl0IHdvbid0IHRo
aW5rIHdlJ3ZlIGh1bmcuIEJ1dAorICAgIC8vIG1ha2Ugc3VyZSB3ZSBkb24ndCBleGl0IGp1c3Qg
eWV0IQorICAgIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9jZXNzQ3Jhc2hlcyA9IGZhbHNlOworICAg
IHByb2Nlc3NEaWRDcmFzaCgpOworICAgIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9jZXNzQ3Jhc2hl
cyA9IHRydWU7CisKKyAgICAvLyBUaGVuIHNwaW4gYSBydW4gbG9vcCB1bnRpbCBpdCBmaW5pc2hl
cyBjcmFzaGluZyB0byBnaXZlIHRpbWUgZm9yIGEgY3Jhc2ggbG9nIHRvIGJlIHNhdmVkLiBJZgor
ICAgIC8vIGl0IHRha2VzIHRvbyBsb25nIGZvciBhIGNyYXNoIGxvZyB0byBiZSBzYXZlZCwgd2Un
bGwganVzdCBnaXZlIHVwLgorICAgIGJvb2wgbmV2ZXJTZXRDb25kaXRpb24gPSBmYWxzZTsKKyAg
ICByZXN1bHQgPSBydW5SdW5Mb29wVW50aWwobmV2ZXJTZXRDb25kaXRpb24sIDAsIG1heGltdW1X
YWl0Rm9yV2ViUHJvY2Vzc1RvQ3Jhc2gpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQgPT0gVGltZWRPdXQpOworICAgIGV4aXQoMSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVQYXRoKCkKK3sKKyAgICBtX2luamVjdGVkQnVuZGxlUGF0aC5hZG9w
dChXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhJTkpFQ1RFRF9CVU5ETEVfRExMX05BTUUp
KTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3Rv
cnkoKQoreworICAgIFRDSEFSIGV4ZVBhdGhbTUFYX1BBVEhdOworICAgIGlmICg6OkdldE1vZHVs
ZUZpbGVOYW1lKE5VTEwsIGV4ZVBhdGgsIE1BWF9QQVRIKSl7CisgICAgICAgIFRDSEFSIGRyaXZl
W19NQVhfRFJJVkVdOworICAgICAgICBUQ0hBUiBkaXJbX01BWF9ESVJdOworICAgICAgICBfdHNw
bGl0cGF0aChleGVQYXRoLCBkcml2ZSwgZGlyLCBOVUxMLCBOVUxMKTsKKworICAgICAgICBUQ0hB
UiBidW5kbGVfZGlyW01BWF9QQVRIXTsKKyAgICAgICAgX3Rjc25jcHkoYnVuZGxlX2RpciwgZHJp
dmUsIE1BWF9QQVRIKTsKKyAgICAgICAgX3Rjc25jYXQoYnVuZGxlX2RpciwgZGlyLCBNQVhfUEFU
SCAtIF9NQVhfRFJJVkUpOworCisgICAgICAgIGNoYXIgYnVuZGxlX2Rpcl91dGZbTUFYX1BBVEhd
OworICAgICAgICA6OldpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgYnVuZGxlX2Rpciwg
LTEsIGJ1bmRsZV9kaXJfdXRmLCBNQVhfUEFUSCwgTlVMTCwgTlVMTCk7CisKKyAgICAgICAgbV90
ZXN0UGx1Z2luRGlyZWN0b3J5LmFkb3B0KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1
bmRsZV9kaXJfdXRmKSk7CisgICAgfQorfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2Rh
bChQbGF0Zm9ybVdlYlZpZXcqKQoreworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0
aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlhbG9nLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K1dLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKK3sKKyAgICBy
ZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCitjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
Q29uZmlndXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25z
Rm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc0Yzc0Y2U5NWNhCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vV2ViS2l0VGVzdFJ1bm5lclByZWZp
eC5jcHAKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworI2luY2x1ZGUgIldlYktpdFRlc3RSdW5uZXJQcmVmaXguaCIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL21haW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci93aW4vbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjVmZDlmNDkwZmJmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci93aW4vbWFpbi5jcHAKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisKK2V4dGVybiAiQyIgX19k
ZWNsc3BlYyhkbGxleHBvcnQpIGludCBXSU5BUEkgZGxsTGF1bmNoZXJFbnRyeVBvaW50KGludCBh
cmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCit7CisgICAgV1RSOjpUZXN0Q29udHJvbGxlciBjb250
cm9sbGVyKGFyZ2MsIGFyZ3YpOworICAgIHJldHVybiAwOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354083</attachid>
            <date>2018-11-07 04:42:02 -0800</date>
            <delta_ts>2018-11-07 19:28:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wincairo-testrunner-impl-1107.patch</filename>
            <type>text/plain</type>
            <size>71940</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDNhZWI2YTRhYjA0Li4yMTExMjg0NmJjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xOTAsNiArMTkwLDcgQEAgV0VCS0lUX1dSQVBfU09V
UkNFTElTVCgke1dlYktpdF9TT1VSQ0VTfSkKIHNldChXZWJLaXRfRk9SV0FSRElOR19IRUFERVJT
X0RJUkVDVE9SSUVTCiAgICAgU2hhcmVkL0FQSS9jCiAKKyAgICBTaGFyZWQvQVBJL2MvY2Fpcm8K
ICAgICBTaGFyZWQvQVBJL2MvY2YKICAgICBTaGFyZWQvQVBJL2Mvd2luCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4u
Y21ha2UKaW5kZXggZjIyZjNmMTgzZDQuLjA4MWRhZWM0OTdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFr
ZQpAQCAtODQsNiArODQsNyBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKICAgICBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BVQkxJQ19TVUZGSVhf
TElTVCBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9XRUJHTCBQVUJMSUMgT04pCisgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0FDQ0VTU0lCSUxJVFkgUFJJVkFURSBPTikKIAogICAgICMgRklYTUU6IEltcGxl
bWVudCBwbHVnaW4gcHJvY2VzcyBvbiBNb2Rlcm4gV2ViS2l0LiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MzEzCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgUFJJVkFURSBPRkYpCmRpZmYgLS1n
aXQgYS9Ub29scy9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Rvb2xzL1BsYXRmb3JtV2luLmNtYWtlCmlu
ZGV4IGU0ZTJlN2E1NDQ2Li5hY2ZkOTg1Y2MxZCAxMDA2NDQKLS0tIGEvVG9vbHMvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvVG9vbHMvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTQsMyArNCw3IEBAIGFk
ZF9zdWJkaXJlY3RvcnkoSW1hZ2VEaWZmKQogaWYgKEVOQUJMRV9XRUJLSVRfTEVHQUNZKQogICAg
IGFkZF9zdWJkaXJlY3RvcnkoTWluaUJyb3dzZXIvd2luKQogZW5kaWYgKCkKKworaWYgKEVOQUJM
RV9XRUJLSVQpCisgICAgYWRkX3N1YmRpcmVjdG9yeShXZWJLaXRUZXN0UnVubmVyKQorZW5kaWYg
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lciBiL1Rv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgppbmRleCAxNzczN2ZhOTg5Ny4uMTg2
YTQ1ZDM2MTIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5l
cgorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKQEAgLTYyLDggKzYy
LDggQEAgY2hkaXIgIlRvb2xzL1dlYktpdFRlc3RSdW5uZXIiIG9yIGRpZTsKIG15ICRyZXN1bHQ7
CiBpZiAoaXNBcHBsZUNvY29hV2ViS2l0KCkpIHsKICAgICAkcmVzdWx0ID0gYnVpbGRYQ29kZVBy
b2plY3QoIldlYktpdFRlc3RSdW5uZXIiLCAkY2xlYW4sIFhjb2RlT3B0aW9ucygpLCBAQVJHVik7
Ci19IGVsc2lmIChpc0d0aygpIHx8IGlzV1BFKCkgfHwgaXNQbGF5U3RhdGlvbigpKSB7Ci0gICAg
IyBHVEsrLCBXUEUsIGFuZCBQbGF5U3RhdGlvbiBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBzaG90
LiBObyBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGhlcmUuCit9IGVsc2lmIChpc0d0aygpIHx8IGlz
V1BFKCkgfHwgaXNQbGF5U3RhdGlvbigpIHx8IGlzQW55V2luZG93cygpKSB7CisgICAgIyBHVEsr
LCBXUEUsIFBsYXlTdGF0aW9uLCBhbmQgV2luZG93cyBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBz
aG90LiBObyBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGhlcmUuCiAgICAgJHJlc3VsdCA9IDA7CiB9
IGVsc2UgewogICAgIGRpZSAiV2ViS2l0VGVzdFJ1bm5lciBpcyBub3Qgc3VwcG9ydGVkIG9uIHRo
aXMgcGxhdGZvcm0uXG4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFr
ZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZmJkZmZkYWRlOTUuLjc1MDA5YmJiNDc5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0
cy50eHQKQEAgLTEyOSw2ICsxMjksOSBAQCBpZiAoQ09NUElMRVJfSVNfR0NDX09SX0NMQU5HKQog
ICAgIFdFQktJVF9BRERfVEFSR0VUX0NYWF9GTEFHUyhXZWJLaXRUZXN0UnVubmVyIC1Xbm8tdW51
c2VkLXBhcmFtZXRlcikKIGVuZGlmICgpCiAKLWlmIChOT1QgQVBQTEUpCitpZiAoV0lOMzIpCisg
ICAgYWRkX2RlcGVuZGVuY2llcyhXZWJLaXRUZXN0UnVubmVyTGliIFdlYktpdFRlc3RSdW5uZXJC
aW5kaW5ncykKKyAgICBhZGRfZGVwZW5kZW5jaWVzKFdlYktpdFRlc3RSdW5uZXIgV2ViS2l0VGVz
dFJ1bm5lckxpYikKK2Vsc2VpZiAoTk9UIEFQUExFKQogICAgIGFkZF9kZXBlbmRlbmNpZXMoV2Vi
S2l0ICR7Rm9yd2FyZGluZ0hlYWRlcnNGb3JXZWJLaXRUZXN0UnVubmVyX05BTUV9KQogZW5kaWYg
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKaW5kZXggOWQxZTYw
YjA0NmYuLmJmZGFkOTY1YjU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2
ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaApAQCAtMjQsOCArMjQsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgRXZlbnRTZW5kZXJQcm94eV9oCi0jZGVmaW5lIEV2ZW50U2Vu
ZGVyUHJveHlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTQ0LDkgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIHVp
bnQzMl90IG1fbW91c2VCdXR0b25zQ3VycmVudGx5RG93biB7IDAgfTsKICAgICBWZWN0b3I8c3Ry
dWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXc+IG1fdG91Y2hFdmVudHM7CiAgICAgSGFzaFNl
dDx1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbV91cGRhdGVkVG91Y2hFdmVudHM7CisjZWxp
ZiBQTEFURk9STShXSU4pCisgICAgdWludDMyX3QgbV9idXR0b25TdGF0ZTsKKyAgICB1aW50MzJf
dCBtX21vdXNlQnV0dG9uc0N1cnJlbnRseURvd24geyAwIH07CiAjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gRXZlbnRTZW5kZXJQcm94eV9oCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDdiODE2NzY0MjI0Li45YWNmODU4OGQzOCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgpCiAg
ICAgcmV0dXJuIFdLQWNjZXNzaWJpbGl0eUVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQoKTsK
IH0KIAotI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShXUEUpCisjaWYgUExBVEZPUk0o
Q09DT0EpCiBSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OnJvb3RFbGVtZW50KCkKIHsKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKQEAgLTEwMCw0ICsxMDAsMyBAQCBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZv
Y3VzZWRFbGVtZW50KCkgeyByZXR1cgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCAxOWRjMGNmOTMyNi4uYTRmNjgxY2Zi
NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNzksNyArNzksNyBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
ZFN0cmluZ0ZvckVsZW1lbnQoKSB7CiAjZW5kaWYKICAgICAKIC8vIFVuc3VwcG9ydGVkIG1ldGhv
ZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMuIEFzIHRoZXkncmUgaW1wbGVtZW50ZWQgb24gb3RoZXIg
cGxhdGZvcm1zIHRoaXMgbGlzdCBzaG91bGQgYmUgbW9kaWZpZWQuCi0jaWYgKCFQTEFURk9STShH
VEspICYmICFQTEFURk9STShXUEUpKSB8fCAhSEFWRShBQ0NFU1NJQklMSVRZKQorI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCAhSEFWRShBQ0NFU1NJQklMSVRZKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCkgeyByZXR1
cm4gbnVsbHB0cjsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OndvcmRBdE9mZnNldChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50KSB7
IHJldHVybiBudWxscHRyOyB9CkBAIC0xMDcsNCArMTA3LDMgQEAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3Rh
cnRUZXgKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVFIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaAppbmRleCBiMDBjNTQ5ZGE5Ni4uZjI0ZGNlODY0MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCkBAIC0zNjIsMTAgKzM2Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRV
SUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+JikgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIGdldENoaWxkcmVu
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0
Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
JiwgdW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7Ci0jZW5kaWYKIAogI2lmIFBM
QVRGT1JNKEdUSykKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+
IG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAppbmRleCA0ZjEy
NzIyMTQ3OC4uZGZhM2QzMThmNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAKQEAgLTI0LDEx
ICsyNCwxNSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlLmgiCisKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVJbml0aWFsaXplLmg+CiAK
KyNpZiBkZWZpbmVkKFdJTjMyKQorZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNl
bHNlCiBleHRlcm4gIkMiCisjZW5kaWYKIHZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CiAgICAgV1RS
OjpJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuaW5pdGlhbGl6ZShidW5kbGUsIGluaXRpYWxp
emF0aW9uVXNlckRhdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDgwYTBhNDhiODE3
Li4zMTgwY2YyMWRkNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtMjUsMTEgKzI1LDEx
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2Uu
aCIKLQogI2luY2x1ZGUgIkFjdGl2YXRlRm9udHMuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZS5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXN0
U3VwcG9ydC5oIgorCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tBcnJheS5oPgpAQCAtNTAsNyArNTAs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBVU0UoQ0YpCisjaWYgVVNFKENGKSAmJiAhUExBVEZPUk0o
V0lOX0NBSVJPKQogI2luY2x1ZGUgIldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgogI2VuZGlmCiAK
QEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgcmFuZ2VUb1N0cihXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZAogewogICAgIGlmICgh
cmFuZ2VSZWYpCiAgICAgICAgIHJldHVybiAiKG51bGwpIjsKLSAKKwogICAgIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CiAKICAgICBKU0ds
b2JhbENvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4
dEZvcldvcmxkKGZyYW1lLCB3b3JsZCk7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmR1bXBBbGxGcmFtZXNUZXh0KFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxk
ZXIpCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNoaXZlKFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCiB7Ci0jaWYg
VVNFKENGKQorI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykKICAgICBXS1JldGFp
blB0cjxXS0RhdGFSZWY+IHdrRGF0YSA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNo
aXZlKGZyYW1lKSk7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGUoMCwgV0tEYXRhR2V0Qnl0ZXMod2tEYXRhLmdldCgpKSwgV0tEYXRhR2V0U2l6
ZSh3a0RhdGEuZ2V0KCkpKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9
IGFkb3B0Q0YoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2
ZURhdGEoY2ZEYXRhLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBjOTUyYTlmZjI3OS4uOGI0YTZlMjgw
ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkK
ICAgICAsIG1fZGF0YWJhc2VNYXhRdW90YSgtMSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRFbmFi
bGVkKGZhbHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uKGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKSkKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFdQRSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3dhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRlc3RSdW5uZXI6OndhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVyRmlyZWQpCiAjZW5kaWYKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNDdlNTk3MjIxNGIuLjUzZWY4MTVm
NDQxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KIHR5cGVkZWYgUmV0YWluUHRy
PENGUnVuTG9vcFRpbWVyUmVmPiBQbGF0Zm9ybVRpbWVyUmVmOwotI2VsaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCisjZWxzZQogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiBuYW1l
c3BhY2UgV1RSIHsKIGNsYXNzIFRlc3RSdW5uZXI7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjNiODdkZTY3Njk3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCkBAIC0w
LDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3JlYXRlKG51bGxwdHIpOworfQorCitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUobnVs
bHB0cik7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKEpTVmFsdWVSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lC
SUxJVFkpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lNjBlY2E2NTg1MQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCkBAIC0wLDAgKzEsOTc4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFj
ZSBXVFIgeworCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KFBsYXRmb3JtVUlFbGVtZW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldp
dGhSYW5nZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYsIHVuc2lnbmVk
LCB1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCwgaW50KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCisKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgo
dW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5z
aWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgo
dW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRB
dEluZGV4KHVuc2lnbmVkKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVt
ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGlzY2xvc2VkQnlSb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxk
cmVuKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0
cmlidXRlcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworSlNWYWx1ZVJlZiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQo
SlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Rv
dWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjbGlja1BvaW50WSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1
ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRp
b24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRGVjcmVtZW50QWN0aW9uU3VwcG9ydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0VuYWJsZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTZWxlY3RlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZE9w
dGlvbkFjdGl2ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzcGVha0FzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURy
b3BFZmZlY3RzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGlu
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKGlu
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQ
b3NpdGlvbihpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5z
aWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQsIHVuc2ln
bmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFBy
ZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBib29sLCBKU1Zh
bHVlUmVmLCBKU1N0cmluZ1JlZiwgYm9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4
dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2wsIEpTVmFsdWVSZWYsIEpTU3RyaW5n
UmVmLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RUZXh0V2l0aENyaXRlcmlhKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYsIEpT
VmFsdWVSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hl
YWRlcnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZDb2x1bW5zKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mUm93cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcigpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworaW50IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uQ291bnQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5z
aWduZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRl
eHRSYW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZSh1
bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRlY3JlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENo
aWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3Rl
ZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbkF0
SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGVhclNlbGVjdGVkQ2hpbGRyZW4oKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29k
aW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1l
bnRVUkkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1
ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVl
bigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTaW5nbGVMaW5lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpTGlu
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNl
bGVjdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFy
a2VyRm9yQm91bmRzKGludCwgaW50LCBpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQs
IGludCwgaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VX
aXRoT3B0aW9ucyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiwgYm9vbCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWlu
c0F0dHJpYnV0ZShKU1N0cmluZ1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50KGludCwgaW50KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQsIGludCwgaW50LCBpbnQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNj
cmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3QoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNldChp
bnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9m
ZnNldChpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bnRlbmNlQXRPZmZzZXQoaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlICBXVEYKKworI2VuZGlmIC8vIEhBVkUoQUND
RVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvd2luL0FjdGl2YXRlRm9udHNXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI2YzE2ZmNlMjRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5j
cHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWN0aXZhdGVGb250
cy5oIgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBhY3RpdmF0ZUZvbnRzKCkKK3sKK30KKwor
dm9pZCBpbnN0YWxsRmFrZUhlbHZldGljYShXS1N0cmluZ1JlZikKK3sKK30KKwordm9pZCB1bmlu
c3RhbGxGYWtlSGVsdmV0aWNhKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1
bmRsZVdpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9J
bmplY3RlZEJ1bmRsZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjI0MDgxZmYzYTI5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwCkBAIC0wLDAgKzEsMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKK25hbWVzcGFj
ZSBXVFIgeworCit2b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxpemUoV0tUeXBl
UmVmKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVBy
ZWZpeC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0
UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5iOGVjZjM0MTQxNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVBy
ZWZpeC5jcHAKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4
LmgiCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dp
bi9UZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OGZlNDFjMjVjZAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rl
c3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjdW5kZWYgV0VCQ09SRV9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0lN
UE9SVF9ERUNMQVJBVElPTgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMjVmYmZmNWFmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcApA
QCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0UnVubmVyLmgiCisK
KyNpbmNsdWRlICJBY3RpdmF0ZUZvbnRzLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU1N0cmlu
Z1JlZikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IFRlc3RSdW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKCkKK3sKKyAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6Omlu
dmFsaWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpCit7CisgICAgbV93YWl0VG9EdW1wV2F0
Y2hkb2dUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXJJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIuc3RhcnRPbmVT
aG90KG1fdGltZW91dCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6aW5zdGFsbEZha2VIZWx2ZXRp
Y2EoSlNTdHJpbmdSZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICBXVFI6Omluc3RhbGxGYWtlSGVs
dmV0aWNhKHRvV0soY29uZmlndXJhdGlvbikuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGNlMzY4ZmYw
ZTZhLi5kYjQxOWM3ZDRmYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0
Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVdlYlZpZXdfaAotI2RlZmluZSBQbGF0Zm9ybVdlYlZp
ZXdfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgogCkBAIC00OSwx
MyArNDgsMjAgQEAgdHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1JbWFnZTsK
IHR5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OwogdHlwZWRlZiBXS1ZpZXdSZWYg
UGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIEd0a1dpZGdldCogUGxhdGZvcm1XaW5kb3c7Ci10eXBl
ZGVmIGNhaXJvX3N1cmZhY2VfdCAqUGxhdGZvcm1JbWFnZTsKICNlbGlmIFBMQVRGT1JNKFdQRSkK
IG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogY2xhc3MgSGVhZGxlc3NWaWV3QmFja2Vu
ZDsKIH0KIHR5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiBXUEVUb29s
aW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQqIFBsYXRmb3JtV2luZG93OworI2VsaWYg
UExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPGNhaXJvLmg+CitjbGFzcyBUZXN0UnVubmVyV2luZG93
OwordHlwZWRlZiBIV05EIFBsYXRmb3JtV2luZG93OwordHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZv
cm1XS1ZpZXc7CisjZW5kaWYKKworI2lmIFVTRShDQUlSTykKIHR5cGVkZWYgY2Fpcm9fc3VyZmFj
ZV90KiBQbGF0Zm9ybUltYWdlOwogI2VuZGlmCiAKQEAgLTEyNSw1ICsxMzEsMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVdlYlZpZXdf
aApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XaW4uY21ha2UKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJlZTgxZjA3ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMCwwICsxLDg2IEBA
CitzZXQoV2ViS2l0VGVzdFJ1bm5lckxpYl9TT1VSQ0VTCisgICAgJHtXZWJLaXRUZXN0UnVubmVy
X1NPVVJDRVN9CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NhaXJvL1Rlc3RJbnZvY2F0
aW9uQ2Fpcm8uY3BwCisgICAgd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCisgICAgd2luL1Bs
YXRmb3JtV2ViVmlld1dpbi5jcHAKKyAgICB3aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCisgICAg
d2luL21haW4uY3BwCispCisKK3NldChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKKyAgICAke1RP
T0xTX0RJUn0vd2luL0RMTExhdW5jaGVyL0RMTExhdW5jaGVyTWFpbi5jcHAKKykKKworbGlzdChB
UFBFTkQgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL0FjdGl2YXRlRm9udHNXaW4uY3Bw
CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9JbmplY3Rl
ZEJ1bmRsZVdpbi5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJ
Un0vd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RF
REJVTkRMRV9ESVJ9L3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRXaW4uY3BwCispCisKKworbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURF
X0RJUkVDVE9SSUVTCisgICAgY2Fpcm8KKyAgICB3aW4KKyAgICAke0NBSVJPX0lOQ0xVREVfRElS
U30KKyAgICAke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9CisgICAgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbgorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vV2Vi
S2l0L0ludGVyZmFjZXMKKykKKworCitzZXQoV2ViS2l0VGVzdFJ1bm5lckxpYl9MSUJSQVJJRVMK
KyAgICAke1dlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTfQorICAgIENvbXN1cHB3CisgICAgT2xl
YWNjCispCisKK2xpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTCisgICAgV1RG
CisgICAgV2ViS2l0CispCisKK3NldChXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfTElC
UkFSSUVTCisgICAgV2ViQ29yZVRlc3RTdXBwb3J0CisgICAgV2ViS2l0CispCisKKworbGlzdChS
RU1PVkVfSVRFTQorICAgIFdlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFUworICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfQklORElOR1NfRElSfS9KU1dyYXBwZXIuY3BwCispCitsaXN0KFJFTU9WRV9J
VEVNCisgICAgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNwcAorKQorCitXRUJLSVRf
QUREX1BSRUNPTVBJTEVEX0hFQURFUigiV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oIgorICAgICIk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0vd2luL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguY3BwIgor
ICAgIFdlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFUworKQorV0VCS0lUX0FERF9QUkVDT01QSUxF
RF9IRUFERVIoIlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oIgorICAgICIke1dFQktJ
VF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1
bmRsZVByZWZpeC5jcHAiCisgICAgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJD
RVMKKykKKworbGlzdChBUFBFTkQKKyAgICBXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVMKKyAg
ICAke1dFQktJVF9URVNUUlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNwcAorKQorbGlz
dChBUFBFTkQKKyAgICBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUworICAg
ICR7V0VCS0lUX1RFU1RSVU5ORVJfQklORElOR1NfRElSfS9KU1dyYXBwZXIuY3BwCispCisKKwor
c2V0KENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfU0hBUkVEX0xJTktFUl9GTEFH
U30gJHtNU1ZDX1JVTlRJTUVfTElOS0VSX0ZMQUdTfSIpCithZGRfbGlicmFyeShXZWJLaXRUZXN0
UnVubmVyTGliIFNIQVJFRCAke1dlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFU30pCit0YXJnZXRf
bGlua19saWJyYXJpZXMoV2ViS2l0VGVzdFJ1bm5lckxpYiAke1dlYktpdFRlc3RSdW5uZXJMaWJf
TElCUkFSSUVTfSkKKworYWRkX2RlZmluaXRpb25zKAorICAgIC1EV0lOX0NBSVJPCisgICAgLURV
U0VfQ09OU09MRV9FTlRSWV9QT0lOVAorICAgIC1EX1VOSUNPREUKKykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggODE3ZjBmNGRhOTAuLjg3MGM0MjhiMzI1
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNjgsNyAr
NjgsMTMgQEAKICNpbmNsdWRlIDxmc3RyZWFtPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1
ZGUgPHN0cmluZz4KKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8ZGlyZWN0Lmg+CisjZGVm
aW5lIGdldGN3ZCBfZ2V0Y3dkCisjZGVmaW5lIFBBVEhfTUFYIF9NQVhfUEFUSAorI2Vsc2UKICNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wu
aD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNs
dWRlIDx3dGYvSGV4TnVtYmVyLmg+CkBAIC04NzIsNyArODc4LDcgQEAgYm9vbCBUZXN0Q29udHJv
bGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0
aW9ucywgUmUKICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHBy
b2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KICAgICByZXNldFByZWZlcmVu
Y2VzVG9Db25zaXN0ZW50VmFsdWVzKG9wdGlvbnMpOwogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiAhUExBVEZPUk0oV1BFKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdQRSkg
JiYgIVBMQVRGT1JNKFdJTikKICAgICBXS1RleHRDaGVja2VyQ29udGludW91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkU3RhdGVDaGFuZ2VkKHRydWUpOwogI2VuZGlmCiAKQEAgLTEwOTEsOCArMTA5Nywx
NSBAQCBzdGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVzdFVSTChjb25zdCBjaGFyKiBwYXRoT3JVUkwp
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCisjaWYgUExBVEZPUk0oV0lO
KQorICAgIGNvbnN0IGNoYXIgc2VwYXJhdG9yID0gJ1xcJzsKKyAgICBib29sIGlzQWJzb2x1dGVQ
YXRoID0gZmFsc2U7CisgICAgaWYgKHN0cmxlbihwYXRoT3JVUkwpID49IDMgJiYgcGF0aE9yVVJM
WzFdID09ICc6JyAmJiBwYXRoT3JVUkxbMl0gPT0gc2VwYXJhdG9yKQorICAgICAgICBpc0Fic29s
dXRlUGF0aCA9IHRydWU7CisjZWxzZQogICAgIGNvbnN0IGNoYXIgc2VwYXJhdG9yID0gJy8nOwog
ICAgIGJvb2wgaXNBYnNvbHV0ZVBhdGggPSBwYXRoT3JVUkxbMF0gPT0gc2VwYXJhdG9yOworI2Vu
ZGlmCiAgICAgY29uc3QgY2hhciogZmlsZVByZWZpeCA9ICJmaWxlOi8vIjsKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihmaWxlUHJlZml4KTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBkMmI4Y2ExMDJhZS4uMTI0
MGJiMWFiOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBA
IC00Miw3ICs0MiwxMiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
aD4KICNpbmNsdWRlIDxjbGltaXRzPgogI2luY2x1ZGUgPGNzdGRpbz4KKyNpZiBQTEFURk9STShX
SU4pCisjaW5jbHVkZSA8aW8uaD4KKyNkZWZpbmUgaXNhdHR5IF9pc2F0dHkKKyNlbHNlCiAjaW5j
bHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oCmluZGV4IDVmOTg5ZmM1NGU3Li5mMjAwMTE5ODZj
MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJl
Zml4LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4
LmgKQEAgLTQ0LDMgKzQ0LDcgQEAKICN1bmRlZiBjYXRjaAogI2VuZGlmCiAKKyNpZiBPUyhXSU5E
T1dTKQorI3VuZGVmIFdFQkNPUkVfRVhQT1JUCisjZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdURl9J
TVBPUlRfREVDTEFSQVRJT04KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMDI3MDkyOTA4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcApAQCAtMCwwICsxLDEwOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAy
MDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKKy8vIEtl
eSBldmVudCBsb2NhdGlvbiBjb2RlIGRlZmluZWQgaW4gRE9NIExldmVsIDMuCitlbnVtIEtleUxv
Y2F0aW9uQ29kZSB7CisgICAgRE9NS2V5TG9jYXRpb25TdGFuZGFyZCAgICAgID0gMHgwMCwKKyAg
ICBET01LZXlMb2NhdGlvbkxlZnQgICAgICAgICAgPSAweDAxLAorICAgIERPTUtleUxvY2F0aW9u
UmlnaHQgICAgICAgICA9IDB4MDIsCisgICAgRE9NS2V5TG9jYXRpb25OdW1wYWQgICAgICAgID0g
MHgwMworfTsKKworZW51bSBCdXR0b25TdGF0ZSB7CisgICAgQnV0dG9uUmVsZWFzZWQgPSAwLAor
ICAgIEJ1dHRvblByZXNzZWQgPSAxCit9OworCitlbnVtIFBvaW50ZXJBeGlzIHsKKyAgICBWZXJ0
aWNhbFNjcm9sbCA9IDAsCisgICAgSG9yaXpvbnRhbFNjcm9sbCA9IDEKK307CisKK0V2ZW50U2Vu
ZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVy
KQorICAgIDogbV90ZXN0Q29udHJvbGxlcih0ZXN0Q29udHJvbGxlcikKKyAgICAsIG1fdGltZSgw
KQorICAgICwgbV9sZWZ0TW91c2VCdXR0b25Eb3duKGZhbHNlKQorICAgICwgbV9jbGlja0NvdW50
KDApCisgICAgLCBtX2NsaWNrVGltZSgwKQorICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1v
dXNlQnV0dG9uTm9CdXR0b24pCisgICAgLCBtX2J1dHRvblN0YXRlKEJ1dHRvblJlbGVhc2VkKQor
eworfQorCitFdmVudFNlbmRlclByb3h5Ojp+RXZlbnRTZW5kZXJQcm94eSgpCit7Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1v
ZGlmaWVycyB3a01vZGlmaWVycykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZp
ZXJzIHdrTW9kaWZpZXJzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8oZG91YmxlIHgsIGRvdWJsZSB5KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxC
eShpbnQgaG9yaXpvbnRhbCwgaW50IHZlcnRpY2FsKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGludCBob3Jpem9udGFsLCBpbnQgdmVydGljYWwsIGludCwgaW50KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y29udGlu
dW91c01vdXNlU2Nyb2xsQnkoaW50LCBpbnQsIGJvb2wpCit7Cit9CisKK3ZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKK3sKKyAgICBtX3RpbWUgKz0g
bWlsbGlzZWNvbmRzIC8gMTAwMC4wOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURv
d24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzLCB1bnNp
Z25lZCBsb2NhdGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZp
ZXdXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZjkzYjNi
MmViZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRm
b3JtV2ViVmlld1dpbi5jcHAKQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKKyNpbmNsdWRlIDxIV25kREMuaD4KKyNpbmNsdWRl
IDxjYWlyby5oPgorI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgorCisK
K25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMgTFBDV1NUUiBob3N0V2luZG93Q2xhc3NOYW1lID0g
TCJXVFJXZWJWaWV3SG9zdFdpbmRvdyI7CitzdGF0aWMgTFBDV1NUUiB0ZXN0UnVubmVyV2luZG93
TmFtZSA9IEwiV2ViS2l0VGVzdFJ1bm5lciI7CisKK3N0YXRpYyB2b2lkIHJlZ2lzdGVyV2luZG93
Q2xhc3MoKQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYg
KGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwor
CisgICAgV05EQ0xBU1NFWFcgd25kQ2xhc3MgPSB7MH07CisgICAgd25kQ2xhc3MuY2JTaXplID0g
c2l6ZW9mKHduZENsYXNzKTsKKyAgICB3bmRDbGFzcy5zdHlsZSA9IENTX0hSRURSQVcgfCBDU19W
UkVEUkFXOworICAgIHduZENsYXNzLmxwZm5XbmRQcm9jID0gRGVmV2luZG93UHJvYzsKKyAgICB3
bmRDbGFzcy5oQ3Vyc29yID0gTG9hZEN1cnNvcigwLCBJRENfQVJST1cpOworICAgIHduZENsYXNz
LmhJbnN0YW5jZSA9IEdldE1vZHVsZUhhbmRsZSgwKTsKKyAgICB3bmRDbGFzcy5scHN6Q2xhc3NO
YW1lID0gaG9zdFdpbmRvd0NsYXNzTmFtZTsKKworICAgIDo6UmVnaXN0ZXJDbGFzc0V4Vygmd25k
Q2xhc3MpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQor
ICAgIDogbV93aW5kb3cobnVsbHB0cikKKyAgICAsIG1fd2luZG93SXNLZXkodHJ1ZSkKKyAgICAs
IG1fb3B0aW9ucyhvcHRpb25zKQoreworICAgIHJlZ2lzdGVyV2luZG93Q2xhc3MoKTsKKworICAg
IFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2MDB9OworICAgIG1fd2luZG93ID0gOjpDcmVh
dGVXaW5kb3dFeCgKKyAgICAgICAgMCwKKyAgICAgICAgaG9zdFdpbmRvd0NsYXNzTmFtZSwKKyAg
ICAgICAgdGVzdFJ1bm5lcldpbmRvd05hbWUsCisgICAgICAgIFdTX09WRVJMQVBQRURXSU5ET1cs
CisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIHZpZXdSZWN0LnJpZ2h0LAorICAgICAg
ICB2aWV3UmVjdC5ib3R0b20sCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIEdldE1v
ZHVsZUhhbmRsZSgwKSwKKyAgICAgICAgMCk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZp
ZXdSZWN0LCBjb25maWd1cmF0aW9uLCBtX3dpbmRvdyk7CisgICAgV0tWaWV3U2V0SXNJbldpbmRv
dyhtX3ZpZXcsIHRydWUpOworCisgICAgU2hvd1dpbmRvdyhtX3dpbmRvdywgU1dfU0hPVyk7Cit9
CisKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCit7CisgICAgaWYgKDo6SXNX
aW5kb3cobV93aW5kb3cpKQorICAgICAgICA6OkRlc3Ryb3lXaW5kb3cobV93aW5kb3cpOworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVuc2lnbmVk
IGhlaWdodCwgV2ViVmlld1NpemluZ01vZGUpCit7CisgICAgOjpTZXRXaW5kb3dQb3MoCisgICAg
ICAgIFdLVmlld0dldFdpbmRvdyhtX3ZpZXcpLAorICAgICAgICAwLAorICAgICAgICAwLAorICAg
ICAgICAwLAorICAgICAgICB3aWR0aCwKKyAgICAgICAgaGVpZ2h0LAorICAgICAgICBTV1BfTk9N
T1ZFIHwgU1dQX05PWk9SREVSIHwgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9DT1BZQklUUyk7Cit9
CisKK1dLUGFnZVJlZiBQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UoKQoreworICAgIHJldHVybiBXS1Zp
ZXdHZXRQYWdlKG1fdmlldyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1cygpCit7
CisgICAgOjpTZXRGb2N1cyg6OldLVmlld0dldFdpbmRvdyhtX3ZpZXcpKTsKK30KKworV0tSZWN0
IFBsYXRmb3JtV2ViVmlldzo6d2luZG93RnJhbWUoKQoreworICAgIFdLUmVjdCB3a0ZyYW1lID0g
ezB9OworICAgIFJFQ1QgcjsKKworICAgIGlmICg6OkdldFdpbmRvd1JlY3QobV93aW5kb3csICZy
KSkgeworICAgICAgICB3a0ZyYW1lLm9yaWdpbi54ID0gci5sZWZ0OworICAgICAgICB3a0ZyYW1l
Lm9yaWdpbi55ID0gci50b3A7CisgICAgICAgIHdrRnJhbWUuc2l6ZS53aWR0aCA9IHIucmlnaHQg
LSByLmxlZnQ7CisgICAgICAgIHdrRnJhbWUuc2l6ZS5oZWlnaHQgPSByLmJvdHRvbSAtIHIudG9w
OworICAgIH0KKworICAgIHJldHVybiB3a0ZyYW1lOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmll
dzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lLCBXZWJWaWV3U2l6aW5nTW9kZSkKK3sKKyAg
ICA6OlNldFdpbmRvd1BvcygKKyAgICAgICAgbV93aW5kb3csCisgICAgICAgIDAsCisgICAgICAg
IGZyYW1lLm9yaWdpbi54LAorICAgICAgICBmcmFtZS5vcmlnaW4ueSwKKyAgICAgICAgZnJhbWUu
c2l6ZS53aWR0aCwKKyAgICAgICAgZnJhbWUuc2l6ZS5oZWlnaHQsCisgICAgICAgIFNXUF9OT1pP
UkRFUiB8IFNXUF9OT0FDVElWQVRFIHwgU1dQX05PQ09QWUJJVFMpOworfQorCit2b2lkIFBsYXRm
b3JtV2ViVmlldzo6ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKQoreworfQorCit2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJW
aWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OmFkZFRvV2luZG93KCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUZy
b21XaW5kb3coKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93SXNLZXko
Ym9vbCB3aW5kb3dJc0tleSkKK3sKKyAgICBtX3dpbmRvd0lzS2V5ID0gd2luZG93SXNLZXk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKCkKK3sK
K30KKworI2lmIFVTRShDQUlSTykKK3N0YXRpYyBjYWlyb19zdXJmYWNlX3QqIGdlbmVyYXRlQ2Fp
cm9TdXJmYWNlRnJvbUJpdG1hcChCSVRNQVAgYml0bWFwVGFnKQoreworICAgIGNhaXJvX3N1cmZh
Y2VfdCogaW1hZ2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZSgKKyAgICAgICAgQ0FJUk9f
Rk9STUFUX0FSR0IzMiwKKyAgICAgICAgYml0bWFwVGFnLmJtV2lkdGgsCisgICAgICAgIGJpdG1h
cFRhZy5ibUhlaWdodCk7CisKKyAgICB1bnNpZ25lZCBjaGFyKiBzcmMgPSAodW5zaWduZWQgY2hh
ciopYml0bWFwVGFnLmJtQml0czsKKyAgICBpbnQgc3JjUGl0Y2ggPSBiaXRtYXBUYWcuYm1XaWR0
aEJ5dGVzOworICAgIHVuc2lnbmVkIGNoYXIqIGRzdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X2RhdGEoaW1hZ2UpOworICAgIGludCBkc3RQaXRjaCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3N0cmlkZShpbWFnZSk7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGJpdG1hcFRhZy5ibUhl
aWdodDsgeSsrKSB7CisgICAgICAgIG1lbWNweShkc3QsIHNyYywgZHN0UGl0Y2gpOworICAgICAg
ICBzcmMgKz0gc3JjUGl0Y2g7CisgICAgICAgIGRzdCArPSBkc3RQaXRjaDsKKyAgICB9CisKKyAg
ICByZXR1cm4gaW1hZ2U7Cit9CisKK2NhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1XZWJWaWV3Ojp3
aW5kb3dTbmFwc2hvdEltYWdlKCkKK3sKKyAgICBSRUNUIHdpbmRvd1JlY3Q7CisgICAgOjpHZXRD
bGllbnRSZWN0KG1fd2luZG93LCAmd2luZG93UmVjdCk7CisgICAgTE9ORyB3aWR0aCA9IHdpbmRv
d1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0LmxlZnQ7CisgICAgTE9ORyBoZWlnaHQgPSB3aW5kb3dS
ZWN0LmJvdHRvbSAtIHdpbmRvd1JlY3QudG9wOworCisgICAgV2ViQ29yZTo6SFduZERDIHdpbmRv
d0RDKG1fd2luZG93KTsKKyAgICBhdXRvIG1lbW9yeURDID0gYWRvcHRHRElPYmplY3QoOjpDcmVh
dGVDb21wYXRpYmxlREMod2luZG93REMpKTsKKworICAgIEJJVE1BUElORk8gYml0bWFwSW5mbyA9
IHswfTsKKyAgICBXS1JlY3Qgd2tGcmFtZSA9IHdpbmRvd0ZyYW1lKCk7CisgICAgYml0bWFwSW5m
by5ibWlIZWFkZXIuYmlTaXplID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOworICAgIGJpdG1h
cEluZm8uYm1pSGVhZGVyLmJpV2lkdGggPSB3aWR0aDsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRl
ci5iaUhlaWdodCA9IC1oZWlnaHQ7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlQbGFuZXMg
PSAxOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpQml0Q291bnQgPSAzMjsKKyAgICBiaXRt
YXBJbmZvLmJtaUhlYWRlci5iaUNvbXByZXNzaW9uID0gQklfUkdCOworICAgIGJpdG1hcEluZm8u
Ym1pSGVhZGVyLmJpU2l6ZUltYWdlID0gd2lkdGggKiBoZWlnaHQgKiA0OworCisgICAgdm9pZCog
Yml0c1BvaW50ZXIgPSAwOworICAgIGF1dG8gYml0bWFwID0gYWRvcHRHRElPYmplY3QoOjpDcmVh
dGVESUJTZWN0aW9uKHdpbmRvd0RDLCAmYml0bWFwSW5mbywgRElCX1JHQl9DT0xPUlMsICZiaXRz
UG9pbnRlciwgMCwgMCkpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIDo6U2VsZWN0T2JqZWN0KG1lbW9yeURDLmdldCgpLCBiaXRtYXAuZ2V0KCkpOwor
ICAgIDo6Qml0Qmx0KG1lbW9yeURDLmdldCgpLAorICAgICAgICAwLAorICAgICAgICAwLAorICAg
ICAgICB3aWR0aCwKKyAgICAgICAgaGVpZ2h0LAorICAgICAgICB3aW5kb3dEQywKKyAgICAgICAg
MCwKKyAgICAgICAgMCwKKyAgICAgICAgU1JDQ09QWSk7CisKKyAgICBCSVRNQVAgYml0bWFwVGFn
ID0gezB9OworICAgIEdldE9iamVjdChiaXRtYXAuZ2V0KCksIHNpemVvZihiaXRtYXBUYWcpLCAm
Yml0bWFwVGFnKTsKKyAgICBBU1NFUlQoYml0bWFwVGFnLmJtQml0c1BpeGVsID09IDMyKTsKKwor
ICAgIHJldHVybiBnZW5lcmF0ZUNhaXJvU3VyZmFjZUZyb21CaXRtYXAoYml0bWFwVGFnKTsKK30K
KyNlbmRpZgorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRl
ZChmbG9hdCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldE5hdmlnYXRpb25HZXN0
dXJlc0VuYWJsZWQoYm9vbCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvcmNlV2lu
ZG93RnJhbWVzQ2hhbmdlZCgpCit7Cit9CisKK2Jvb2wgUGxhdGZvcm1XZWJWaWV3OjpkcmF3c0Jh
Y2tncm91bmQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OnNldERyYXdzQmFja2dyb3VuZChib29sKQoreworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9s
bGVyV2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2lu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODM4MmU3ZmI5ZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJv
bGxlcldpbi5jcHAKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lu
Y2x1ZGUgPFdlYktpdC9XS1N0cmluZ0NGLmg+CisjaW5jbHVkZSA8V2luQmFzZS5oPgorI2luY2x1
ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5j
bHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRjaGFyLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKworI2RlZmluZSBJTkpFQ1RFRF9CVU5ETEVfRExM
X05BTUUgIlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5kbGwiCisKK25hbWVzcGFjZSBXVFIgewor
CitzdGF0aWMgSEFORExFIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50Oworc3RhdGljIGNvbnN0IGNo
YXIgd2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnROYW1lW10gPSAiV2ViS2l0VGVzdFJ1bm5lci5XZWJQ
cm9jZXNzQ3Jhc2hpbmciOworLy8gVGhpcyBpcyB0aGUgbG9uZ2VzdCB3ZSdsbCB3YWl0IChpbiBz
ZWNvbmRzKSBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGZpbmlzaCBjcmFzaGluZyBhbmQgYSBjcmFz
aAorLy8gbG9nIHRvIGJlIHNhdmVkLiBUaGlzIGludGVydmFsIHNob3VsZCBiZSBqdXN0IGEgdGlu
eSBiaXQgbG9uZ2VyIHRoYW4gaXQgd2lsbCBldmVyIHJlYXNvbmFibHkKKy8vIHRha2UgdG8gc2F2
ZSBhIGNyYXNoIGxvZy4KK3N0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bVdhaXRGb3JXZWJQcm9j
ZXNzVG9DcmFzaCA9IDYwOworCisKK3N0YXRpYyBMT05HIFdJTkFQSSBleGNlcHRpb25GaWx0ZXIo
RVhDRVBUSU9OX1BPSU5URVJTKikKK3sKKyAgICBmcHV0cygiI0NSQVNIRURcbiIsIHN0ZGVycik7
CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFS
Q0g7Cit9CisKK2VudW0gUnVuTG9vcFJlc3VsdCB7IFRpbWVkT3V0LCBPYmplY3RTaWduYWxlZCwg
Q29uZGl0aW9uU2F0aXNmaWVkIH07CisKK3N0YXRpYyBSdW5Mb29wUmVzdWx0IHJ1blJ1bkxvb3BV
bnRpbChib29sJiBjb25kaXRpb24sIEhBTkRMRSBvYmplY3QsIGRvdWJsZSB0aW1lb3V0KQorewor
ICAgIERXT1JEIGVuZCA9IDo6R2V0VGlja0NvdW50KCkgKyB0aW1lb3V0ICogMTAwMDsKKyAgICBp
ZiAodGltZW91dCA8IDApCisgICAgICAgIGVuZCA9IFVMT05HX01BWDsKKworICAgIHdoaWxlICgh
Y29uZGl0aW9uKSB7CisgICAgICAgIERXT1JEIG5vdyA9IDo6R2V0VGlja0NvdW50KCk7CisgICAg
ICAgIGlmIChub3cgPiBlbmQpCisgICAgICAgICAgICByZXR1cm4gVGltZWRPdXQ7CisKKyAgICAg
ICAgRFdPUkQgd2FpdCA9IGVuZCAtIG5vdzsKKyAgICAgICAgRFdPUkQgb2JqZWN0Q291bnQgPSBv
YmplY3QgPyAxIDogMDsKKyAgICAgICAgY29uc3QgSEFORExFKiBvYmplY3RzID0gb2JqZWN0ID8g
Jm9iamVjdCA6IDA7CisKKyAgICAgICAgRFdPUkQgcmVzdWx0ID0gOjpNc2dXYWl0Rm9yTXVsdGlw
bGVPYmplY3RzRXgob2JqZWN0Q291bnQsIG9iamVjdHMsIHdhaXQsIFFTX0FMTElOUFVULCBNV01P
X0lOUFVUQVZBSUxBQkxFKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBXQUlUX1RJTUVPVVQpCisg
ICAgICAgICAgICByZXR1cm4gVGltZWRPdXQ7CisKKyAgICAgICAgaWYgKG9iamVjdENvdW50ICYm
IHJlc3VsdCA+PSBXQUlUX09CSkVDVF8wICYmIHJlc3VsdCA8IFdBSVRfT0JKRUNUXzAgKyBvYmpl
Y3RDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBPYmplY3RTaWduYWxlZDsKKworICAgICAgICBB
U1NFUlQocmVzdWx0ID09IFdBSVRfT0JKRUNUXzAgKyBvYmplY3RDb3VudCk7CisgICAgICAgIC8v
IFRoZXJlIGFyZSBtZXNzYWdlcyBpbiB0aGUgcXVldWUuIFByb2Nlc3MgdGhlbS4KKyAgICAgICAg
TVNHIG1zZzsKKyAgICAgICAgd2hpbGUgKDo6UGVla01lc3NhZ2VXKCZtc2csIDAsIDAsIDAsIFBN
X1JFTU9WRSkpIHsKKyAgICAgICAgICAgIDo6VHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKKyAgICAg
ICAgICAgIDo6RGlzcGF0Y2hNZXNzYWdlVygmbXNnKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBDb25kaXRpb25TYXRpc2ZpZWQ7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5v
dGlmeURvbmUoKQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRIaWRkZW4oYm9vbCkK
K3sKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAg
ICAvLyBDeWd3aW4gY2FsbHMgOjpTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyks
IHdoaWNoIHdlIHdpbGwgaW5oZXJpdC4gVGhpcyBpcyBiYWQgZm9yCisgICAgLy8gdGVzdGluZy9k
ZWJ1Z2dpbmcsIGFzIGl0IGNhdXNlcyB0aGUgcG9zdC1tb3J0ZW0gZGVidWdnZXIgbm90IHRvIGJl
IGludm9rZWQuIFdlIHJlc2V0IHRoZQorICAgIC8vIGVycm9yIG1vZGUgaGVyZSB0byB3b3JrIGFy
b3VuZCBDeWd3aW4ncyBiZWhhdmlvci4gU2VlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU1MjIyPi4K
KyAgICA6OlNldEVycm9yTW9kZSgwKTsKKworICAgIDo6U2V0VW5oYW5kbGVkRXhjZXB0aW9uRmls
dGVyKGV4Y2VwdGlvbkZpbHRlcik7CisKKyAgICBfc2V0bW9kZSgxLCBfT19CSU5BUlkpOworICAg
IF9zZXRtb2RlKDIsIF9PX0JJTkFSWSk7CisKKyAgICB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVudCA9
IDo6Q3JlYXRlRXZlbnRBKDAsIEZBTFNFLCBGQUxTRSwgd2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnRO
YW1lKTsKK30KKworV0tQcmVmZXJlbmNlc1JlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1QcmVm
ZXJlbmNlcygpCit7CisgICAgcmV0dXJuIFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMobV9wYWdl
R3JvdXAuZ2V0KCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybURlc3Ryb3ko
KQoreworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvV0soY29uc3QgY2hh
ciogc3RyaW5nKQoreworICAgIHJldHVybiBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4oQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSk7Cit9CisKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworICAgIC8vIEZJWE1F
OiBGSVhNRSEgTk8gV0tDb250ZXh0U2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyBpbiBBUEkg
bGlzdAorICAgIC8vIEZJWE1FOiBNYWtlIERSVCBwYXNzIHdpdGggV2luZG93cyBuYXRpdmUgY29u
dHJvbHMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzI1NTkyPgorICAgIC8vIFdLQ29udGV4dFNldFNo
b3VsZFBhaW50TmF0aXZlQ29udHJvbHMobV9jb250ZXh0LmdldCgpLCBmYWxzZSk7CisKKyAgICBX
S0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUobV9jb250
ZXh0LmdldCgpLCB0b1dLKHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50TmFtZSkuZ2V0KCkpOworfQor
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wmIGNvbmRpdGlvbiwg
V1RGOjpTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgUnVuTG9vcFJlc3VsdCByZXN1bHQgPSBydW5S
dW5Mb29wVW50aWwoY29uZGl0aW9uLCB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVudCwgdGltZW91dC5z
ZWNvbmRzKCkpOworICAgIGlmIChyZXN1bHQgPT0gVGltZWRPdXQgfHwgcmVzdWx0ID09IENvbmRp
dGlvblNhdGlzZmllZCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChyZXN1bHQgPT0gT2Jq
ZWN0U2lnbmFsZWQpOworCisgICAgLy8gVGhlIHdlYiBwcm9jZXNzIGlzIGNyYXNoaW5nLiBBIGNy
YXNoIGxvZyBtaWdodCBiZSBiZWluZyBzYXZlZCwgd2hpY2ggY2FuIHRha2UgYSBsb25nCisgICAg
Ly8gdGltZSwgYW5kIHdlIGRvbid0IHdhbnQgdG8gdGltZSBvdXQgd2hpbGUgdGhhdCBoYXBwZW5z
LgorCisgICAgLy8gRmlyc3QsIGxldCB0aGUgdGVzdCBoYXJuZXNzIGtub3cgdGhpcyBoYXBwZW5l
ZCBzbyBpdCB3b24ndCB0aGluayB3ZSd2ZSBodW5nLiBCdXQKKyAgICAvLyBtYWtlIHN1cmUgd2Ug
ZG9uJ3QgZXhpdCBqdXN0IHlldCEKKyAgICBtX3Nob3VsZEV4aXRXaGVuV2ViUHJvY2Vzc0NyYXNo
ZXMgPSBmYWxzZTsKKyAgICBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICBtX3Nob3VsZEV4aXRXaGVu
V2ViUHJvY2Vzc0NyYXNoZXMgPSB0cnVlOworCisgICAgLy8gVGhlbiBzcGluIGEgcnVuIGxvb3Ag
dW50aWwgaXQgZmluaXNoZXMgY3Jhc2hpbmcgdG8gZ2l2ZSB0aW1lIGZvciBhIGNyYXNoIGxvZyB0
byBiZSBzYXZlZC4gSWYKKyAgICAvLyBpdCB0YWtlcyB0b28gbG9uZyBmb3IgYSBjcmFzaCBsb2cg
dG8gYmUgc2F2ZWQsIHdlJ2xsIGp1c3QgZ2l2ZSB1cC4KKyAgICBib29sIG5ldmVyU2V0Q29uZGl0
aW9uID0gZmFsc2U7CisgICAgcmVzdWx0ID0gcnVuUnVuTG9vcFVudGlsKG5ldmVyU2V0Q29uZGl0
aW9uLCAwLCBtYXhpbXVtV2FpdEZvcldlYlByb2Nlc3NUb0NyYXNoKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0ID09IFRpbWVkT3V0KTsKKyAgICBleGl0KDEpOworfQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybURpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUGF0aCgpCit7CisgICAgbV9pbmplY3Rl
ZEJ1bmRsZVBhdGguYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoSU5KRUNURURf
QlVORExFX0RMTF9OQU1FKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVU
ZXN0UGx1Z2luRGlyZWN0b3J5KCkKK3sKKyAgICBUQ0hBUiBleGVQYXRoW01BWF9QQVRIXTsKKyAg
ICBpZiAoOjpHZXRNb2R1bGVGaWxlTmFtZShudWxscHRyLCBleGVQYXRoLCBNQVhfUEFUSCkpIHsK
KyAgICAgICAgVENIQVIgZHJpdmVbX01BWF9EUklWRV07CisgICAgICAgIFRDSEFSIGRpcltfTUFY
X0RJUl07CisgICAgICAgIF90c3BsaXRwYXRoKGV4ZVBhdGgsIGRyaXZlLCBkaXIsIG51bGxwdHIs
IG51bGxwdHIpOworCisgICAgICAgIFRDSEFSIGJ1bmRsZURpcltNQVhfUEFUSF07CisgICAgICAg
IF90Y3NuY3B5KGJ1bmRsZURpciwgZHJpdmUsIE1BWF9QQVRIKTsKKyAgICAgICAgX3Rjc25jYXQo
YnVuZGxlRGlyLCBkaXIsIE1BWF9QQVRIIC0gX01BWF9EUklWRSk7CisKKyAgICAgICAgY2hhciBi
dW5kbGVEaXJfdXRmW01BWF9QQVRIXTsKKyAgICAgICAgOjpXaWRlQ2hhclRvTXVsdGlCeXRlKENQ
X1VURjgsIDAsIGJ1bmRsZURpciwgLTEsIGJ1bmRsZURpcl91dGYsIE1BWF9QQVRILCBudWxscHRy
LCBudWxscHRyKTsKKworICAgICAgICBtX3Rlc3RQbHVnaW5EaXJlY3RvcnkuYWRvcHQoV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVuZGxlRGlyX3V0ZikpOworICAgIH0KK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZvcm1XZWJWaWV3KikKK3sKKyAgICAvLyBG
SVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHNob3dNb2RhbERpYWxvZy4KKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCitXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtQ29udGV4dCgpCit7CisgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKworY29u
c3QgY2hhciogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0KGNvbnN0IFRlc3RJ
bnZvY2F0aW9uJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBs
YXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25zdCBzdGQ6
OnN0cmluZyYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRU
ZXN0UnVubmVyUHJlZml4LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRl
c3RSdW5uZXJQcmVmaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li43NGM3NGNlOTVjYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d2luL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguY3BwCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJXZWJLaXRUZXN0
UnVubmVyUHJlZml4LmgiCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9t
YWluLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL21haW4uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZmQ5ZjQ5MGZiZgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL21haW4uY3BwCkBAIC0wLDAgKzEsMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0Q29udHJv
bGxlci5oIgorCitleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBpbnQgV0lOQVBJIGRs
bExhdW5jaGVyRW50cnlQb2ludChpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAg
IFdUUjo6VGVzdENvbnRyb2xsZXIgY29udHJvbGxlcihhcmdjLCBhcmd2KTsKKyAgICByZXR1cm4g
MDsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354192</attachid>
            <date>2018-11-07 18:36:11 -0800</date>
            <delta_ts>2018-11-07 19:28:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wincairo-testrunner-impl-1108.patch</filename>
            <type>text/plain</type>
            <size>88669</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjYjRlZmIyLi41YzYyM2Zk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTgtMTEtMDcgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IFdlYktpdFRlc3RSdW5uZXIgZm9yIFdpbkNhaXJvCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyNTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlOgorCiAyMDE4LTExLTA1ICBEb21pbmlrIEluZnVlaHIgIDxkaW5mdWVo
ckBpZ2FsaWEuY29tPgogCiAgICAgICAgIEVuYWJsZSBMTEludCBvbiBBUk12Ny9MaW51eApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA4ZDJmNDk0Li5iMDZiMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4
LTExLTA3ICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBXZWJLaXRUZXN0UnVubmVyIGZvciBXaW5DYWlybworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MjU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToK
KwogMjAxOC0xMS0wNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjIzMDUyMyk6IENhcHMgbG9jayBpbmRpY2F0b3Igbm90IHNob3du
IGluIHBhc3N3b3JkIGZpZWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAzYWViNmE0Li4y
MTExMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTE5MCw2ICsxOTAsNyBAQCBXRUJL
SVRfV1JBUF9TT1VSQ0VMSVNUKCR7V2ViS2l0X1NPVVJDRVN9KQogc2V0KFdlYktpdF9GT1JXQVJE
SU5HX0hFQURFUlNfRElSRUNUT1JJRVMKICAgICBTaGFyZWQvQVBJL2MKIAorICAgIFNoYXJlZC9B
UEkvYy9jYWlybwogICAgIFNoYXJlZC9BUEkvYy9jZgogICAgIFNoYXJlZC9BUEkvYy93aW4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dpbi5jbWFrZQppbmRleCBmMjJmM2YxLi4wODFkYWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5j
bWFrZQpAQCAtODQsNiArODQsNyBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1BVQkxJQ19TVUZG
SVhfTElTVCBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9XRUJHTCBQVUJMSUMgT04pCisgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0FDQ0VTU0lCSUxJVFkgUFJJVkFURSBPTikKIAogICAgICMgRklYTUU6IElt
cGxlbWVudCBwbHVnaW4gcHJvY2VzcyBvbiBNb2Rlcm4gV2ViS2l0LiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MzEzCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgUFJJVkFURSBPRkYpCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDA5YmQ0Yy4u
MmQwNDlkYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3MiBAQAorMjAxOC0xMS0wNyAgVGFrYXNoaSBLb21vcmkgIDxUYWthc2hp
LktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViS2l0VGVzdFJ1bm5lciBm
b3IgV2luQ2Fpcm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4OTI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXR0
ZXN0cnVubmVyOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHA6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAg
ICAoV1RSOjpyYW5nZVRvU3RyKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpk
dW1wRE9NQXNXZWJBcmNoaXZlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVt
ZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Ns
b3NlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0
ZWRDaGlsZEF0SW5kZXggY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRy
ZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRl
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEFycmF5QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9y
dGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZU5hbWVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24pOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24gY29uc3QpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6eSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptYXhWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1ByZXNzQWN0aW9uU3VwcG9ydGVkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3JlbWVudEFjdGlvblN1cHBvcnRl
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQgY29uc3QpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQgY29uc3QpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZE9wdGlvbkFj
dGl2ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhw
YW5kZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0No
ZWNrZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lu
ZGV0ZXJtaW5hdGUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoaWVyYXJjaGljYWxMZXZlbCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNwZWFrQXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhSXNHcmFiYmVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXJpYURyb3BFZmZlY3RzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGluZUZvckluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cmFuZ2VGb3JMaW5lKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmFuZ2VGb3JQb3NpdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFBy
ZWRpY2F0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycyk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxz
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVh
ZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93Q291bnQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5UYWJsZSk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIgY29u
c3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9s
bGJhciBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0
U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjppbmNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNy
ZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZCBjb25zdCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdElu
ZGV4IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3Zl
U2VsZWN0aW9uQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNsZWFyU2VsZWN0ZWRDaGlsZHJlbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSBjb25zdCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSBjb25zdCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSBjb25zdCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlIGNv
bnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlIGNv
bnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4g
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNl
ZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3Jl
ZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2luZ2xl
TGluZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVs
dGlMaW5lIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFz
UG9wdXAgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtl
Rm9jdXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0
aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9u
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9u
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJrZXJS
YW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRp
b25zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xv
YmFsUG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxU
b01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNEZXNj
cmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNs
YXNzTGlzdCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNo
YXJhY3RlckF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
d29yZEF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
ZUF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVu
Y2VBdE9mZnNldCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93
aW4vQWN0aXZhdGVGb250c1dpbi5jcHA6IENvcGllZCBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcC4KKyAgICAgICAgKFdUUjo6
YWN0aXZhdGVGb250cyk6CisgICAgICAgIChXVFI6Omluc3RhbGxGYWtlSGVsdmV0aWNhKToKKyAg
ICAgICAgKFdUUjo6dW5pbnN0YWxsRmFrZUhlbHZldGljYSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4uY3BwOiBDb3BpZWQg
ZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
TWFpbi5jcHAuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwbGF0Zm9ybUluaXRpYWxp
emUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RS
dW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5jcHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZp
eC5oOiBDb3BpZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTWFpbi5jcHAuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6IENvcGllZCBmcm9tIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcC4KKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKToKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
aW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVkZWQpOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjppbnN0YWxsRmFrZUhlbHZldGljYSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Bs
YXRmb3JtV2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpjcmVhdGVUZXN0VVJMKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcDogQWRkZWQuCisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5Ojp+RXZlbnRTZW5kZXJQcm94eSk6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnkpOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpjb250aW51b3VzTW91
c2VTY3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJk
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcDogQWRkZWQuCisgICAg
ICAgIChXVFI6OnJlZ2lzdGVyV2luZG93Q2xhc3MpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdl
YlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6
flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVzaXpl
VG8pOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UpOgorICAgICAgICAoV1RS
OjpQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
Ojp3aW5kb3dGcmFtZSk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93
RnJhbWUpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmRpZEluaXRpYWxpemVDbGll
bnRzKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxk
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRUb1dpbmRvdyk6CisgICAgICAg
IChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlRnJvbVdpbmRvdyk6CisgICAgICAgIChXVFI6
OlBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93SXNLZXkpOgorICAgICAgICAoV1RSOjpQbGF0Zm9y
bVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoV1RSOjpnZW5l
cmF0ZUNhaXJvU3VyZmFjZUZyb21CaXRtYXApOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6
OmNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OnNldE5hdmlnYXRpb25HZXN0dXJlc0VuYWJsZWQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9y
bVdlYlZpZXc6OmZvcmNlV2luZG93RnJhbWVzQ2hhbmdlZCk6CisgICAgICAgIChXVFI6OlBsYXRm
b3JtV2ViVmlldzo6ZHJhd3NCYWNrZ3JvdW5kIGNvbnN0KToKKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3OjpzZXREcmF3c0JhY2tncm91bmQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OmV4Y2Vw
dGlvbkZpbHRlcik6CisgICAgICAgIChXVFI6OnJ1blJ1bkxvb3BVbnRpbCk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnNldEhpZGRlbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1QcmVm
ZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybURlc3Ryb3kp
OgorICAgICAgICAoV1RSOjp0b1dLKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1SdW5VbnRpbCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bURpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpp
bml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmluaXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnJ1bk1vZGFsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQ29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUxpYnJh
cnlQYXRoRm9yVGVzdGluZyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNvbmZpZ3VyZVZpZXdGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmljVGVzdE9wdGlvbnNGb3JUZXN0
IGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVubmVy
UHJlZml4LmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vbWFpbi5j
cHA6IENvcGllZCBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVNYWluLmNwcC4KKyAgICAgICAgKGRsbExhdW5jaGVyRW50cnlQb2ludCk6CisK
IDIwMTgtMTEtMDYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBGZWF0dXJlIGZsYWdzIG5vdCBwcmVzZW50IGZvciBWaXN1YWwgU3R1ZGlvIHdoZW4gdXNp
bmcgYnVpbGQtd2Via2l0CmRpZmYgLS1naXQgYS9Ub29scy9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Rv
b2xzL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGU0ZTJlN2EuLmFjZmQ5ODUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1Rvb2xzL1BsYXRmb3JtV2luLmNtYWtlCkBA
IC00LDMgKzQsNyBAQCBhZGRfc3ViZGlyZWN0b3J5KEltYWdlRGlmZikKIGlmIChFTkFCTEVfV0VC
S0lUX0xFR0FDWSkKICAgICBhZGRfc3ViZGlyZWN0b3J5KE1pbmlCcm93c2VyL3dpbikKIGVuZGlm
ICgpCisKK2lmIChFTkFCTEVfV0VCS0lUKQorICAgIGFkZF9zdWJkaXJlY3RvcnkoV2ViS2l0VGVz
dFJ1bm5lcikKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dHRlc3RydW5uZXIgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKaW5kZXgg
MTc3MzdmYS4uMTg2YTQ1ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0
ZXN0cnVubmVyCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgpAQCAt
NjIsOCArNjIsOCBAQCBjaGRpciAiVG9vbHMvV2ViS2l0VGVzdFJ1bm5lciIgb3IgZGllOwogbXkg
JHJlc3VsdDsKIGlmIChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgewogICAgICRyZXN1bHQgPSBidWls
ZFhDb2RlUHJvamVjdCgiV2ViS2l0VGVzdFJ1bm5lciIsICRjbGVhbiwgWGNvZGVPcHRpb25zKCks
IEBBUkdWKTsKLX0gZWxzaWYgKGlzR3RrKCkgfHwgaXNXUEUoKSB8fCBpc1BsYXlTdGF0aW9uKCkp
IHsKLSAgICAjIEdUSyssIFdQRSwgYW5kIFBsYXlTdGF0aW9uIGJ1aWxkIGV2ZXJ5dGhpbmcgaW4g
b25lIHNob3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KK30gZWxzaWYgKGlzR3Rr
KCkgfHwgaXNXUEUoKSB8fCBpc1BsYXlTdGF0aW9uKCkgfHwgaXNBbnlXaW5kb3dzKCkpIHsKKyAg
ICAjIEdUSyssIFdQRSwgUGxheVN0YXRpb24sIGFuZCBXaW5kb3dzIGJ1aWxkIGV2ZXJ5dGhpbmcg
aW4gb25lIHNob3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KICAgICAkcmVzdWx0
ID0gMDsKIH0gZWxzZSB7CiAgICAgZGllICJXZWJLaXRUZXN0UnVubmVyIGlzIG5vdCBzdXBwb3J0
ZWQgb24gdGhpcyBwbGF0Zm9ybS5cbiI7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4
dAppbmRleCBmYmRmZmRhLi43NTAwOWJiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0
cy50eHQKQEAgLTEyOSw2ICsxMjksOSBAQCBpZiAoQ09NUElMRVJfSVNfR0NDX09SX0NMQU5HKQog
ICAgIFdFQktJVF9BRERfVEFSR0VUX0NYWF9GTEFHUyhXZWJLaXRUZXN0UnVubmVyIC1Xbm8tdW51
c2VkLXBhcmFtZXRlcikKIGVuZGlmICgpCiAKLWlmIChOT1QgQVBQTEUpCitpZiAoV0lOMzIpCisg
ICAgYWRkX2RlcGVuZGVuY2llcyhXZWJLaXRUZXN0UnVubmVyTGliIFdlYktpdFRlc3RSdW5uZXJC
aW5kaW5ncykKKyAgICBhZGRfZGVwZW5kZW5jaWVzKFdlYktpdFRlc3RSdW5uZXIgV2ViS2l0VGVz
dFJ1bm5lckxpYikKK2Vsc2VpZiAoTk9UIEFQUExFKQogICAgIGFkZF9kZXBlbmRlbmNpZXMoV2Vi
S2l0ICR7Rm9yd2FyZGluZ0hlYWRlcnNGb3JXZWJLaXRUZXN0UnVubmVyX05BTUV9KQogZW5kaWYg
KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKaW5kZXggOWQxZTYw
Yi4uYmZkYWQ5NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgK
QEAgLTI0LDggKzI0LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEV2ZW50U2VuZGVyUHJveHlfaAotI2RlZmluZSBFdmVudFNlbmRlclByb3h5
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTE0NCw5ICsxNDMsMTAgQEAgcHJpdmF0ZToKICAgICB1aW50MzJfdCBt
X21vdXNlQnV0dG9uc0N1cnJlbnRseURvd24geyAwIH07CiAgICAgVmVjdG9yPHN0cnVjdCB3cGVf
aW5wdXRfdG91Y2hfZXZlbnRfcmF3PiBtX3RvdWNoRXZlbnRzOwogICAgIEhhc2hTZXQ8dW5zaWdu
ZWQsIERlZmF1bHRIYXNoPHVuc2lnbmVkPjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+IG1fdXBkYXRlZFRvdWNoRXZlbnRzOworI2VsaWYgUExBVEZP
Uk0oV0lOKQorICAgIHVpbnQzMl90IG1fYnV0dG9uU3RhdGU7CisgICAgdWludDMyX3QgbV9tb3Vz
ZUJ1dHRvbnNDdXJyZW50bHlEb3duIHsgMCB9OwogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXVFIKLQotI2VuZGlmIC8vIEV2ZW50U2VuZGVyUHJveHlfaApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcAppbmRleCA3YjgxNjc2Li45YWNmODU4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjplbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkKCkKICAgICByZXR1cm4gV0tBY2Nl
c3NpYmlsaXR5RW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgpOwogfQogCi0jaWYgIVBMQVRG
T1JNKEdUSykgJiYgIVBMQVRGT1JNKFdQRSkKKyNpZiBQTEFURk9STShDT0NPQSkKIFJlZjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQo
KQogewogICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLnBhZ2UoKS0+cGFnZSgpOwpAQCAtMTAwLDQgKzEwMCwzIEBAIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKSB7
IHJldHVyCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCmluZGV4IDE5ZGMwY2YuLmE0ZjY4MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcApAQCAtNzksNyArNzksNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvckVsZW1lbnQoKSB7CiAj
ZW5kaWYKICAgICAKIC8vIFVuc3VwcG9ydGVkIG1ldGhvZHMgb24gdmFyaW91cyBwbGF0Zm9ybXMu
IEFzIHRoZXkncmUgaW1wbGVtZW50ZWQgb24gb3RoZXIgcGxhdGZvcm1zIHRoaXMgbGlzdCBzaG91
bGQgYmUgbW9kaWZpZWQuCi0jaWYgKCFQTEFURk9STShHVEspICYmICFQTEFURk9STShXUEUpKSB8
fCAhSEFWRShBQ0NFU1NJQklMSVRZKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCAhSEFWRShBQ0NF
U1NJQklMSVRZKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVsbHB0cjsgfQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNldChpbnQp
IHsgcmV0dXJuIG51bGxwdHI7IH0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50KSB7IHJldHVybiBudWxscHRyOyB9CkBAIC0x
MDcsNCArMTA3LDMgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwcmV2aW91c1NlbnRlbmNlU3RhcnRUZXgKICNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCBiMDBjNTQ5Li5m
MjRkY2U4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMzYyLDEwICszNjIsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZ2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdS
ZWYsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpIGNvbnN0OwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShX
UEUpCiAgICAgdm9pZCBnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4mKTsKICAgICB2b2lkIGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBs
ZW5ndGgpOwotI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCiAgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBtX25vdGlmaWNhdGlvbkhhbmRsZXI7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
TWFpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlTWFpbi5jcHAKaW5kZXggNGYxMjcyMi4uZGZhM2QzMSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVN
YWluLmNwcApAQCAtMjQsMTEgKzI0LDE1IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKwogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRs
ZUluaXRpYWxpemUuaD4KIAorI2lmIGRlZmluZWQoV0lOMzIpCitleHRlcm4gIkMiIF9fZGVjbHNw
ZWMoZGxsZXhwb3J0KQorI2Vsc2UKIGV4dGVybiAiQyIKKyNlbmRpZgogdm9pZCBXS0J1bmRsZUlu
aXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSkKIHsKICAgICBXVFI6OkluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5pbml0aWFsaXpl
KGJ1bmRsZSwgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
aW5kZXggODBhMGE0OC4uMzE4MGNmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtMjUs
MTEgKzI1LDExIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVBhZ2UuaCIKLQogI2luY2x1ZGUgIkFjdGl2YXRlRm9udHMuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgIldl
YkNvcmVUZXN0U3VwcG9ydC5oIgorCiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tBcnJheS5oPgpAQCAt
NTAsNyArNTAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNpZiBVU0UoQ0YpCisjaWYgVVNFKENGKSAmJiAh
UExBVEZPUk0oV0lOX0NBSVJPKQogI2luY2x1ZGUgIldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgog
I2VuZGlmCiAKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgcmFuZ2VUb1N0
cihXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZAogewog
ICAgIGlmICghcmFuZ2VSZWYpCiAgICAgICAgIHJldHVybiAiKG51bGwpIjsKLSAKKwogICAgIFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CiAK
ICAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2Ny
aXB0Q29udGV4dEZvcldvcmxkKGZyYW1lLCB3b3JsZCk7CkBAIC04NzksNyArODc5LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBBbGxGcmFtZXNUZXh0KFN0cmluZ0J1aWxkZXImIHN0
cmluZ0J1aWxkZXIpCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNo
aXZlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIp
CiB7Ci0jaWYgVVNFKENGKQorI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykKICAg
ICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHdrRGF0YSA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNv
cHlXZWJBcmNoaXZlKGZyYW1lKSk7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0g
YWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgV0tEYXRhR2V0Qnl0ZXMod2tEYXRhLmdldCgpKSwgV0tE
YXRhR2V0U2l6ZSh3a0RhdGEuZ2V0KCkpKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZlN0cmluZyA9IGFkb3B0Q0YoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9t
V2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBhNjRkODU2Li5jZDgz
YjUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigp
CiAgICAgLCBtX2RhdGFiYXNlTWF4UXVvdGEoLTEpCiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0RW5h
YmxlZChmYWxzZSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbihhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSkpCi0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCisjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgICwgbV93YWl0VG9EdW1wV2F0Y2hk
b2dUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZUZXN0UnVubmVyOjp3YWl0VG9EdW1wV2F0
Y2hkb2dUaW1lckZpcmVkKQogI2VuZGlmCiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDJkOTkyYzEuLmYyZGYwZTkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgogdHlwZWRlZiBSZXRhaW5QdHI8Q0ZSdW5M
b29wVGltZXJSZWY+IFBsYXRmb3JtVGltZXJSZWY7Ci0jZWxpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkKKyNlbHNlCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIG5hbWVzcGFjZSBX
VFIgewogY2xhc3MgVGVzdFJ1bm5lcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjg3ZGU2
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisKKyNpZiBI
QVZFKEFDQ0VTU0lCSUxJVFkpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vz
c2libGVFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG51
bGxwdHIpOworfQorCitSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUobnVsbHB0cik7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFs
dWVSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVy
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50V2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmU2MGVjYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cApAQCAtMCwwICsxLDk3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oIgorCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV1RSIHsKKworQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Pj4mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mLCB1bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVu
Q291bnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVt
ZW50QXRQb2ludChpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9m
Q2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdElu
ZGV4KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5k
ZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4
KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb3dBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit1bnNp
Z25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJv
d0F0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2Vk
VUlFbGVtZW50cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZXNPZkRvY3VtZW50TGlua3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50
QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNWYWx1ZVJlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1ZhbHVlUmVmIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29s
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVOYW1lcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJvbGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
dWJyb2xlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9s
ZURlc2NyaXB0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGl0bGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpkZXNjcmlwdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om9yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6eCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
ZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3
aWR0aCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91
YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNsaWNrUG9pbnRYKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZh
bHVlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3Vi
bGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUHJl
c3NBY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5jcmVtZW50QWN0
aW9uU3VwcG9ydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3JlbWVudEFjdGlvblN1
cHBvcnRlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFbmFibGVkKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Zv
Y3VzZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQ2hlY2tlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmRldGVybWlu
YXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworaW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yTGluZShpbnQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJhbmdlRm9yUG9zaXRpb24oaW50LCBpbnQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKHVu
c2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3RyaW5nRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UodW5z
aWduZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmlu
Z1JhbmdlSXNNaXNzcGVsbGVkKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dWlFbGVtZW50Q291bnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgYm9vbCwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYsIGJv
b2wsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqLCBib29sLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZiwgYm9vbCwgYm9vbCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0VGV4dFdpdGhDcml0
ZXJpYShKU0NvbnRleHRSZWYsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmLCBKU1N0cmluZ1JlZiwg
SlNTdHJpbmdSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd3Mo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZWaXNpYmxlQ2VsbHMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZIZWFkZXIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dDb3Vu
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkNvdW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5k
ZXhJblRhYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5k
ZXhSYW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkluZGV4UmFuZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNj
cm9sbGJhcigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2UoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZW1lbnQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01l
bnUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJlc3MoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KHVuc2lnbmVkIGluZGV4KSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2xlYXJTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFjaykK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNl
bGVjdGFibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4oKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzQ29sbGFwc2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ln
bm9yZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2luZ2xlTGluZSgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aUxpbmUoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9j
dXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGFrZVNlbGVjdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGRTZWxlY3Rpb24oKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2Vs
ZWN0aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VGb3JFbGVtZW50KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91
c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIoQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqLCBB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQsIGludCwg
aW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXJGb3JCb3VuZHMoaW50LCBpbnQsIGludCwgaW50KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZv
clBvaW50KGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSosIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUoSlNTdHJpbmdSZWYs
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5k
ZXhGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5k
ZXgoaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RhcnRUZXh0TWFya2VyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2V0U2VsZWN0ZWRWaXNpYmxlVGV4dFJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xs
VG9HbG9iYWxQb2ludChpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9j
dXMoaW50LCBpbnQsIGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdXBwb3J0ZWRB
Y3Rpb25zKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cGF0aERlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2Ny
aXB0aW9uKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2xhc3NMaXN0KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQoaW50KQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lQXRPZmZzZXQoaW50KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZW50ZW5jZUF0T2Zmc2V0KGludCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9IC8vIG5h
bWVzcGFjZSAgV1RGCisKKyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY3RpdmF0ZUZvbnRz
V2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjdGl2
YXRlRm9udHNXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YzE2
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL3dpbi9BY3RpdmF0ZUZvbnRzV2luLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBY3RpdmF0ZUZvbnRzLmgiCisKK25hbWVzcGFjZSBXVFIgeworCit2b2lk
IGFjdGl2YXRlRm9udHMoKQoreworfQorCit2b2lkIGluc3RhbGxGYWtlSGVsdmV0aWNhKFdLU3Ry
aW5nUmVmKQoreworfQorCit2b2lkIHVuaW5zdGFsbEZha2VIZWx2ZXRpY2EoKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDA4MWZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5kbGVXaW4u
Y3BwCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlLmgiCisKK25hbWVzcGFjZSBXVFIgeworCit2b2lkIEluamVjdGVkQnVuZGxlOjpwbGF0Zm9y
bUluaXRpYWxpemUoV0tUeXBlUmVmKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5u
ZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL3dpbi9UZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZWNmMzQKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVySW5qZWN0
ZWRCdW5kbGVQcmVmaXguY3BwCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgIlRlc3RSdW5uZXJJbmplY3RlZEJ1
bmRsZVByZWZpeC5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS93aW4vVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4LmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQ
cmVmaXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGZlNDFjCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4v
VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4LmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyN1bmRlZiBXRUJDT1JFX0VYUE9SVAorI2RlZmluZSBXRUJDT1JFX0VYUE9SVCBXVEZf
SU1QT1JUX0RFQ0xBUkFUSU9OCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjI1ZmJmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcApAQCAtMCww
ICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0UnVubmVyLmgiCisKKyNpbmNs
dWRlICJBY3RpdmF0ZUZvbnRzLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU1N0cmluZ1JlZikK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRl
c3RSdW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKCkKK3sKKyAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmludmFsaWRh
dGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcigpCit7CisgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dU
aW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
K3sKK30KKwordm9pZCBUZXN0UnVubmVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGlt
ZXJJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KG1f
dGltZW91dCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6aW5zdGFsbEZha2VIZWx2ZXRpY2EoSlNT
dHJpbmdSZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICBXVFI6Omluc3RhbGxGYWtlSGVsdmV0aWNh
KHRvV0soY29uZmlndXJhdGlvbikuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGNlMzY4ZmYuLmRiNDE5
YzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgUGxhdGZvcm1XZWJWaWV3X2gKLSNkZWZpbmUgUGxhdGZvcm1XZWJWaWV3X2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKIApAQCAtNDksMTMgKzQ4LDIwIEBAIHR5
cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBsYXRmb3JtSW1hZ2U7CiB0eXBlZGVmIHN0cnVj
dCBfR3RrV2lkZ2V0IEd0a1dpZGdldDsKIHR5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3
OwogdHlwZWRlZiBHdGtXaWRnZXQqIFBsYXRmb3JtV2luZG93OwotdHlwZWRlZiBjYWlyb19zdXJm
YWNlX3QgKlBsYXRmb3JtSW1hZ2U7CiAjZWxpZiBQTEFURk9STShXUEUpCiBuYW1lc3BhY2UgV1BF
VG9vbGluZ0JhY2tlbmRzIHsKIGNsYXNzIEhlYWRsZXNzVmlld0JhY2tlbmQ7CiB9CiB0eXBlZGVm
IFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgV1BFVG9vbGluZ0JhY2tlbmRzOjpI
ZWFkbGVzc1ZpZXdCYWNrZW5kKiBQbGF0Zm9ybVdpbmRvdzsKKyNlbGlmIFBMQVRGT1JNKFdJTikK
KyNpbmNsdWRlIDxjYWlyby5oPgorY2xhc3MgVGVzdFJ1bm5lcldpbmRvdzsKK3R5cGVkZWYgSFdO
RCBQbGF0Zm9ybVdpbmRvdzsKK3R5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OworI2Vu
ZGlmCisKKyNpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1J
bWFnZTsKICNlbmRpZgogCkBAIC0xMjUsNSArMTMxLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdUUgotCi0jZW5kaWYgLy8gUGxhdGZvcm1XZWJWaWV3X2gKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XaW4uY21ha2UgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmJlZTgxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEsODYgQEAKK3NldChXZWJLaXRUZXN0UnVubmVy
TGliX1NPVVJDRVMKKyAgICAke1dlYktpdFRlc3RSdW5uZXJfU09VUkNFU30KKyAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0RJUn0vY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKKyAgICB3aW4v
RXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKKyAgICB3aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAor
ICAgIHdpbi9UZXN0Q29udHJvbGxlcldpbi5jcHAKKyAgICB3aW4vbWFpbi5jcHAKKykKKworc2V0
KFdlYktpdFRlc3RSdW5uZXJfU09VUkNFUworICAgICR7VE9PTFNfRElSfS93aW4vRExMTGF1bmNo
ZXIvRExMTGF1bmNoZXJNYWluLmNwcAorKQorCitsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVy
SW5qZWN0ZWRCdW5kbGVfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURC
VU5ETEVfRElSfS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHAKKyAgICAke1dFQktJVF9URVNUUlVO
TkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL0luamVjdGVkQnVuZGxlV2luLmNwcAorICAgICR7
V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS93aW4vVGVzdFJ1bm5lcldpbi5j
cHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyV2luLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNU
RURCVU5ETEVfRElSfS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKKykKKworCits
aXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICBjYWly
bworICAgIHdpbgorICAgICR7Q0FJUk9fSU5DTFVERV9ESVJTfQorICAgICR7Rk9SV0FSRElOR19I
RUFERVJTX0RJUn0KKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0v
d2luCisgICAgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJLaXQvSW50ZXJmYWNlcworKQorCisK
K3NldChXZWJLaXRUZXN0UnVubmVyTGliX0xJQlJBUklFUworICAgICR7V2ViS2l0VGVzdFJ1bm5l
cl9MSUJSQVJJRVN9CisgICAgQ29tc3VwcHcKKyAgICBPbGVhY2MKKykKKworbGlzdChBUFBFTkQg
V2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVMKKyAgICBXVEYKKyAgICBXZWJLaXQKKykKKworc2V0
KFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9MSUJSQVJJRVMKKyAgICBXZWJDb3JlVGVz
dFN1cHBvcnQKKyAgICBXZWJLaXQKKykKKworCitsaXN0KFJFTU9WRV9JVEVNCisgICAgV2ViS2l0
VGVzdFJ1bm5lckxpYl9TT1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9CSU5ESU5HU19E
SVJ9L0pTV3JhcHBlci5jcHAKKykKK2xpc3QoUkVNT1ZFX0lURU0KKyAgICBXZWJLaXRUZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfQklORElO
R1NfRElSfS9KU1dyYXBwZXIuY3BwCispCisKK1dFQktJVF9BRERfUFJFQ09NUElMRURfSEVBREVS
KCJXZWJLaXRUZXN0UnVubmVyUHJlZml4LmgiCisgICAgIiR7V0VCS0lUX1RFU1RSVU5ORVJfRElS
fS93aW4vV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5jcHAiCisgICAgV2ViS2l0VGVzdFJ1bm5lckxp
Yl9TT1VSQ0VTCispCitXRUJLSVRfQUREX1BSRUNPTVBJTEVEX0hFQURFUigiVGVzdFJ1bm5lcklu
amVjdGVkQnVuZGxlUHJlZml4LmgiCisgICAgIiR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURC
VU5ETEVfRElSfS93aW4vVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4LmNwcCIKKyAgICBX
ZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUworKQorCitsaXN0KEFQUEVORAor
ICAgIFdlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
QklORElOR1NfRElSfS9KU1dyYXBwZXIuY3BwCispCitsaXN0KEFQUEVORAorICAgIFdlYktpdFRl
c3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9C
SU5ESU5HU19ESVJ9L0pTV3JhcHBlci5jcHAKKykKKworCitzZXQoQ01BS0VfU0hBUkVEX0xJTktF
Ul9GTEFHUyAiJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSAke01TVkNfUlVOVElNRV9MSU5L
RVJfRkxBR1N9IikKK2FkZF9saWJyYXJ5KFdlYktpdFRlc3RSdW5uZXJMaWIgU0hBUkVEICR7V2Vi
S2l0VGVzdFJ1bm5lckxpYl9TT1VSQ0VTfSkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhXZWJLaXRU
ZXN0UnVubmVyTGliICR7V2ViS2l0VGVzdFJ1bm5lckxpYl9MSUJSQVJJRVN9KQorCithZGRfZGVm
aW5pdGlvbnMoCisgICAgLURXSU5fQ0FJUk8KKyAgICAtRFVTRV9DT05TT0xFX0VOVFJZX1BPSU5U
CisgICAgLURfVU5JQ09ERQorKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCA4MTdmMGY0Li44NzBjNDI4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcApAQCAtNjgsNyArNjgsMTMgQEAKICNpbmNsdWRlIDxmc3RyZWFtPgog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZz4KKyNpZiBQTEFURk9STShXSU4p
CisjaW5jbHVkZSA8ZGlyZWN0Lmg+CisjZGVmaW5lIGdldGN3ZCBfZ2V0Y3dkCisjZGVmaW5lIFBB
VEhfTUFYIF9NQVhfUEFUSAorI2Vsc2UKICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgogI2lu
Y2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21OdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CkBAIC04NzIs
NyArODc4LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZh
bHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICAvLyBzb21lIG90aGVyIGNv
ZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVh
bnVwIHRvby4KICAgICByZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKG9wdGlvbnMp
OwogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oV1BFKQorI2lmICFQTEFURk9S
TShDT0NPQSkgJiYgIVBMQVRGT1JNKFdQRSkgJiYgIVBMQVRGT1JNKFdJTikKICAgICBXS1RleHRD
aGVja2VyQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKHRydWUpOwog
I2VuZGlmCiAKQEAgLTEwOTEsOCArMTA5NywxNSBAQCBzdGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVz
dFVSTChjb25zdCBjaGFyKiBwYXRoT3JVUkwpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiAwOwogCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGNvbnN0IGNoYXIgc2VwYXJhdG9yID0g
J1xcJzsKKyAgICBib29sIGlzQWJzb2x1dGVQYXRoID0gZmFsc2U7CisgICAgaWYgKHN0cmxlbihw
YXRoT3JVUkwpID49IDMgJiYgcGF0aE9yVVJMWzFdID09ICc6JyAmJiBwYXRoT3JVUkxbMl0gPT0g
c2VwYXJhdG9yKQorICAgICAgICBpc0Fic29sdXRlUGF0aCA9IHRydWU7CisjZWxzZQogICAgIGNv
bnN0IGNoYXIgc2VwYXJhdG9yID0gJy8nOwogICAgIGJvb2wgaXNBYnNvbHV0ZVBhdGggPSBwYXRo
T3JVUkxbMF0gPT0gc2VwYXJhdG9yOworI2VuZGlmCiAgICAgY29uc3QgY2hhciogZmlsZVByZWZp
eCA9ICJmaWxlOi8vIjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0
cmxlbihmaWxlUHJlZml4KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAppbmRleCBkODFlNThiLi41YTc4MDVjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtNDIsNyArNDIsMTIgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmg+CiAjaW5jbHVkZSA8Y2xpbWl0cz4KICNpbmNsdWRlIDxjc3Rk
aW8+CisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPGlvLmg+CisjZGVmaW5lIGlzYXR0eSBf
aXNhdHR5CisjZWxzZQogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaAppbmRleCA1Zjk4
OWZjLi5mMjAwMTE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXJQcmVmaXguaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RS
dW5uZXJQcmVmaXguaApAQCAtNDQsMyArNDQsNyBAQAogI3VuZGVmIGNhdGNoCiAjZW5kaWYKIAor
I2lmIE9TKFdJTkRPV1MpCisjdW5kZWYgV0VCQ09SRV9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9F
WFBPUlQgV1RGX0lNUE9SVF9ERUNMQVJBVElPTgorI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjAyNzA5MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcApAQCAtMCwwICsxLDEwOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmVudFNlbmRlclByb3h5LmgiCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKKy8v
IEtleSBldmVudCBsb2NhdGlvbiBjb2RlIGRlZmluZWQgaW4gRE9NIExldmVsIDMuCitlbnVtIEtl
eUxvY2F0aW9uQ29kZSB7CisgICAgRE9NS2V5TG9jYXRpb25TdGFuZGFyZCAgICAgID0gMHgwMCwK
KyAgICBET01LZXlMb2NhdGlvbkxlZnQgICAgICAgICAgPSAweDAxLAorICAgIERPTUtleUxvY2F0
aW9uUmlnaHQgICAgICAgICA9IDB4MDIsCisgICAgRE9NS2V5TG9jYXRpb25OdW1wYWQgICAgICAg
ID0gMHgwMworfTsKKworZW51bSBCdXR0b25TdGF0ZSB7CisgICAgQnV0dG9uUmVsZWFzZWQgPSAw
LAorICAgIEJ1dHRvblByZXNzZWQgPSAxCit9OworCitlbnVtIFBvaW50ZXJBeGlzIHsKKyAgICBW
ZXJ0aWNhbFNjcm9sbCA9IDAsCisgICAgSG9yaXpvbnRhbFNjcm9sbCA9IDEKK307CisKK0V2ZW50
U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9s
bGVyKQorICAgIDogbV90ZXN0Q29udHJvbGxlcih0ZXN0Q29udHJvbGxlcikKKyAgICAsIG1fdGlt
ZSgwKQorICAgICwgbV9sZWZ0TW91c2VCdXR0b25Eb3duKGZhbHNlKQorICAgICwgbV9jbGlja0Nv
dW50KDApCisgICAgLCBtX2NsaWNrVGltZSgwKQorICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVu
dE1vdXNlQnV0dG9uTm9CdXR0b24pCisgICAgLCBtX2J1dHRvblN0YXRlKEJ1dHRvblJlbGVhc2Vk
KQoreworfQorCitFdmVudFNlbmRlclByb3h5Ojp+RXZlbnRTZW5kZXJQcm94eSgpCit7Cit9CisK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVu
dE1vZGlmaWVycyB3a01vZGlmaWVycykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50TW9k
aWZpZXJzIHdrTW9kaWZpZXJzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8oZG91YmxlIHgsIGRvdWJsZSB5KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3Jv
bGxCeShpbnQgaG9yaXpvbnRhbCwgaW50IHZlcnRpY2FsKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGludCBob3Jpem9udGFsLCBpbnQgdmVydGljYWwsIGludCwgaW50KQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6Y29u
dGludW91c01vdXNlU2Nyb2xsQnkoaW50LCBpbnQsIGJvb2wpCit7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6bGVhcEZvcndhcmQoaW50IG1pbGxpc2Vjb25kcykKK3sKKyAgICBtX3RpbWUg
Kz0gbWlsbGlzZWNvbmRzIC8gMTAwMC4wOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Omtl
eURvd24oV0tTdHJpbmdSZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzLCB1
bnNpZ25lZCBsb2NhdGlvbikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRm
b3JtV2ViVmlld1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdl
YlZpZXdXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOTNiM2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdl
YlZpZXdXaW4uY3BwCkBAIC0wLDAgKzEsMjYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgorCisjaW5jbHVkZSA8SFduZERDLmg+CisjaW5jbHVkZSA8Y2Fp
cm8uaD4KKyNpbmNsdWRlIDxjc3RkaW8+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KKworCituYW1l
c3BhY2UgV1RSIHsKKworc3RhdGljIExQQ1dTVFIgaG9zdFdpbmRvd0NsYXNzTmFtZSA9IEwiV1RS
V2ViVmlld0hvc3RXaW5kb3ciOworc3RhdGljIExQQ1dTVFIgdGVzdFJ1bm5lcldpbmRvd05hbWUg
PSBMIldlYktpdFRlc3RSdW5uZXIiOworCitzdGF0aWMgdm9pZCByZWdpc3RlcldpbmRvd0NsYXNz
KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChpbml0
aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAg
IFdORENMQVNTRVhXIHduZENsYXNzID0gezB9OworICAgIHduZENsYXNzLmNiU2l6ZSA9IHNpemVv
Zih3bmRDbGFzcyk7CisgICAgd25kQ2xhc3Muc3R5bGUgPSBDU19IUkVEUkFXIHwgQ1NfVlJFRFJB
VzsKKyAgICB3bmRDbGFzcy5scGZuV25kUHJvYyA9IERlZldpbmRvd1Byb2M7CisgICAgd25kQ2xh
c3MuaEN1cnNvciA9IExvYWRDdXJzb3IoMCwgSURDX0FSUk9XKTsKKyAgICB3bmRDbGFzcy5oSW5z
dGFuY2UgPSBHZXRNb2R1bGVIYW5kbGUoMCk7CisgICAgd25kQ2xhc3MubHBzekNsYXNzTmFtZSA9
IGhvc3RXaW5kb3dDbGFzc05hbWU7CisKKyAgICA6OlJlZ2lzdGVyQ2xhc3NFeFcoJnduZENsYXNz
KTsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmlndXJh
dGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKKyAgICA6
IG1fd2luZG93KG51bGxwdHIpCisgICAgLCBtX3dpbmRvd0lzS2V5KHRydWUpCisgICAgLCBtX29w
dGlvbnMob3B0aW9ucykKK3sKKyAgICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CisKKyAgICBSRUNU
IHZpZXdSZWN0ID0gezAsIDAsIDgwMCwgNjAwfTsKKyAgICBtX3dpbmRvdyA9IDo6Q3JlYXRlV2lu
ZG93RXgoCisgICAgICAgIDAsCisgICAgICAgIGhvc3RXaW5kb3dDbGFzc05hbWUsCisgICAgICAg
IHRlc3RSdW5uZXJXaW5kb3dOYW1lLAorICAgICAgICBXU19PVkVSTEFQUEVEV0lORE9XLAorICAg
ICAgICAwLAorICAgICAgICAwLAorICAgICAgICB2aWV3UmVjdC5yaWdodCwKKyAgICAgICAgdmll
d1JlY3QuYm90dG9tLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICBHZXRNb2R1bGVI
YW5kbGUoMCksCisgICAgICAgIDApOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3UmVj
dCwgY29uZmlndXJhdGlvbiwgbV93aW5kb3cpOworICAgIFdLVmlld1NldElzSW5XaW5kb3cobV92
aWV3LCB0cnVlKTsKKworICAgIFNob3dXaW5kb3cobV93aW5kb3csIFNXX1NIT1cpOworfQorCitQ
bGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQoreworICAgIGlmICg6OklzV2luZG93
KG1fd2luZG93KSkKKyAgICAgICAgOjpEZXN0cm95V2luZG93KG1fd2luZG93KTsKK30KKwordm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWln
aHQsIFdlYlZpZXdTaXppbmdNb2RlKQoreworICAgIDo6U2V0V2luZG93UG9zKAorICAgICAgICBX
S1ZpZXdHZXRXaW5kb3cobV92aWV3KSwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAg
MCwKKyAgICAgICAgd2lkdGgsCisgICAgICAgIGhlaWdodCwKKyAgICAgICAgU1dQX05PTU9WRSB8
IFNXUF9OT1pPUkRFUiB8IFNXUF9OT0FDVElWQVRFIHwgU1dQX05PQ09QWUJJVFMpOworfQorCitX
S1BhZ2VSZWYgUGxhdGZvcm1XZWJWaWV3OjpwYWdlKCkKK3sKKyAgICByZXR1cm4gV0tWaWV3R2V0
UGFnZShtX3ZpZXcpOworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9jdXMoKQoreworICAg
IDo6U2V0Rm9jdXMoOjpXS1ZpZXdHZXRXaW5kb3cobV92aWV3KSk7Cit9CisKK1dLUmVjdCBQbGF0
Zm9ybVdlYlZpZXc6OndpbmRvd0ZyYW1lKCkKK3sKKyAgICBXS1JlY3Qgd2tGcmFtZSA9IHswfTsK
KyAgICBSRUNUIHI7CisKKyAgICBpZiAoOjpHZXRXaW5kb3dSZWN0KG1fd2luZG93LCAmcikpIHsK
KyAgICAgICAgd2tGcmFtZS5vcmlnaW4ueCA9IHIubGVmdDsKKyAgICAgICAgd2tGcmFtZS5vcmln
aW4ueSA9IHIudG9wOworICAgICAgICB3a0ZyYW1lLnNpemUud2lkdGggPSByLnJpZ2h0IC0gci5s
ZWZ0OworICAgICAgICB3a0ZyYW1lLnNpemUuaGVpZ2h0ID0gci5ib3R0b20gLSByLnRvcDsKKyAg
ICB9CisKKyAgICByZXR1cm4gd2tGcmFtZTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNl
dFdpbmRvd0ZyYW1lKFdLUmVjdCBmcmFtZSwgV2ViVmlld1NpemluZ01vZGUpCit7CisgICAgOjpT
ZXRXaW5kb3dQb3MoCisgICAgICAgIG1fd2luZG93LAorICAgICAgICAwLAorICAgICAgICBmcmFt
ZS5vcmlnaW4ueCwKKyAgICAgICAgZnJhbWUub3JpZ2luLnksCisgICAgICAgIGZyYW1lLnNpemUu
d2lkdGgsCisgICAgICAgIGZyYW1lLnNpemUuaGVpZ2h0LAorICAgICAgICBTV1BfTk9aT1JERVIg
fCBTV1BfTk9BQ1RJVkFURSB8IFNXUF9OT0NPUFlCSVRTKTsKK30KKwordm9pZCBQbGF0Zm9ybVdl
YlZpZXc6OmRpZEluaXRpYWxpemVDbGllbnRzKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OmFkZENocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6
cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojph
ZGRUb1dpbmRvdygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVGcm9tV2lu
ZG93KCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0lzS2V5KGJvb2wg
d2luZG93SXNLZXkpCit7CisgICAgbV93aW5kb3dJc0tleSA9IHdpbmRvd0lzS2V5OworfQorCit2
b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisK
KyNpZiBVU0UoQ0FJUk8pCitzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZW5lcmF0ZUNhaXJvU3Vy
ZmFjZUZyb21CaXRtYXAoQklUTUFQIGJpdG1hcFRhZykKK3sKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IGltYWdlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoCisgICAgICAgIENBSVJPX0ZPUk1B
VF9BUkdCMzIsCisgICAgICAgIGJpdG1hcFRhZy5ibVdpZHRoLAorICAgICAgICBiaXRtYXBUYWcu
Ym1IZWlnaHQpOworCisgICAgdW5zaWduZWQgY2hhciogc3JjID0gKHVuc2lnbmVkIGNoYXIqKWJp
dG1hcFRhZy5ibUJpdHM7CisgICAgaW50IHNyY1BpdGNoID0gYml0bWFwVGFnLmJtV2lkdGhCeXRl
czsKKyAgICB1bnNpZ25lZCBjaGFyKiBkc3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRh
KGltYWdlKTsKKyAgICBpbnQgZHN0UGl0Y2ggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJp
ZGUoaW1hZ2UpOworCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBiaXRtYXBUYWcuYm1IZWlnaHQ7
IHkrKykgeworICAgICAgICBtZW1jcHkoZHN0LCBzcmMsIGRzdFBpdGNoKTsKKyAgICAgICAgc3Jj
ICs9IHNyY1BpdGNoOworICAgICAgICBkc3QgKz0gZHN0UGl0Y2g7CisgICAgfQorCisgICAgcmV0
dXJuIGltYWdlOworfQorCitjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3JtV2ViVmlldzo6d2luZG93
U25hcHNob3RJbWFnZSgpCit7CisgICAgUkVDVCB3aW5kb3dSZWN0OworICAgIDo6R2V0Q2xpZW50
UmVjdChtX3dpbmRvdywgJndpbmRvd1JlY3QpOworICAgIExPTkcgd2lkdGggPSB3aW5kb3dSZWN0
LnJpZ2h0IC0gd2luZG93UmVjdC5sZWZ0OworICAgIExPTkcgaGVpZ2h0ID0gd2luZG93UmVjdC5i
b3R0b20gLSB3aW5kb3dSZWN0LnRvcDsKKworICAgIFdlYkNvcmU6OkhXbmREQyB3aW5kb3dEQyht
X3dpbmRvdyk7CisgICAgYXV0byBtZW1vcnlEQyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29t
cGF0aWJsZURDKHdpbmRvd0RDKSk7CisKKyAgICBCSVRNQVBJTkZPIGJpdG1hcEluZm8gPSB7MH07
CisgICAgV0tSZWN0IHdrRnJhbWUgPSB3aW5kb3dGcmFtZSgpOworICAgIGJpdG1hcEluZm8uYm1p
SGVhZGVyLmJpU2l6ZSA9IHNpemVvZihCSVRNQVBJTkZPSEVBREVSKTsKKyAgICBiaXRtYXBJbmZv
LmJtaUhlYWRlci5iaVdpZHRoID0gd2lkdGg7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlI
ZWlnaHQgPSAtaGVpZ2h0OworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpUGxhbmVzID0gMTsK
KyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaUJpdENvdW50ID0gMzI7CisgICAgYml0bWFwSW5m
by5ibWlIZWFkZXIuYmlDb21wcmVzc2lvbiA9IEJJX1JHQjsKKyAgICBiaXRtYXBJbmZvLmJtaUhl
YWRlci5iaVNpemVJbWFnZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKKworICAgIHZvaWQqIGJpdHNQ
b2ludGVyID0gMDsKKyAgICBhdXRvIGJpdG1hcCA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlRElC
U2VjdGlvbih3aW5kb3dEQywgJmJpdG1hcEluZm8sIERJQl9SR0JfQ09MT1JTLCAmYml0c1BvaW50
ZXIsIDAsIDApKTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICA6OlNlbGVjdE9iamVjdChtZW1vcnlEQy5nZXQoKSwgYml0bWFwLmdldCgpKTsKKyAgICA6
OkJpdEJsdChtZW1vcnlEQy5nZXQoKSwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAg
d2lkdGgsCisgICAgICAgIGhlaWdodCwKKyAgICAgICAgd2luZG93REMsCisgICAgICAgIDAsCisg
ICAgICAgIDAsCisgICAgICAgIFNSQ0NPUFkpOworCisgICAgQklUTUFQIGJpdG1hcFRhZyA9IHsw
fTsKKyAgICBHZXRPYmplY3QoYml0bWFwLmdldCgpLCBzaXplb2YoYml0bWFwVGFnKSwgJmJpdG1h
cFRhZyk7CisgICAgQVNTRVJUKGJpdG1hcFRhZy5ibUJpdHNQaXhlbCA9PSAzMik7CisKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVDYWlyb1N1cmZhY2VGcm9tQml0bWFwKGJpdG1hcFRhZyk7Cit9CisjZW5k
aWYKKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoZmxv
YXQpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXROYXZpZ2F0aW9uR2VzdHVyZXNF
bmFibGVkKGJvb2wpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb3JjZVdpbmRvd0Zy
YW1lc0NoYW5nZWQoKQoreworfQorCitib29sIFBsYXRmb3JtV2ViVmlldzo6ZHJhd3NCYWNrZ3Jv
dW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJW
aWV3OjpzZXREcmF3c0JhY2tncm91bmQoYm9vbCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldp
bi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldpbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4MmU3ZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcApA
QCAtMCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgi
CisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLU3RyaW5nQ0YuaD4KKyNpbmNsdWRlIDxXaW5CYXNlLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4K
KyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDxzdHJpbmc+
CisjaW5jbHVkZSA8dGNoYXIuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3Rm
L1J1bkxvb3AuaD4KKworCisjZGVmaW5lIElOSkVDVEVEX0JVTkRMRV9ETExfTkFNRSAiVGVzdFJ1
bm5lckluamVjdGVkQnVuZGxlLmRsbCIKKworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBIQU5E
TEUgd2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnQ7CitzdGF0aWMgY29uc3QgY2hhciB3ZWJQcm9jZXNz
Q3Jhc2hpbmdFdmVudE5hbWVbXSA9ICJXZWJLaXRUZXN0UnVubmVyLldlYlByb2Nlc3NDcmFzaGlu
ZyI7CisvLyBUaGlzIGlzIHRoZSBsb25nZXN0IHdlJ2xsIHdhaXQgKGluIHNlY29uZHMpIGZvciB0
aGUgd2ViIHByb2Nlc3MgdG8gZmluaXNoIGNyYXNoaW5nIGFuZCBhIGNyYXNoCisvLyBsb2cgdG8g
YmUgc2F2ZWQuIFRoaXMgaW50ZXJ2YWwgc2hvdWxkIGJlIGp1c3QgYSB0aW55IGJpdCBsb25nZXIg
dGhhbiBpdCB3aWxsIGV2ZXIgcmVhc29uYWJseQorLy8gdGFrZSB0byBzYXZlIGEgY3Jhc2ggbG9n
Lgorc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtV2FpdEZvcldlYlByb2Nlc3NUb0NyYXNoID0g
NjA7CisKKworc3RhdGljIExPTkcgV0lOQVBJIGV4Y2VwdGlvbkZpbHRlcihFWENFUFRJT05fUE9J
TlRFUlMqKQoreworICAgIGZwdXRzKCIjQ1JBU0hFRFxuIiwgc3RkZXJyKTsKKyAgICBmZmx1c2go
c3RkZXJyKTsKKyAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKK30KKworZW51
bSBSdW5Mb29wUmVzdWx0IHsgVGltZWRPdXQsIE9iamVjdFNpZ25hbGVkLCBDb25kaXRpb25TYXRp
c2ZpZWQgfTsKKworc3RhdGljIFJ1bkxvb3BSZXN1bHQgcnVuUnVuTG9vcFVudGlsKGJvb2wmIGNv
bmRpdGlvbiwgSEFORExFIG9iamVjdCwgZG91YmxlIHRpbWVvdXQpCit7CisgICAgRFdPUkQgZW5k
ID0gOjpHZXRUaWNrQ291bnQoKSArIHRpbWVvdXQgKiAxMDAwOworICAgIGlmICh0aW1lb3V0IDwg
MCkKKyAgICAgICAgZW5kID0gVUxPTkdfTUFYOworCisgICAgd2hpbGUgKCFjb25kaXRpb24pIHsK
KyAgICAgICAgRFdPUkQgbm93ID0gOjpHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgaWYgKG5vdyA+
IGVuZCkKKyAgICAgICAgICAgIHJldHVybiBUaW1lZE91dDsKKworICAgICAgICBEV09SRCB3YWl0
ID0gZW5kIC0gbm93OworICAgICAgICBEV09SRCBvYmplY3RDb3VudCA9IG9iamVjdCA/IDEgOiAw
OworICAgICAgICBjb25zdCBIQU5ETEUqIG9iamVjdHMgPSBvYmplY3QgPyAmb2JqZWN0IDogMDsK
KworICAgICAgICBEV09SRCByZXN1bHQgPSA6Ok1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeChv
YmplY3RDb3VudCwgb2JqZWN0cywgd2FpdCwgUVNfQUxMSU5QVVQsIE1XTU9fSU5QVVRBVkFJTEFC
TEUpOworICAgICAgICBpZiAocmVzdWx0ID09IFdBSVRfVElNRU9VVCkKKyAgICAgICAgICAgIHJl
dHVybiBUaW1lZE91dDsKKworICAgICAgICBpZiAob2JqZWN0Q291bnQgJiYgcmVzdWx0ID49IFdB
SVRfT0JKRUNUXzAgJiYgcmVzdWx0IDwgV0FJVF9PQkpFQ1RfMCArIG9iamVjdENvdW50KQorICAg
ICAgICAgICAgcmV0dXJuIE9iamVjdFNpZ25hbGVkOworCisgICAgICAgIEFTU0VSVChyZXN1bHQg
PT0gV0FJVF9PQkpFQ1RfMCArIG9iamVjdENvdW50KTsKKyAgICAgICAgLy8gVGhlcmUgYXJlIG1l
c3NhZ2VzIGluIHRoZSBxdWV1ZS4gUHJvY2VzcyB0aGVtLgorICAgICAgICBNU0cgbXNnOworICAg
ICAgICB3aGlsZSAoOjpQZWVrTWVzc2FnZVcoJm1zZywgMCwgMCwgMCwgUE1fUkVNT1ZFKSkgewor
ICAgICAgICAgICAgOjpUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOworICAgICAgICAgICAgOjpEaXNw
YXRjaE1lc3NhZ2VXKCZtc2cpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIENvbmRp
dGlvblNhdGlzZmllZDsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCit7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihib29sKQoreworfQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIC8vIEN5Z3dpbiBj
YWxscyA6OlNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTKSwgd2hpY2ggd2Ugd2ls
bCBpbmhlcml0LiBUaGlzIGlzIGJhZCBmb3IKKyAgICAvLyB0ZXN0aW5nL2RlYnVnZ2luZywgYXMg
aXQgY2F1c2VzIHRoZSBwb3N0LW1vcnRlbSBkZWJ1Z2dlciBub3QgdG8gYmUgaW52b2tlZC4gV2Ug
cmVzZXQgdGhlCisgICAgLy8gZXJyb3IgbW9kZSBoZXJlIHRvIHdvcmsgYXJvdW5kIEN5Z3dpbidz
IGJlaGF2aW9yLiBTZWUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTUyMjI+LgorICAgIDo6U2V0RXJy
b3JNb2RlKDApOworCisgICAgOjpTZXRVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoZXhjZXB0aW9u
RmlsdGVyKTsKKworICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7CisgICAgX3NldG1vZGUoMiwg
X09fQklOQVJZKTsKKworICAgIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50ID0gOjpDcmVhdGVFdmVu
dEEoMCwgRkFMU0UsIEZBTFNFLCB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVudE5hbWUpOworfQorCitX
S1ByZWZlcmVuY2VzUmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVByZWZlcmVuY2VzKCkKK3sK
KyAgICByZXR1cm4gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhtX3BhZ2VHcm91cC5nZXQoKSk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtRGVzdHJveSgpCit7Cit9CisKK3N0
YXRpYyBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdG9XSyhjb25zdCBjaGFyKiBzdHJpbmcpCit7
CisgICAgcmV0dXJuIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPihBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmcpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7CisgICAgLy8gRklYTUU6IEZJWE1FISBOTyBX
S0NvbnRleHRTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzIGluIEFQSSBsaXN0CisgICAgLy8g
RklYTUU6IE1ha2UgRFJUIHBhc3Mgd2l0aCBXaW5kb3dzIG5hdGl2ZSBjb250cm9scy4gPGh0dHA6
Ly93ZWJraXQub3JnL2IvMjU1OTI+CisgICAgLy8gV0tDb250ZXh0U2V0U2hvdWxkUGFpbnROYXRp
dmVDb250cm9scyhtX2NvbnRleHQuZ2V0KCksIGZhbHNlKTsKKworICAgIFdLQ29udGV4dFNldElu
aXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShtX2NvbnRleHQuZ2V0KCksIHRv
V0sod2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnROYW1lKS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgY29uZGl0aW9uLCBXVEY6OlNlY29uZHMg
dGltZW91dCkKK3sKKyAgICBSdW5Mb29wUmVzdWx0IHJlc3VsdCA9IHJ1blJ1bkxvb3BVbnRpbChj
b25kaXRpb24sIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50LCB0aW1lb3V0LnNlY29uZHMoKSk7Cisg
ICAgaWYgKHJlc3VsdCA9PSBUaW1lZE91dCB8fCByZXN1bHQgPT0gQ29uZGl0aW9uU2F0aXNmaWVk
KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHJlc3VsdCA9PSBPYmplY3RTaWduYWxlZCk7
CisKKyAgICAvLyBUaGUgd2ViIHByb2Nlc3MgaXMgY3Jhc2hpbmcuIEEgY3Jhc2ggbG9nIG1pZ2h0
IGJlIGJlaW5nIHNhdmVkLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcKKyAgICAvLyB0aW1lLCBhbmQg
d2UgZG9uJ3Qgd2FudCB0byB0aW1lIG91dCB3aGlsZSB0aGF0IGhhcHBlbnMuCisKKyAgICAvLyBG
aXJzdCwgbGV0IHRoZSB0ZXN0IGhhcm5lc3Mga25vdyB0aGlzIGhhcHBlbmVkIHNvIGl0IHdvbid0
IHRoaW5rIHdlJ3ZlIGh1bmcuIEJ1dAorICAgIC8vIG1ha2Ugc3VyZSB3ZSBkb24ndCBleGl0IGp1
c3QgeWV0IQorICAgIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9jZXNzQ3Jhc2hlcyA9IGZhbHNlOwor
ICAgIHByb2Nlc3NEaWRDcmFzaCgpOworICAgIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9jZXNzQ3Jh
c2hlcyA9IHRydWU7CisKKyAgICAvLyBUaGVuIHNwaW4gYSBydW4gbG9vcCB1bnRpbCBpdCBmaW5p
c2hlcyBjcmFzaGluZyB0byBnaXZlIHRpbWUgZm9yIGEgY3Jhc2ggbG9nIHRvIGJlIHNhdmVkLiBJ
ZgorICAgIC8vIGl0IHRha2VzIHRvbyBsb25nIGZvciBhIGNyYXNoIGxvZyB0byBiZSBzYXZlZCwg
d2UnbGwganVzdCBnaXZlIHVwLgorICAgIGJvb2wgbmV2ZXJTZXRDb25kaXRpb24gPSBmYWxzZTsK
KyAgICByZXN1bHQgPSBydW5SdW5Mb29wVW50aWwobmV2ZXJTZXRDb25kaXRpb24sIDAsIG1heGlt
dW1XYWl0Rm9yV2ViUHJvY2Vzc1RvQ3Jhc2gpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQgPT0gVGltZWRPdXQpOworICAgIGV4aXQoMSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjppbml0
aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKCkKK3sKKyAgICBtX2luamVjdGVkQnVuZGxlUGF0aC5h
ZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhJTkpFQ1RFRF9CVU5ETEVfRExMX05B
TUUpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJl
Y3RvcnkoKQoreworICAgIFRDSEFSIGV4ZVBhdGhbTUFYX1BBVEhdOworICAgIGlmICg6OkdldE1v
ZHVsZUZpbGVOYW1lKG51bGxwdHIsIGV4ZVBhdGgsIE1BWF9QQVRIKSkgeworICAgICAgICBUQ0hB
UiBkcml2ZVtfTUFYX0RSSVZFXTsKKyAgICAgICAgVENIQVIgZGlyW19NQVhfRElSXTsKKyAgICAg
ICAgX3RzcGxpdHBhdGgoZXhlUGF0aCwgZHJpdmUsIGRpciwgbnVsbHB0ciwgbnVsbHB0cik7CisK
KyAgICAgICAgVENIQVIgYnVuZGxlRGlyW01BWF9QQVRIXTsKKyAgICAgICAgX3Rjc25jcHkoYnVu
ZGxlRGlyLCBkcml2ZSwgTUFYX1BBVEgpOworICAgICAgICBfdGNzbmNhdChidW5kbGVEaXIsIGRp
ciwgTUFYX1BBVEggLSBfTUFYX0RSSVZFKTsKKworICAgICAgICBjaGFyIGJ1bmRsZURpcl91dGZb
TUFYX1BBVEhdOworICAgICAgICA6OldpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgYnVu
ZGxlRGlyLCAtMSwgYnVuZGxlRGlyX3V0ZiwgTUFYX1BBVEgsIG51bGxwdHIsIG51bGxwdHIpOwor
CisgICAgICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5hZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhidW5kbGVEaXJfdXRmKSk7CisgICAgfQorfQorCit2b2lkIFRlc3RDb250cm9s
bGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQoreworICAgIC8vIEZJWE1FOiBOZWVkIHRv
IGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFsRGlhbG9nLgorICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK1dLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0
KCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCitjb25zdCBjaGFyKiBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZp
Y1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYsIGNvbnN0IHN0ZDo6c3RyaW5nJikgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RSdW5uZXJQcmVm
aXguY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vV2ViS2l0VGVzdFJ1bm5lclByZWZp
eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRjNzRjZQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RSdW5uZXJQ
cmVmaXguY3BwCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJXZWJLaXRUZXN0UnVubmVyUHJlZml4LmgiCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9tYWluLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL21haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjVmZDlmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9tYWluLmNwcApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKKworZXh0ZXJuICJDIiBfX2RlY2xz
cGVjKGRsbGV4cG9ydCkgaW50IFdJTkFQSSBkbGxMYXVuY2hlckVudHJ5UG9pbnQoaW50IGFyZ2Ms
IGNvbnN0IGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICBXVFI6OlRlc3RDb250cm9sbGVyIGNvbnRyb2xs
ZXIoYXJnYywgYXJndik7CisgICAgcmV0dXJuIDA7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354199</attachid>
            <date>2018-11-07 19:17:24 -0800</date>
            <delta_ts>2018-11-11 19:05:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wincairo-testrunner-impl-1108.1.patch</filename>
            <type>text/plain</type>
            <size>88733</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjMmQyYjA3Li4zM2RjYzkz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTgtMTEtMDcgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IFdlYktpdFRlc3RSdW5uZXIgZm9yIFdpbkNhaXJvCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyNTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlOgorCiAyMDE4LTExLTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTGludXhdIFVzZSBtZW1mZF9jcmVhdGUgd2hl
biBhdmFpbGFibGUgaW4gU2hhcmVkTWVtb3J5IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJi
MTJkZjYuLjU2NTA4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMDcgIFRh
a2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFdlYktpdFRlc3RSdW5uZXIgZm9yIFdpbkNhaXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorCiAyMDE4LTEx
LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBT
dXBwb3J0IGRlbGV0aW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgbGluZSBhbmQgdG8gdGhlIGVuZCBv
ZiB0aGUgbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggM2FlYjZhNC4uMjExMTI4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xOTAsNiArMTkwLDcgQEAgV0VCS0lUX1dSQVBf
U09VUkNFTElTVCgke1dlYktpdF9TT1VSQ0VTfSkKIHNldChXZWJLaXRfRk9SV0FSRElOR19IRUFE
RVJTX0RJUkVDVE9SSUVTCiAgICAgU2hhcmVkL0FQSS9jCiAKKyAgICBTaGFyZWQvQVBJL2MvY2Fp
cm8KICAgICBTaGFyZWQvQVBJL2MvY2YKICAgICBTaGFyZWQvQVBJL2Mvd2luCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNX
aW4uY21ha2UKaW5kZXggZjIyZjNmMS4uMDgxZGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAg
LTg0LDYgKzg0LDcgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQogICAgIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Qg
UFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
V0VCR0wgUFVCTElDIE9OKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9BQ0NFU1NJQklMSVRZIFBSSVZBVEUgT04pCiAKICAgICAjIEZJWE1FOiBJbXBsZW1lbnQg
cGx1Z2luIHByb2Nlc3Mgb24gTW9kZXJuIFdlYktpdC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NTMxMwogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJiNmM3NzUuLmRmNGFmOGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzIgQEAKKzIwMTgtMTEtMDcgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlA
c29ueS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYktpdFRlc3RSdW5uZXIgZm9yIFdpbkNh
aXJvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODky
NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBs
YXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5l
cjoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
cmFuZ2VUb1N0cik6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFz
V2ViQXJjaGl2ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnBsYXRmb3JtTmFtZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJp
bGl0eVVJRWxlbWVudFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuQ291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1lbnRBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVudEF0SW5k
ZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dB
dEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRB
dEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRDaGlsZHJlbkNvdW50IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXJlbnRFbGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZGlzY2xvc2VkQnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcyk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFs
dWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJh
eUF0dHJpYnV0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm93SGVhZGVycyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNvbHVtbkhlYWRlcnMgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVOYW1lcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmhlbHBUZXh0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om1pblZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bWF4VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1
ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5z
ZXJ0aW9uUG9pbnRMaW5lTnVtYmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNQcmVzc0FjdGlvblN1cHBvcnRlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzSW5jcmVtZW50QWN0aW9uU3VwcG9ydGVkKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNEZWNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkIGNvbnN0KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCBjb25zdCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUgY29u
c3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkIGNv
bnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkIGNv
bnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmRldGVybWlu
YXRlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFy
Y2hpY2FsTGV2ZWwgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzcGVha0FzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlz
R3JhYmJlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFEcm9wRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmVGb3JJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJhbmdlRm9yTGluZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJh
bmdlRm9yUG9zaXRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpi
b3VuZHNGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlZFN0cmluZ0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlZFN0cmluZ1JhbmdlSXNNaXNzcGVsbGVkKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Q291bnRGb3JTZWFyY2hQcmVkaWNhdGUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFy
Y2hQcmVkaWNhdGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxl
Y3RUZXh0V2l0aENyaXRlcmlhKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cyk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uQ291bnQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyIGNvbnN0KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIgY29u
c3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRS
YW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVk
VGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVt
ZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2hvd01lbnUpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQgY29uc3QpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCBjb25z
dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlv
bkF0SW5kZXggY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
bGVhclNlbGVjdGVkQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUgY29uc3QpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSBjb25zdCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSBjb25zdCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQgY29uc3Qp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9yZWQgY29uc3Qp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NpbmdsZUxpbmUgY29u
c3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpTGluZSBj
b25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwIGNv
bnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbik6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbik6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjplbmRUZXh0TWFya2VyRm9yQm91bmRzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VXaXRoT3B0aW9ucyk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZVdpdGhTdWJGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN1cHBvcnRlZEFjdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwYXRoRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24g
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3Qg
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJB
dE9mZnNldCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9m
ZnNldCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNl
dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbnRlbmNlQXRPZmZz
ZXQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjdGl2
YXRlRm9udHNXaW4uY3BwOiBDb3BpZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAuCisgICAgICAgIChXVFI6OmFjdGl2YXRl
Rm9udHMpOgorICAgICAgICAoV1RSOjppbnN0YWxsRmFrZUhlbHZldGljYSk6CisgICAgICAgIChX
VFI6OnVuaW5zdGFsbEZha2VIZWx2ZXRpY2EpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcDogQ29waWVkIGZyb20gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3Bw
LgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVySW5q
ZWN0ZWRCdW5kbGVQcmVmaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaDogQ29w
aWVkIGZyb20gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZU1haW4uY3BwLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
d2luL1Rlc3RSdW5uZXJXaW4uY3BwOiBDb3BpZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAuCisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjppbnNwZWN0b3JUZXN0U3R1YlVSTCk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmludmFs
aWRhdGVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmluaXRpYWxp
emVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6aW5zdGFsbEZha2VIZWx2ZXRpY2EpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
UGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdp
bi5jbWFrZTogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6Y3JlYXRlVGVzdFVSTCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6fkV2ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVVw
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgorICAgICAg
ICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5KToKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6Y29udGludW91c01vdXNlU2Nyb2xs
QnkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZCk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RS
OjpyZWdpc3RlcldpbmRvd0NsYXNzKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQ
bGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9y
bVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKToKKyAg
ICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpwYWdlKToKKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3Ojpmb2N1cyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6d2luZG93
RnJhbWUpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnNldFdpbmRvd0ZyYW1lKToK
KyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cyk6Cisg
ICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6CisgICAg
ICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCk6CisgICAg
ICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6YWRkVG9XaW5kb3cpOgorICAgICAgICAoV1RSOjpQ
bGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUZyb21XaW5kb3cpOgorICAgICAgICAoV1RSOjpQbGF0Zm9y
bVdlYlZpZXc6OnNldFdpbmRvd0lzS2V5KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKFdUUjo6Z2VuZXJhdGVDYWly
b1N1cmZhY2VGcm9tQml0bWFwKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5k
b3dTbmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpjaGFuZ2VX
aW5kb3dTY2FsZUlmTmVlZGVkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpzZXRO
YXZpZ2F0aW9uR2VzdHVyZXNFbmFibGVkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
Ojpmb3JjZVdpbmRvd0ZyYW1lc0NoYW5nZWQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZp
ZXc6OmRyYXdzQmFja2dyb3VuZCBjb25zdCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmll
dzo6c2V0RHJhd3NCYWNrZ3JvdW5kKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9U
ZXN0Q29udHJvbGxlcldpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RSOjpleGNlcHRpb25GaWx0
ZXIpOgorICAgICAgICAoV1RSOjpydW5SdW5Mb29wVW50aWwpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6bm90aWZ5RG9uZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpz
ZXRIaWRkZW4pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFs
aXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUHJlZmVyZW5jZXMp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAg
ICAgKFdUUjo6dG9XSyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUlu
aXRpYWxpemVDb250ZXh0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
UnVuVW50aWwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1EaWRDb21t
aXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZUluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0
aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpydW5Nb2RhbCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNvbnRl
eHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZv
clRlc3RpbmcpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db25maWd1
cmVWaWV3Rm9yVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJl
c2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdCBjb25zdCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5j
cHA6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL21haW4uY3BwOiBDb3Bp
ZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTWFpbi5jcHAuCisgICAgICAgIChkbGxMYXVuY2hlckVudHJ5UG9pbnQpOgorCiAyMDE4LTEx
LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBPdmVycmlk
ZSArW1VJS2V5Ym9hcmQgaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlXSBpbiBXZWJLaXRUZXN0UnVu
bmVyIGFuZCBEdW1wUmVuZGVyVHJlZQpkaWZmIC0tZ2l0IGEvVG9vbHMvUGxhdGZvcm1XaW4uY21h
a2UgYi9Ub29scy9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBlNGUyZTdhLi5hY2ZkOTg1IDEwMDY0
NAotLS0gYS9Ub29scy9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Ub29scy9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtNCwzICs0LDcgQEAgYWRkX3N1YmRpcmVjdG9yeShJbWFnZURpZmYpCiBpZiAoRU5B
QkxFX1dFQktJVF9MRUdBQ1kpCiAgICAgYWRkX3N1YmRpcmVjdG9yeShNaW5pQnJvd3Nlci93aW4p
CiBlbmRpZiAoKQorCitpZiAoRU5BQkxFX1dFQktJVCkKKyAgICBhZGRfc3ViZGlyZWN0b3J5KFdl
YktpdFRlc3RSdW5uZXIpCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXR0ZXN0cnVubmVyIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVy
CmluZGV4IDE3NzM3ZmEuLjE4NmE0NWQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0dGVzdHJ1bm5lcgorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5u
ZXIKQEAgLTYyLDggKzYyLDggQEAgY2hkaXIgIlRvb2xzL1dlYktpdFRlc3RSdW5uZXIiIG9yIGRp
ZTsKIG15ICRyZXN1bHQ7CiBpZiAoaXNBcHBsZUNvY29hV2ViS2l0KCkpIHsKICAgICAkcmVzdWx0
ID0gYnVpbGRYQ29kZVByb2plY3QoIldlYktpdFRlc3RSdW5uZXIiLCAkY2xlYW4sIFhjb2RlT3B0
aW9ucygpLCBAQVJHVik7Ci19IGVsc2lmIChpc0d0aygpIHx8IGlzV1BFKCkgfHwgaXNQbGF5U3Rh
dGlvbigpKSB7Ci0gICAgIyBHVEsrLCBXUEUsIGFuZCBQbGF5U3RhdGlvbiBidWlsZCBldmVyeXRo
aW5nIGluIG9uZSBzaG90LiBObyBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGhlcmUuCit9IGVsc2lm
IChpc0d0aygpIHx8IGlzV1BFKCkgfHwgaXNQbGF5U3RhdGlvbigpIHx8IGlzQW55V2luZG93cygp
KSB7CisgICAgIyBHVEsrLCBXUEUsIFBsYXlTdGF0aW9uLCBhbmQgV2luZG93cyBidWlsZCBldmVy
eXRoaW5nIGluIG9uZSBzaG90LiBObyBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGhlcmUuCiAgICAg
JHJlc3VsdCA9IDA7CiB9IGVsc2UgewogICAgIGRpZSAiV2ViS2l0VGVzdFJ1bm5lciBpcyBub3Qg
c3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uXG4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VM
aXN0cy50eHQKaW5kZXggZmJkZmZkYS4uNzUwMDliYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NN
YWtlTGlzdHMudHh0CkBAIC0xMjksNiArMTI5LDkgQEAgaWYgKENPTVBJTEVSX0lTX0dDQ19PUl9D
TEFORykKICAgICBXRUJLSVRfQUREX1RBUkdFVF9DWFhfRkxBR1MoV2ViS2l0VGVzdFJ1bm5lciAt
V25vLXVudXNlZC1wYXJhbWV0ZXIpCiBlbmRpZiAoKQogCi1pZiAoTk9UIEFQUExFKQoraWYgKFdJ
TjMyKQorICAgIGFkZF9kZXBlbmRlbmNpZXMoV2ViS2l0VGVzdFJ1bm5lckxpYiBXZWJLaXRUZXN0
UnVubmVyQmluZGluZ3MpCisgICAgYWRkX2RlcGVuZGVuY2llcyhXZWJLaXRUZXN0UnVubmVyIFdl
YktpdFRlc3RSdW5uZXJMaWIpCitlbHNlaWYgKE5PVCBBUFBMRSkKICAgICBhZGRfZGVwZW5kZW5j
aWVzKFdlYktpdCAke0ZvcndhcmRpbmdIZWFkZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9OQU1FfSkK
IGVuZGlmICgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4
IDlkMWU2MGIuLmJmZGFkOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCkBAIC0yNCw4ICsyNCw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBFdmVudFNlbmRlclByb3h5X2gKLSNkZWZpbmUgRXZlbnRTZW5k
ZXJQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xNDQsOSArMTQzLDEwIEBAIHByaXZhdGU6CiAgICAgdWlu
dDMyX3QgbV9tb3VzZUJ1dHRvbnNDdXJyZW50bHlEb3duIHsgMCB9OwogICAgIFZlY3RvcjxzdHJ1
Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3Jhdz4gbV90b3VjaEV2ZW50czsKICAgICBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBtX3VwZGF0ZWRUb3VjaEV2ZW50czsKKyNlbGlm
IFBMQVRGT1JNKFdJTikKKyAgICB1aW50MzJfdCBtX2J1dHRvblN0YXRlOworICAgIHVpbnQzMl90
IG1fbW91c2VCdXR0b25zQ3VycmVudGx5RG93biB7IDAgfTsKICNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBFdmVudFNlbmRlclByb3h5X2gKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggN2I4MTY3Ni4uOWFjZjg1OCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgpCiAgICAgcmV0dXJu
IFdLQWNjZXNzaWJpbGl0eUVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQoKTsKIH0KIAotI2lm
ICFQTEFURk9STShHVEspICYmICFQTEFURk9STShXUEUpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBS
ZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RF
bGVtZW50KCkKIHsKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpz
aW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKQEAgLTEwMCw0ICsxMDAsMyBAQCBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVt
ZW50KCkgeyByZXR1cgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCAxOWRjMGNmLi5hNGY2ODFjIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JFbGVtZW50
KCkgewogI2VuZGlmCiAgICAgCiAvLyBVbnN1cHBvcnRlZCBtZXRob2RzIG9uIHZhcmlvdXMgcGxh
dGZvcm1zLiBBcyB0aGV5J3JlIGltcGxlbWVudGVkIG9uIG90aGVyIHBsYXRmb3JtcyB0aGlzIGxp
c3Qgc2hvdWxkIGJlIG1vZGlmaWVkLgotI2lmICghUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0o
V1BFKSkgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgIUhB
VkUoQUNDRVNTSUJJTElUWSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3JkQXRPZmZz
ZXQoaW50KSB7IHJldHVybiBudWxscHRyOyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVsbHB0cjsg
fQpAQCAtMTA3LDQgKzEwNywzIEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4CiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV1RSCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggYjAw
YzU0OS4uZjI0ZGNlOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTM2MiwxMCAr
MzYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpT
U3RyaW5nUmVmLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKSBjb25z
dDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQogICAgIHZvaWQgZ2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9ub3RpZmljYXRpb25IYW5kbGVyOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU1haW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU1haW4uY3BwCmluZGV4IDRmMTI3MjIuLmRmYTNkMzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWlu
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlTWFpbi5jcHAKQEAgLTI0LDExICsyNCwxNSBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLQogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisKICNpbmNsdWRlIDxXZWJLaXQv
V0tCdW5kbGVJbml0aWFsaXplLmg+CiAKKyNpZiBkZWZpbmVkKFdJTjMyKQorZXh0ZXJuICJDIiBf
X2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNlbHNlCiBleHRlcm4gIkMiCisjZW5kaWYKIHZvaWQgV0tC
dW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0
aW9uVXNlckRhdGEpCiB7CiAgICAgV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuaW5p
dGlhbGl6ZShidW5kbGUsIGluaXRpYWxpemF0aW9uVXNlckRhdGEpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCmluZGV4IDgwYTBhNDguLjMxODBjZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
QEAgLTI1LDExICsyNSwxMSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgiCi0KICNpbmNsdWRlICJBY3RpdmF0ZUZvbnRzLmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKwogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQXJyYXku
aD4KQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jaWYgVVNFKENGKQorI2lmIFVTRShD
RikgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykKICNpbmNsdWRlICJXZWJBcmNoaXZlRHVtcFN1cHBv
cnQuaCIKICNlbmRpZgogCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIHJh
bmdlVG9TdHIoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29y
bGQKIHsKICAgICBpZiAoIXJhbmdlUmVmKQogICAgICAgICByZXR1cm4gIihudWxsKSI7Ci0gCisK
ICAgICBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBh
Z2UpOwogCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0
SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChmcmFtZSwgd29ybGQpOwpAQCAtODc5LDcgKzg3OSw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wQWxsRnJhbWVzVGV4dChTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyKQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFz
V2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdC
dWlsZGVyKQogewotI2lmIFVTRShDRikKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9STShXSU5fQ0FJ
Uk8pCiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxl
RnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNm
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQo
KSksIFdLRGF0YUdldFNpemUod2tEYXRhLmdldCgpKSkpOwogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZTdHJpbmcgPSBhZG9wdENGKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3Ry
aW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZGYxYWRh
Zi4uNmI5ZDcwMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFRlc3RSdW5uZXI6OlRlc3RS
dW5uZXIoKQogICAgICwgbV9kYXRhYmFzZU1heFF1b3RhKC0xKQogICAgICwgbV91c2VyU3R5bGVT
aGVldEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24oYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikpKQotI2lmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oV1BFKQorI2lmICFQTEFURk9STShDT0NPQSkKICAgICAsIG1fd2FpdFRvRHVt
cFdhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmVGVzdFJ1bm5lcjo6d2FpdFRv
RHVtcFdhdGNoZG9nVGltZXJGaXJlZCkKICNlbmRpZgogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBmNWIyYzIwLi5lOGJh
OTdmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KIHR5cGVkZWYgUmV0YWluUHRy
PENGUnVuTG9vcFRpbWVyUmVmPiBQbGF0Zm9ybVRpbWVyUmVmOwotI2VsaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCisjZWxzZQogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiBuYW1l
c3BhY2UgV1RSIHsKIGNsYXNzIFRlc3RSdW5uZXI7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
M2I4N2RlNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcApAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgor
CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShudWxscHRyKTsKK30KKworUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG51bGxwdHIpOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cihKU1ZhbHVlUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjBlY2E2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dFdpbi5jcHAKQEAgLTAsMCArMSw5NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCIKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKworI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1l
bnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50JikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+
QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiwgdW5zaWduZWQsIHVuc2lnbmVkKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
aGlsZHJlbkNvdW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwor
fQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZWxlbWVudEF0UG9pbnQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVt
ZW50QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZsb3dUb0VsZW1l
bnRBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93
QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkxpbmtlZFVJRWxlbWVudHMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFs
dWUoSlNTdHJpbmdSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0
ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTVmFs
dWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycygpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNWYWx1ZVJlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlTmFtZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3Vicm9sZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJvbGVEZXNjcmlwdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OngoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6d2lkdGgoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9
CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjbGlja1BvaW50WCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjptaW5WYWx1ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30K
KworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luY3Jl
bWVudEFjdGlvblN1cHBvcnRlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNEZWNyZW1lbnRB
Y3Rpb25TdXBwb3J0ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5k
ZXRlcm1pbmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZl
bCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrQXMo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUoaW50KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0aW9uKGludCwgaW50
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JS
YW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclJh
bmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4
dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2wsIEpTVmFsdWVSZWYsIEpTU3RyaW5n
UmVmLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50KiwgYm9vbCwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYsIGJvb2wsIGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdFRleHRX
aXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiwgSlNTdHJp
bmdSZWYsIEpTU3RyaW5nUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZSb3dzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mVmlzaWJsZUNlbGxzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm93Q291bnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4SW5UYWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvd0luZGV4UmFuZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCwgdW5zaWduZWQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6
b250YWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVkLCB1bnNpZ25l
ZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNob3dNZW51KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXNzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uQXRJbmRleCh1bnNpZ25lZCBp
bmRleCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNsZWFyU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2Fs
bGJhY2spCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
TXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Zpc2libGUo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJZ25vcmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NpbmdsZUxpbmUo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlMaW5lKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGFrZUZvY3VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9uKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJl
bW92ZVNlbGVjdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitpbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0TWFya2VyKEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRN
YXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMoaW50
LCBpbnQsIGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKGludCwgaW50LCBpbnQsIGludCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJGb3JQb2ludChpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRpb25zKEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3Ry
aW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtl
ckZvckluZGV4KGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0
aFN1YkZvY3VzKGludCwgaW50LCBpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vw
cG9ydGVkQWN0aW9ucygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlw
dHNEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNsYXNzTGlzdCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d29yZEF0T2Zmc2V0KGludCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VBdE9mZnNldChp
bnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgIFdURgorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWN0aXZh
dGVGb250c1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dp
bi9BY3RpdmF0ZUZvbnRzV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4yNmMxNmZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQWN0aXZhdGVGb250cy5oIgorCituYW1lc3BhY2UgV1RSIHsK
Kwordm9pZCBhY3RpdmF0ZUZvbnRzKCkKK3sKK30KKwordm9pZCBpbnN0YWxsRmFrZUhlbHZldGlj
YShXS1N0cmluZ1JlZikKK3sKK30KKwordm9pZCB1bmluc3RhbGxGYWtlSGVsdmV0aWNhKCkKK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQwODFmZgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVu
ZGxlV2luLmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZS5oIgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6
cGxhdGZvcm1Jbml0aWFsaXplKFdLVHlwZVJlZikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9U
ZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGVjZjM0Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5l
ckluamVjdGVkQnVuZGxlUHJlZml4LmNwcApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJUZXN0UnVubmVySW5q
ZWN0ZWRCdW5kbGVQcmVmaXguaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lckluamVjdGVk
QnVuZGxlUHJlZml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhmZTQx
YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oCkBAIC0wLDAgKzEsMjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjdW5kZWYgV0VCQ09SRV9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9FWFBP
UlQgV1RGX0lNUE9SVF9ERUNMQVJBVElPTgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWZiZmY1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgor
CisjaW5jbHVkZSAiQWN0aXZhdGVGb250cy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNTdHJp
bmdSZWYpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBUZXN0UnVubmVyOjppbnNwZWN0b3JUZXN0U3R1YlVSTCgpCit7CisgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpp
bnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKQoreworICAgIG1fd2FpdFRvRHVtcFdh
dGNoZG9nVGltZXIuc3RvcCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6aW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRj
aGRvZ1RpbWVySWZOZWVkZWQoKQoreworICAgIGlmICghbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLnN0YXJ0T25l
U2hvdChtX3RpbWVvdXQpOworfQorCit2b2lkIFRlc3RSdW5uZXI6Omluc3RhbGxGYWtlSGVsdmV0
aWNhKEpTU3RyaW5nUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgV1RSOjppbnN0YWxsRmFrZUhl
bHZldGljYSh0b1dLKGNvbmZpZ3VyYXRpb24pLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBjZTM2OGZm
Li5kYjQxOWM3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2Vi
Vmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAg
LTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFBsYXRmb3JtV2ViVmlld19oCi0jZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCiAKQEAgLTQ5LDEzICs0OCwy
MCBAQCB0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQbGF0Zm9ybUltYWdlOwogdHlwZWRl
ZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7CiB0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9y
bVdLVmlldzsKIHR5cGVkZWYgR3RrV2lkZ2V0KiBQbGF0Zm9ybVdpbmRvdzsKLXR5cGVkZWYgY2Fp
cm9fc3VyZmFjZV90ICpQbGF0Zm9ybUltYWdlOwogI2VsaWYgUExBVEZPUk0oV1BFKQogbmFtZXNw
YWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiBjbGFzcyBIZWFkbGVzc1ZpZXdCYWNrZW5kOwogfQog
dHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIFdQRVRvb2xpbmdCYWNr
ZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZCogUGxhdGZvcm1XaW5kb3c7CisjZWxpZiBQTEFURk9S
TShXSU4pCisjaW5jbHVkZSA8Y2Fpcm8uaD4KK2NsYXNzIFRlc3RSdW5uZXJXaW5kb3c7Cit0eXBl
ZGVmIEhXTkQgUGxhdGZvcm1XaW5kb3c7Cit0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmll
dzsKKyNlbmRpZgorCisjaWYgVVNFKENBSVJPKQogdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBs
YXRmb3JtSW1hZ2U7CiAjZW5kaWYKIApAQCAtMTI1LDUgKzEzMSwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIFBsYXRmb3JtV2ViVmlld19oCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2luLmNtYWtlIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iZWU4MWYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMCwwICsxLDg2IEBACitzZXQoV2ViS2l0VGVz
dFJ1bm5lckxpYl9TT1VSQ0VTCisgICAgJHtXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVN9CisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCisg
ICAgd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCisgICAgd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHAKKyAgICB3aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCisgICAgd2luL21haW4uY3BwCisp
CisKK3NldChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKKyAgICAke1RPT0xTX0RJUn0vd2luL0RM
TExhdW5jaGVyL0RMTExhdW5jaGVyTWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgV2ViS2l0VGVz
dFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vd2luL0FjdGl2YXRlRm9udHNXaW4uY3BwCisgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAK
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL1Rlc3RSdW5u
ZXJXaW4uY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dp
bi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVS
X0lOSkVDVEVEQlVORExFX0RJUn0vd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCisp
CisKKworbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCisg
ICAgY2Fpcm8KKyAgICB3aW4KKyAgICAke0NBSVJPX0lOQ0xVREVfRElSU30KKyAgICAke0ZPUldB
UkRJTkdfSEVBREVSU19ESVJ9CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRM
RV9ESVJ9L3dpbgorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViS2l0L0ludGVyZmFjZXMK
KykKKworCitzZXQoV2ViS2l0VGVzdFJ1bm5lckxpYl9MSUJSQVJJRVMKKyAgICAke1dlYktpdFRl
c3RSdW5uZXJfTElCUkFSSUVTfQorICAgIENvbXN1cHB3CisgICAgT2xlYWNjCispCisKK2xpc3Qo
QVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTCisgICAgV1RGCisgICAgV2ViS2l0Cisp
CisKK3NldChXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfTElCUkFSSUVTCisgICAgV2Vi
Q29yZVRlc3RTdXBwb3J0CisgICAgV2ViS2l0CispCisKKworbGlzdChSRU1PVkVfSVRFTQorICAg
IFdlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfQklO
RElOR1NfRElSfS9KU1dyYXBwZXIuY3BwCispCitsaXN0KFJFTU9WRV9JVEVNCisgICAgV2ViS2l0
VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVS
X0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNwcAorKQorCitXRUJLSVRfQUREX1BSRUNPTVBJTEVE
X0hFQURFUigiV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oIgorICAgICIke1dFQktJVF9URVNUUlVO
TkVSX0RJUn0vd2luL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguY3BwIgorICAgIFdlYktpdFRlc3RS
dW5uZXJMaWJfU09VUkNFUworKQorV0VCS0lUX0FERF9QUkVDT01QSUxFRF9IRUFERVIoIlRlc3RS
dW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oIgorICAgICIke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5jcHAi
CisgICAgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKykKKworbGlzdChB
UFBFTkQKKyAgICBXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNU
UlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNwcAorKQorbGlzdChBUFBFTkQKKyAgICBX
ZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUworICAgICR7V0VCS0lUX1RFU1RS
VU5ORVJfQklORElOR1NfRElSfS9KU1dyYXBwZXIuY3BwCispCisKKworc2V0KENNQUtFX1NIQVJF
RF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfU0hBUkVEX0xJTktFUl9GTEFHU30gJHtNU1ZDX1JVTlRJ
TUVfTElOS0VSX0ZMQUdTfSIpCithZGRfbGlicmFyeShXZWJLaXRUZXN0UnVubmVyTGliIFNIQVJF
RCAke1dlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFU30pCit0YXJnZXRfbGlua19saWJyYXJpZXMo
V2ViS2l0VGVzdFJ1bm5lckxpYiAke1dlYktpdFRlc3RSdW5uZXJMaWJfTElCUkFSSUVTfSkKKwor
YWRkX2RlZmluaXRpb25zKAorICAgIC1EV0lOX0NBSVJPCisgICAgLURVU0VfQ09OU09MRV9FTlRS
WV9QT0lOVAorICAgIC1EX1VOSUNPREUKKykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggZDU1YTlmYy4uNzk4MWE1YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTY4LDcgKzY4LDEzIEBACiAjaW5jbHVkZSA8ZnN0
cmVhbT4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmc+CisjaWYgUExBVEZP
Uk0oV0lOKQorI2luY2x1ZGUgPGRpcmVjdC5oPgorI2RlZmluZSBnZXRjd2QgX2dldGN3ZAorI2Rl
ZmluZSBQQVRIX01BWCBfTUFYX1BBVEgKKyNlbHNlCiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5k
aWYKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgpA
QCAtODcyLDcgKzg3OCw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNp
c3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgLy8gc29tZSBv
dGhlciBjb2RlIGRvaW5nIHRoaXMsIGl0IHNob3VsZCBwcm9iYWJseSBiZSByZXNwb25zaWJsZSBm
b3IgY2xlYW51cCB0b28uCiAgICAgcmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhv
cHRpb25zKTsKIAotI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdQRSkKKyNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShXUEUpICYmICFQTEFURk9STShXSU4pCiAgICAg
V0tUZXh0Q2hlY2tlckNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZCh0
cnVlKTsKICNlbmRpZgogCkBAIC0xMDkxLDggKzEwOTcsMTUgQEAgc3RhdGljIFdLVVJMUmVmIGNy
ZWF0ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gMDsKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBjb25zdCBjaGFyIHNlcGFy
YXRvciA9ICdcXCc7CisgICAgYm9vbCBpc0Fic29sdXRlUGF0aCA9IGZhbHNlOworICAgIGlmIChz
dHJsZW4ocGF0aE9yVVJMKSA+PSAzICYmIHBhdGhPclVSTFsxXSA9PSAnOicgJiYgcGF0aE9yVVJM
WzJdID09IHNlcGFyYXRvcikKKyAgICAgICAgaXNBYnNvbHV0ZVBhdGggPSB0cnVlOworI2Vsc2UK
ICAgICBjb25zdCBjaGFyIHNlcGFyYXRvciA9ICcvJzsKICAgICBib29sIGlzQWJzb2x1dGVQYXRo
ID0gcGF0aE9yVVJMWzBdID09IHNlcGFyYXRvcjsKKyNlbmRpZgogICAgIGNvbnN0IGNoYXIqIGZp
bGVQcmVmaXggPSAiZmlsZTovLyI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmaXhMZW5n
dGggPSBzdHJsZW4oZmlsZVByZWZpeCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKaW5kZXggZDgxZTU4Yi4uNWE3ODA1YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDEyIEBACiAjaW5jbHVkZSA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oPgogI2luY2x1ZGUgPGNsaW1pdHM+CiAjaW5jbHVk
ZSA8Y3N0ZGlvPgorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlIDxpby5oPgorI2RlZmluZSBp
c2F0dHkgX2lzYXR0eQorI2Vsc2UKICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZp
eC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgKaW5k
ZXggNWY5ODlmYy4uZjIwMDExOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyUHJlZml4LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJL
aXRUZXN0UnVubmVyUHJlZml4LmgKQEAgLTQ0LDMgKzQ0LDcgQEAKICN1bmRlZiBjYXRjaAogI2Vu
ZGlmCiAKKyNpZiBPUyhXSU5ET1dTKQorI3VuZGVmIFdFQkNPUkVfRVhQT1JUCisjZGVmaW5lIFdF
QkNPUkVfRVhQT1JUIFdURl9JTVBPUlRfREVDTEFSQVRJT04KKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjcwOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKQEAgLTAsMCAr
MSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHly
aWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgor
CisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXVFIg
eworCisvLyBLZXkgZXZlbnQgbG9jYXRpb24gY29kZSBkZWZpbmVkIGluIERPTSBMZXZlbCAzLgor
ZW51bSBLZXlMb2NhdGlvbkNvZGUgeworICAgIERPTUtleUxvY2F0aW9uU3RhbmRhcmQgICAgICA9
IDB4MDAsCisgICAgRE9NS2V5TG9jYXRpb25MZWZ0ICAgICAgICAgID0gMHgwMSwKKyAgICBET01L
ZXlMb2NhdGlvblJpZ2h0ICAgICAgICAgPSAweDAyLAorICAgIERPTUtleUxvY2F0aW9uTnVtcGFk
ICAgICAgICA9IDB4MDMKK307CisKK2VudW0gQnV0dG9uU3RhdGUgeworICAgIEJ1dHRvblJlbGVh
c2VkID0gMCwKKyAgICBCdXR0b25QcmVzc2VkID0gMQorfTsKKworZW51bSBQb2ludGVyQXhpcyB7
CisgICAgVmVydGljYWxTY3JvbGwgPSAwLAorICAgIEhvcml6b250YWxTY3JvbGwgPSAxCit9Owor
CitFdmVudFNlbmRlclByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0
Q29udHJvbGxlcikKKyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCisgICAg
LCBtX3RpbWUoMCkKKyAgICAsIG1fbGVmdE1vdXNlQnV0dG9uRG93bihmYWxzZSkKKyAgICAsIG1f
Y2xpY2tDb3VudCgwKQorICAgICwgbV9jbGlja1RpbWUoMCkKKyAgICAsIG1fY2xpY2tCdXR0b24o
a1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9uKQorICAgICwgbV9idXR0b25TdGF0ZShCdXR0b25S
ZWxlYXNlZCkKK3sKK30KKworRXZlbnRTZW5kZXJQcm94eTo6fkV2ZW50U2VuZGVyUHJveHkoKQor
eworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b24s
IFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbiwgV0tF
dmVudE1vZGlmaWVycyB3a01vZGlmaWVycykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlU2Nyb2xsQnkoaW50IGhvcml6b250YWwsIGludCB2ZXJ0aWNhbCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhpbnQgaG9yaXpvbnRhbCwgaW50IHZlcnRpY2FsLCBpbnQs
IGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJv
eHk6OmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KGludCwgaW50LCBib29sKQoreworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpCit7CisgICAg
bV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKK30KKwordm9pZCBFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlm
aWVycywgdW5zaWduZWQgbG9jYXRpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
ZjkzYjNiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcApAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBCcmVudCBGdWxnaGFtIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKworI2luY2x1ZGUgPEhXbmREQy5oPgorI2luY2x1
ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CisK
KworbmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBMUENXU1RSIGhvc3RXaW5kb3dDbGFzc05hbWUg
PSBMIldUUldlYlZpZXdIb3N0V2luZG93IjsKK3N0YXRpYyBMUENXU1RSIHRlc3RSdW5uZXJXaW5k
b3dOYW1lID0gTCJXZWJLaXRUZXN0UnVubmVyIjsKKworc3RhdGljIHZvaWQgcmVnaXN0ZXJXaW5k
b3dDbGFzcygpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBp
ZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplZCA9IHRydWU7
CisKKyAgICBXTkRDTEFTU0VYVyB3bmRDbGFzcyA9IHswfTsKKyAgICB3bmRDbGFzcy5jYlNpemUg
PSBzaXplb2Yod25kQ2xhc3MpOworICAgIHduZENsYXNzLnN0eWxlID0gQ1NfSFJFRFJBVyB8IENT
X1ZSRURSQVc7CisgICAgd25kQ2xhc3MubHBmblduZFByb2MgPSBEZWZXaW5kb3dQcm9jOworICAg
IHduZENsYXNzLmhDdXJzb3IgPSBMb2FkQ3Vyc29yKDAsIElEQ19BUlJPVyk7CisgICAgd25kQ2xh
c3MuaEluc3RhbmNlID0gR2V0TW9kdWxlSGFuZGxlKDApOworICAgIHduZENsYXNzLmxwc3pDbGFz
c05hbWUgPSBob3N0V2luZG93Q2xhc3NOYW1lOworCisgICAgOjpSZWdpc3RlckNsYXNzRXhXKCZ3
bmRDbGFzcyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMp
CisgICAgOiBtX3dpbmRvdyhudWxscHRyKQorICAgICwgbV93aW5kb3dJc0tleSh0cnVlKQorICAg
ICwgbV9vcHRpb25zKG9wdGlvbnMpCit7CisgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOworCisg
ICAgUkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAsIDYwMH07CisgICAgbV93aW5kb3cgPSA6OkNy
ZWF0ZVdpbmRvd0V4KAorICAgICAgICAwLAorICAgICAgICBob3N0V2luZG93Q2xhc3NOYW1lLAor
ICAgICAgICB0ZXN0UnVubmVyV2luZG93TmFtZSwKKyAgICAgICAgV1NfT1ZFUkxBUFBFRFdJTkRP
VywKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgdmlld1JlY3QucmlnaHQsCisgICAg
ICAgIHZpZXdSZWN0LmJvdHRvbSwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgR2V0
TW9kdWxlSGFuZGxlKDApLAorICAgICAgICAwKTsKKyAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUo
dmlld1JlY3QsIGNvbmZpZ3VyYXRpb24sIG1fd2luZG93KTsKKyAgICBXS1ZpZXdTZXRJc0luV2lu
ZG93KG1fdmlldywgdHJ1ZSk7CisKKyAgICBTaG93V2luZG93KG1fd2luZG93LCBTV19TSE9XKTsK
K30KKworUGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKK3sKKyAgICBpZiAoOjpJ
c1dpbmRvdyhtX3dpbmRvdykpCisgICAgICAgIDo6RGVzdHJveVdpbmRvdyhtX3dpbmRvdyk7Cit9
CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0LCBXZWJWaWV3U2l6aW5nTW9kZSkKK3sKKyAgICA6OlNldFdpbmRvd1BvcygKKyAg
ICAgICAgV0tWaWV3R2V0V2luZG93KG1fdmlldyksCisgICAgICAgIDAsCisgICAgICAgIDAsCisg
ICAgICAgIDAsCisgICAgICAgIHdpZHRoLAorICAgICAgICBoZWlnaHQsCisgICAgICAgIFNXUF9O
T01PVkUgfCBTV1BfTk9aT1JERVIgfCBTV1BfTk9BQ1RJVkFURSB8IFNXUF9OT0NPUFlCSVRTKTsK
K30KKworV0tQYWdlUmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpCit7CisgICAgcmV0dXJuIFdL
Vmlld0dldFBhZ2UobV92aWV3KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkK
K3sKKyAgICA6OlNldEZvY3VzKDo6V0tWaWV3R2V0V2luZG93KG1fdmlldykpOworfQorCitXS1Jl
Y3QgUGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dGcmFtZSgpCit7CisgICAgV0tSZWN0IHdrRnJhbWUg
PSB7MH07CisgICAgUkVDVCByOworCisgICAgaWYgKDo6R2V0V2luZG93UmVjdChtX3dpbmRvdywg
JnIpKSB7CisgICAgICAgIHdrRnJhbWUub3JpZ2luLnggPSByLmxlZnQ7CisgICAgICAgIHdrRnJh
bWUub3JpZ2luLnkgPSByLnRvcDsKKyAgICAgICAgd2tGcmFtZS5zaXplLndpZHRoID0gci5yaWdo
dCAtIHIubGVmdDsKKyAgICAgICAgd2tGcmFtZS5zaXplLmhlaWdodCA9IHIuYm90dG9tIC0gci50
b3A7CisgICAgfQorCisgICAgcmV0dXJuIHdrRnJhbWU7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJW
aWV3OjpzZXRXaW5kb3dGcmFtZShXS1JlY3QgZnJhbWUsIFdlYlZpZXdTaXppbmdNb2RlKQorewor
ICAgIDo6U2V0V2luZG93UG9zKAorICAgICAgICBtX3dpbmRvdywKKyAgICAgICAgMCwKKyAgICAg
ICAgZnJhbWUub3JpZ2luLngsCisgICAgICAgIGZyYW1lLm9yaWdpbi55LAorICAgICAgICBmcmFt
ZS5zaXplLndpZHRoLAorICAgICAgICBmcmFtZS5zaXplLmhlaWdodCwKKyAgICAgICAgU1dQX05P
Wk9SREVSIHwgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9DT1BZQklUUyk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygpCit7Cit9CisKK3ZvaWQgUGxhdGZv
cm1XZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdl
YlZpZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2Vi
Vmlldzo6YWRkVG9XaW5kb3coKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3Zl
RnJvbVdpbmRvdygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dJc0tl
eShib29sIHdpbmRvd0lzS2V5KQoreworICAgIG1fd2luZG93SXNLZXkgPSB3aW5kb3dJc0tleTsK
K30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQor
eworfQorCisjaWYgVVNFKENBSVJPKQorc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogZ2VuZXJhdGVD
YWlyb1N1cmZhY2VGcm9tQml0bWFwKEJJVE1BUCBiaXRtYXBUYWcpCit7CisgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKAorICAgICAgICBDQUlS
T19GT1JNQVRfQVJHQjMyLAorICAgICAgICBiaXRtYXBUYWcuYm1XaWR0aCwKKyAgICAgICAgYml0
bWFwVGFnLmJtSGVpZ2h0KTsKKworICAgIHVuc2lnbmVkIGNoYXIqIHNyYyA9ICh1bnNpZ25lZCBj
aGFyKiliaXRtYXBUYWcuYm1CaXRzOworICAgIGludCBzcmNQaXRjaCA9IGJpdG1hcFRhZy5ibVdp
ZHRoQnl0ZXM7CisgICAgdW5zaWduZWQgY2hhciogZHN0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShpbWFnZSk7CisgICAgaW50IGRzdFBpdGNoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfc3RyaWRlKGltYWdlKTsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgYml0bWFwVGFnLmJt
SGVpZ2h0OyB5KyspIHsKKyAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCBkc3RQaXRjaCk7CisgICAg
ICAgIHNyYyArPSBzcmNQaXRjaDsKKyAgICAgICAgZHN0ICs9IGRzdFBpdGNoOworICAgIH0KKwor
ICAgIHJldHVybiBpbWFnZTsKK30KKworY2Fpcm9fc3VyZmFjZV90KiBQbGF0Zm9ybVdlYlZpZXc6
OndpbmRvd1NuYXBzaG90SW1hZ2UoKQoreworICAgIFJFQ1Qgd2luZG93UmVjdDsKKyAgICA6Okdl
dENsaWVudFJlY3QobV93aW5kb3csICZ3aW5kb3dSZWN0KTsKKyAgICBMT05HIHdpZHRoID0gd2lu
ZG93UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdDsKKyAgICBMT05HIGhlaWdodCA9IHdpbmRv
d1JlY3QuYm90dG9tIC0gd2luZG93UmVjdC50b3A7CisKKyAgICBXZWJDb3JlOjpIV25kREMgd2lu
ZG93REMobV93aW5kb3cpOworICAgIGF1dG8gbWVtb3J5REMgPSBhZG9wdEdESU9iamVjdCg6OkNy
ZWF0ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOworCisgICAgQklUTUFQSU5GTyBiaXRtYXBJbmZv
ID0gezB9OworICAgIFdLUmVjdCB3a0ZyYW1lID0gd2luZG93RnJhbWUoKTsKKyAgICBiaXRtYXBJ
bmZvLmJtaUhlYWRlci5iaVNpemUgPSBzaXplb2YoQklUTUFQSU5GT0hFQURFUik7CisgICAgYml0
bWFwSW5mby5ibWlIZWFkZXIuYmlXaWR0aCA9IHdpZHRoOworICAgIGJpdG1hcEluZm8uYm1pSGVh
ZGVyLmJpSGVpZ2h0ID0gLWhlaWdodDsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVBsYW5l
cyA9IDE7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlCaXRDb3VudCA9IDMyOworICAgIGJp
dG1hcEluZm8uYm1pSGVhZGVyLmJpQ29tcHJlc3Npb24gPSBCSV9SR0I7CisgICAgYml0bWFwSW5m
by5ibWlIZWFkZXIuYmlTaXplSW1hZ2UgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisKKyAgICB2b2lk
KiBiaXRzUG9pbnRlciA9IDA7CisgICAgYXV0byBiaXRtYXAgPSBhZG9wdEdESU9iamVjdCg6OkNy
ZWF0ZURJQlNlY3Rpb24od2luZG93REMsICZiaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgJmJp
dHNQb2ludGVyLCAwLCAwKSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgOjpTZWxlY3RPYmplY3QobWVtb3J5REMuZ2V0KCksIGJpdG1hcC5nZXQoKSk7
CisgICAgOjpCaXRCbHQobWVtb3J5REMuZ2V0KCksCisgICAgICAgIDAsCisgICAgICAgIDAsCisg
ICAgICAgIHdpZHRoLAorICAgICAgICBoZWlnaHQsCisgICAgICAgIHdpbmRvd0RDLAorICAgICAg
ICAwLAorICAgICAgICAwLAorICAgICAgICBTUkNDT1BZKTsKKworICAgIEJJVE1BUCBiaXRtYXBU
YWcgPSB7MH07CisgICAgR2V0T2JqZWN0KGJpdG1hcC5nZXQoKSwgc2l6ZW9mKGJpdG1hcFRhZyks
ICZiaXRtYXBUYWcpOworICAgIEFTU0VSVChiaXRtYXBUYWcuYm1CaXRzUGl4ZWwgPT0gMzIpOwor
CisgICAgcmV0dXJuIGdlbmVyYXRlQ2Fpcm9TdXJmYWNlRnJvbUJpdG1hcChiaXRtYXBUYWcpOwor
fQorI2VuZGlmCisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpjaGFuZ2VXaW5kb3dTY2FsZUlmTmVl
ZGVkKGZsb2F0KQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0TmF2aWdhdGlvbkdl
c3R1cmVzRW5hYmxlZChib29sKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9yY2VX
aW5kb3dGcmFtZXNDaGFuZ2VkKCkKK3sKK30KKworYm9vbCBQbGF0Zm9ybVdlYlZpZXc6OmRyYXdz
QmFja2dyb3VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBsYXRm
b3JtV2ViVmlldzo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpCit7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRy
b2xsZXJXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJX
aW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZDUyNTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJvbGxlcldp
bi5jcHAKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJv
bGxlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS1N0cmluZ0NGLmg+CisjaW5jbHVkZSA8V2luQmFzZS5oPgorI2luY2x1ZGUgPGZj
bnRsLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8
c3RyaW5nPgorI2luY2x1ZGUgPHRjaGFyLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKworI2RlZmluZSBJTkpFQ1RFRF9CVU5ETEVfRExMX05BTUUg
IlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5kbGwiCisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0
aWMgSEFORExFIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50Oworc3RhdGljIGNvbnN0IGNoYXIgd2Vi
UHJvY2Vzc0NyYXNoaW5nRXZlbnROYW1lW10gPSAiV2ViS2l0VGVzdFJ1bm5lci5XZWJQcm9jZXNz
Q3Jhc2hpbmciOworLy8gVGhpcyBpcyB0aGUgbG9uZ2VzdCB3ZSdsbCB3YWl0IChpbiBzZWNvbmRz
KSBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGZpbmlzaCBjcmFzaGluZyBhbmQgYSBjcmFzaAorLy8g
bG9nIHRvIGJlIHNhdmVkLiBUaGlzIGludGVydmFsIHNob3VsZCBiZSBqdXN0IGEgdGlueSBiaXQg
bG9uZ2VyIHRoYW4gaXQgd2lsbCBldmVyIHJlYXNvbmFibHkKKy8vIHRha2UgdG8gc2F2ZSBhIGNy
YXNoIGxvZy4KK3N0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bVdhaXRGb3JXZWJQcm9jZXNzVG9D
cmFzaCA9IDYwOworCisKK3N0YXRpYyBMT05HIFdJTkFQSSBleGNlcHRpb25GaWx0ZXIoRVhDRVBU
SU9OX1BPSU5URVJTKikKK3sKKyAgICBmcHV0cygiI0NSQVNIRURcbiIsIHN0ZGVycik7CisgICAg
ZmZsdXNoKHN0ZGVycik7CisgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9TRUFSQ0g7Cit9
CisKK2VudW0gUnVuTG9vcFJlc3VsdCB7IFRpbWVkT3V0LCBPYmplY3RTaWduYWxlZCwgQ29uZGl0
aW9uU2F0aXNmaWVkIH07CisKK3N0YXRpYyBSdW5Mb29wUmVzdWx0IHJ1blJ1bkxvb3BVbnRpbChi
b29sJiBjb25kaXRpb24sIEhBTkRMRSBvYmplY3QsIGRvdWJsZSB0aW1lb3V0KQoreworICAgIERX
T1JEIGVuZCA9IDo6R2V0VGlja0NvdW50KCkgKyB0aW1lb3V0ICogMTAwMDsKKyAgICBpZiAodGlt
ZW91dCA8IDApCisgICAgICAgIGVuZCA9IFVMT05HX01BWDsKKworICAgIHdoaWxlICghY29uZGl0
aW9uKSB7CisgICAgICAgIERXT1JEIG5vdyA9IDo6R2V0VGlja0NvdW50KCk7CisgICAgICAgIGlm
IChub3cgPiBlbmQpCisgICAgICAgICAgICByZXR1cm4gVGltZWRPdXQ7CisKKyAgICAgICAgRFdP
UkQgd2FpdCA9IGVuZCAtIG5vdzsKKyAgICAgICAgRFdPUkQgb2JqZWN0Q291bnQgPSBvYmplY3Qg
PyAxIDogMDsKKyAgICAgICAgY29uc3QgSEFORExFKiBvYmplY3RzID0gb2JqZWN0ID8gJm9iamVj
dCA6IDA7CisKKyAgICAgICAgRFdPUkQgcmVzdWx0ID0gOjpNc2dXYWl0Rm9yTXVsdGlwbGVPYmpl
Y3RzRXgob2JqZWN0Q291bnQsIG9iamVjdHMsIHdhaXQsIFFTX0FMTElOUFVULCBNV01PX0lOUFVU
QVZBSUxBQkxFKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBXQUlUX1RJTUVPVVQpCisgICAgICAg
ICAgICByZXR1cm4gVGltZWRPdXQ7CisKKyAgICAgICAgaWYgKG9iamVjdENvdW50ICYmIHJlc3Vs
dCA+PSBXQUlUX09CSkVDVF8wICYmIHJlc3VsdCA8IFdBSVRfT0JKRUNUXzAgKyBvYmplY3RDb3Vu
dCkKKyAgICAgICAgICAgIHJldHVybiBPYmplY3RTaWduYWxlZDsKKworICAgICAgICBBU1NFUlQo
cmVzdWx0ID09IFdBSVRfT0JKRUNUXzAgKyBvYmplY3RDb3VudCk7CisgICAgICAgIC8vIFRoZXJl
IGFyZSBtZXNzYWdlcyBpbiB0aGUgcXVldWUuIFByb2Nlc3MgdGhlbS4KKyAgICAgICAgTVNHIG1z
ZzsKKyAgICAgICAgd2hpbGUgKDo6UGVla01lc3NhZ2VXKCZtc2csIDAsIDAsIDAsIFBNX1JFTU9W
RSkpIHsKKyAgICAgICAgICAgIDo6VHJhbnNsYXRlTWVzc2FnZSgmbXNnKTsKKyAgICAgICAgICAg
IDo6RGlzcGF0Y2hNZXNzYWdlVygmbXNnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBDb25kaXRpb25TYXRpc2ZpZWQ7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5vdGlmeURv
bmUoKQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRIaWRkZW4oYm9vbCkKK3sKK30K
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKKyAgICAvLyBD
eWd3aW4gY2FsbHMgOjpTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyksIHdoaWNo
IHdlIHdpbGwgaW5oZXJpdC4gVGhpcyBpcyBiYWQgZm9yCisgICAgLy8gdGVzdGluZy9kZWJ1Z2dp
bmcsIGFzIGl0IGNhdXNlcyB0aGUgcG9zdC1tb3J0ZW0gZGVidWdnZXIgbm90IHRvIGJlIGludm9r
ZWQuIFdlIHJlc2V0IHRoZQorICAgIC8vIGVycm9yIG1vZGUgaGVyZSB0byB3b3JrIGFyb3VuZCBD
eWd3aW4ncyBiZWhhdmlvci4gU2VlIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU1MjIyPi4KKyAgICA6
OlNldEVycm9yTW9kZSgwKTsKKworICAgIDo6U2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyKGV4
Y2VwdGlvbkZpbHRlcik7CisKKyAgICBfc2V0bW9kZSgxLCBfT19CSU5BUlkpOworICAgIF9zZXRt
b2RlKDIsIF9PX0JJTkFSWSk7CisKKyAgICB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVudCA9IDo6Q3Jl
YXRlRXZlbnRBKDAsIEZBTFNFLCBGQUxTRSwgd2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnROYW1lKTsK
K30KKworV0tQcmVmZXJlbmNlc1JlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1QcmVmZXJlbmNl
cygpCit7CisgICAgcmV0dXJuIFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMobV9wYWdlR3JvdXAu
Z2V0KCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybURlc3Ryb3koKQorewor
fQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvV0soY29uc3QgY2hhciogc3Ry
aW5nKQoreworICAgIHJldHVybiBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4oQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQoreworICAgIC8vIEZJWE1FOiBGSVhN
RSEgTk8gV0tDb250ZXh0U2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyBpbiBBUEkgbGlzdAor
ICAgIC8vIEZJWE1FOiBNYWtlIERSVCBwYXNzIHdpdGggV2luZG93cyBuYXRpdmUgY29udHJvbHMu
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzI1NTkyPgorICAgIC8vIFdLQ29udGV4dFNldFNob3VsZFBh
aW50TmF0aXZlQ29udHJvbHMobV9jb250ZXh0LmdldCgpLCBmYWxzZSk7CisKKyAgICBXS0NvbnRl
eHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUobV9jb250ZXh0Lmdl
dCgpLCB0b1dLKHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50TmFtZSkuZ2V0KCkpOworfQorCit2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wmIGNvbmRpdGlvbiwgV1RGOjpT
ZWNvbmRzIHRpbWVvdXQpCit7CisgICAgUnVuTG9vcFJlc3VsdCByZXN1bHQgPSBydW5SdW5Mb29w
VW50aWwoY29uZGl0aW9uLCB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVudCwgdGltZW91dC5zZWNvbmRz
KCkpOworICAgIGlmIChyZXN1bHQgPT0gVGltZWRPdXQgfHwgcmVzdWx0ID09IENvbmRpdGlvblNh
dGlzZmllZCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChyZXN1bHQgPT0gT2JqZWN0U2ln
bmFsZWQpOworCisgICAgLy8gVGhlIHdlYiBwcm9jZXNzIGlzIGNyYXNoaW5nLiBBIGNyYXNoIGxv
ZyBtaWdodCBiZSBiZWluZyBzYXZlZCwgd2hpY2ggY2FuIHRha2UgYSBsb25nCisgICAgLy8gdGlt
ZSwgYW5kIHdlIGRvbid0IHdhbnQgdG8gdGltZSBvdXQgd2hpbGUgdGhhdCBoYXBwZW5zLgorCisg
ICAgLy8gRmlyc3QsIGxldCB0aGUgdGVzdCBoYXJuZXNzIGtub3cgdGhpcyBoYXBwZW5lZCBzbyBp
dCB3b24ndCB0aGluayB3ZSd2ZSBodW5nLiBCdXQKKyAgICAvLyBtYWtlIHN1cmUgd2UgZG9uJ3Qg
ZXhpdCBqdXN0IHlldCEKKyAgICBtX3Nob3VsZEV4aXRXaGVuV2ViUHJvY2Vzc0NyYXNoZXMgPSBm
YWxzZTsKKyAgICBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICBtX3Nob3VsZEV4aXRXaGVuV2ViUHJv
Y2Vzc0NyYXNoZXMgPSB0cnVlOworCisgICAgLy8gVGhlbiBzcGluIGEgcnVuIGxvb3AgdW50aWwg
aXQgZmluaXNoZXMgY3Jhc2hpbmcgdG8gZ2l2ZSB0aW1lIGZvciBhIGNyYXNoIGxvZyB0byBiZSBz
YXZlZC4gSWYKKyAgICAvLyBpdCB0YWtlcyB0b28gbG9uZyBmb3IgYSBjcmFzaCBsb2cgdG8gYmUg
c2F2ZWQsIHdlJ2xsIGp1c3QgZ2l2ZSB1cC4KKyAgICBib29sIG5ldmVyU2V0Q29uZGl0aW9uID0g
ZmFsc2U7CisgICAgcmVzdWx0ID0gcnVuUnVuTG9vcFVudGlsKG5ldmVyU2V0Q29uZGl0aW9uLCAw
LCBtYXhpbXVtV2FpdEZvcldlYlByb2Nlc3NUb0NyYXNoKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0ID09IFRpbWVkT3V0KTsKKyAgICBleGl0KDEpOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybURpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUGF0aCgpCit7CisgICAgbV9pbmplY3RlZEJ1bmRs
ZVBhdGguYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoSU5KRUNURURfQlVORExF
X0RMTF9OQU1FKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0UGx1
Z2luRGlyZWN0b3J5KCkKK3sKKyAgICBUQ0hBUiBleGVQYXRoW01BWF9QQVRIXTsKKyAgICBpZiAo
OjpHZXRNb2R1bGVGaWxlTmFtZShudWxscHRyLCBleGVQYXRoLCBNQVhfUEFUSCkpIHsKKyAgICAg
ICAgVENIQVIgZHJpdmVbX01BWF9EUklWRV07CisgICAgICAgIFRDSEFSIGRpcltfTUFYX0RJUl07
CisgICAgICAgIF90c3BsaXRwYXRoKGV4ZVBhdGgsIGRyaXZlLCBkaXIsIG51bGxwdHIsIG51bGxw
dHIpOworCisgICAgICAgIFRDSEFSIGJ1bmRsZURpcltNQVhfUEFUSF07CisgICAgICAgIF90Y3Nu
Y3B5KGJ1bmRsZURpciwgZHJpdmUsIE1BWF9QQVRIKTsKKyAgICAgICAgX3Rjc25jYXQoYnVuZGxl
RGlyLCBkaXIsIE1BWF9QQVRIIC0gX01BWF9EUklWRSk7CisKKyAgICAgICAgY2hhciBidW5kbGVE
aXJVVEY4W01BWF9QQVRIXTsKKyAgICAgICAgOjpXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgs
IDAsIGJ1bmRsZURpciwgLTEsIGJ1bmRsZURpclVURjgsIE1BWF9QQVRILCBudWxscHRyLCBudWxs
cHRyKTsKKworICAgICAgICBtX3Rlc3RQbHVnaW5EaXJlY3RvcnkuYWRvcHQoV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYnVuZGxlRGlyVVRGOCkpOworICAgIH0KK30KKwordm9pZCBUZXN0
Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZvcm1XZWJWaWV3KikKK3sKKyAgICAvLyBGSVhNRTog
TmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHNob3dNb2RhbERpYWxvZy4KKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCitXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
Q29udGV4dCgpCit7CisgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKworY29uc3QgY2hh
ciogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0
aW9uJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3Jt
U3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9wdGlvbnMmLCBjb25zdCBzdGQ6OnN0cmlu
ZyYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVu
bmVyUHJlZml4LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RSdW5u
ZXJQcmVmaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0Yzc0Y2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0
UnVubmVyUHJlZml4LmNwcApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5o
IgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vbWFpbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3dpbi9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41ZmQ5ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93aW4vbWFpbi5jcHAKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisKK2V4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxleHBvcnQpIGludCBXSU5BUEkgZGxsTGF1bmNoZXJFbnRyeVBvaW50KGlu
dCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCit7CisgICAgV1RSOjpUZXN0Q29udHJvbGxlciBj
b250cm9sbGVyKGFyZ2MsIGFyZ3YpOworICAgIHJldHVybiAwOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354525</attachid>
            <date>2018-11-11 19:05:36 -0800</date>
            <delta_ts>2018-11-11 19:46:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189257-20181112120339.patch</filename>
            <type>text/plain</type>
            <size>90876</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhY2ZmMzQ4ZGVjMGUwZmMz
NWMwNTU2N2E1ZWMxMWIxZWFlNTc2NmEuLmYxMjU2NWFmMjNhY2YwMTg2MjBlMmJhNjNlNmM2MmU0
NmJlZTllZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMTEgIFRha2FzaGkg
S29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgUmVzdXJyZWN0IFdl
YktpdFRlc3RSdW5uZXIgZm9yIFdpbmRvd3MgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKwogMjAxOC0xMS0w
OSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIEltcGxlbWVudCBTUEkgb24gV0tXZWJWaWV3IHRvIGluY3JlYXNlIGFuZCBkZWNyZWFzZSBs
aXN0IGxldmVscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggM2RkNTY0Mzc3NzkzMTg2YTMz
OWFlZGY5MWI4ODkzZDRhYWUwOTA3ZC4uMDA1NDk4NjFlZTdmOGRlNGQ3NzZjYTlmM2U2Mzc1ZDJk
MmQyYzk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xOTUsNiArMTk1LDcgQEAgV0VC
S0lUX1dSQVBfU09VUkNFTElTVCgke1dlYktpdF9TT1VSQ0VTfSkKIHNldChXZWJLaXRfRk9SV0FS
RElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgU2hhcmVkL0FQSS9jCiAKKyAgICBTaGFyZWQv
QVBJL2MvY2Fpcm8KICAgICBTaGFyZWQvQVBJL2MvY2YKICAgICBTaGFyZWQvQVBJL2Mvd2luCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKaW5kZXggZjIyZjNmMTgzZDQ0ZmUyYjYxMGRjZDMwNTQ0OTgyODE0
OTQxMDhmOC4uMDgxZGFlYzQ5N2JlNjgxMDYxNGE0ZTEwNmQyZDIwMmU2MmM1Nzc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UKQEAgLTg0LDYgKzg0LDcgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9D
QUlST30pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwg
UFVCTElDIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1QgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFVCTElDIE9OKQorICAgIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFU1NJQklMSVRZIFBSSVZBVEUgT04pCiAKICAgICAj
IEZJWE1FOiBJbXBsZW1lbnQgcGx1Z2luIHByb2Nlc3Mgb24gTW9kZXJuIFdlYktpdC4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTMxMwogICAgIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUg
T0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQzZWU1MzIyMTgzZGRmNDNmOGQ4MWY1ZWQ0YjBkNzUwNGY4ZTM1NTAuLjU2NjgyYTI0ZTJjYzE4
MWIwYzJmYjA2YWY4OTE1ODc2NjFlMDg5NDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNzQgQEAKKzIwMTgtMTEtMTEgIFRha2Fz
aGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgUmVzdXJyZWN0
IFdlYktpdFRlc3RSdW5uZXIgZm9yIFdpbmRvd3MgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKwlJbXBsZW1lbnQgV2ViS2l0VGVzdFJ1bm5lciBmb3IgV2luQ2Fp
cm8uCisKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBTY3JpcHRzL2J1
aWxkLXdlYmtpdHRlc3RydW5uZXI6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHA6CisgICAgICAgIChXVFI6OnJhbmdlVG9TdHIpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OlRlc3RSdW5uZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcDogQWRkZWQuCisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0aW9uTGlz
dGVuZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90
aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVt
ZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFD
b250cm9sc0VsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCBjb25zdCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkRvY3Vt
ZW50TGlua3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZDaGlsZHJlbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFs
bEF0dHJpYnV0ZXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJp
bmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om51bWJlckF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzIGNvbnN0KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUgY29u
c3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRl
VmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0
ZVNldHRhYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRy
aWJ1dGVTdXBwb3J0ZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
YXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3Vicm9sZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNj
cmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVk
Um9sZVN0cmluZyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbiBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCBjb25zdCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp5KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
d2lkdGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUgY29uc3QpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcik6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luY3JlbWVudEFjdGlvblN1cHBvcnRl
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRGVjcmVtZW50QWN0
aW9uU3VwcG9ydGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNF
bmFibGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJl
ZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNl
ZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0
ZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVj
dGVkT3B0aW9uQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQ2hlY2tlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxl
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudENvdW50
Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VsZWN0VGV4dFdpdGhDcml0ZXJpYSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1u
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJv
d3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZW
aXNpYmxlQ2VsbHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZIZWFkZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b3dDb3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkNv
dW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2Up
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjZWxsRm9yQ29sdW1uQW5k
Um93KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNj
cm9sbGJhciBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZl
cnRpY2FsU2Nyb2xsYmFyIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluY3JlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRlY3JlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNob3dNZW51KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJlc3Mp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxk
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0
ZWRDaGlsZEF0SW5kZXggY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2xlYXJTZWxlY3RlZENoaWxkcmVuIGNvbnN0KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZyk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNv
bnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNl
bGVjdGFibGUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1Zpc2libGUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c09mZlNjcmVlbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzQ29sbGFwc2VkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNJZ25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTaW5nbGVMaW5lIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNNdWx0aUxpbmUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoYXNQb3B1cCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRha2VGb2N1cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRha2VTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
ZGRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5l
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvckJvdW5kcyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5k
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JQ
b2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlV2l0aE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxpZCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtl
cik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2li
bGVUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3Jv
bGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2Nyb2xsVG9HbG9iYWxQb2ludCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdXBwb3J0ZWRBY3Rpb25zIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRp
b24gY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJl
c2NyaXB0c0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2xhc3NMaXN0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp3b3JkQXRPZmZzZXQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpsaW5lQXRPZmZzZXQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZW50ZW5jZUF0T2Zmc2V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL3dpbi9BY3RpdmF0ZUZvbnRzV2luLmNwcDogQ29waWVkIGZyb20gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwLgorICAg
ICAgICAoV1RSOjphY3RpdmF0ZUZvbnRzKToKKyAgICAgICAgKFdUUjo6aW5zdGFsbEZha2VIZWx2
ZXRpY2EpOgorICAgICAgICAoV1RSOjp1bmluc3RhbGxGYWtlSGVsdmV0aWNhKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5j
cHA6IENvcGllZCBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVNYWluLmNwcC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS93aW4vVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4LmNwcDogQWRkZWQuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lckluamVjdGVk
QnVuZGxlUHJlZml4Lmg6IENvcGllZCBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcDogQ29waWVkIGZyb20gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3Bw
LgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJVUkwpOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjppbnZhbGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIpOgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omluc3RhbGxGYWtlSGVsdmV0aWNhKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XaW4uY21ha2U6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RV
UkwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eSk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6On5FdmVudFNlbmRlclByb3h5KToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VTY3JvbGxC
eSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmNv
bnRpbnVvdXNNb3VzZVNjcm9sbEJ5KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6
bGVhcEZvcndhcmQpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjprZXlEb3duKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdUUjo6cmVnaXN0ZXJXaW5kb3dDbGFzcyk6CisgICAgICAgIChXVFI6
OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZv
cm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJW
aWV3OjpyZXNpemVUbyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cGFnZSk6Cisg
ICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6Zm9jdXMpOgorICAgICAgICAoV1RSOjpQbGF0
Zm9ybVdlYlZpZXc6OndpbmRvd0ZyYW1lKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3
OjpzZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6ZGlkSW5p
dGlhbGl6ZUNsaWVudHMpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZENocm9t
ZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnJlbW92ZUNocm9t
ZUlucHV0RmllbGQpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmFkZFRvV2luZG93
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVGcm9tV2luZG93KToKKyAg
ICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dJc0tleSk6CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcik6CisgICAgICAg
IChXVFI6OmdlbmVyYXRlQ2Fpcm9TdXJmYWNlRnJvbUJpdG1hcCk6CisgICAgICAgIChXVFI6OlBs
YXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisgICAgICAgIChXVFI6OlBsYXRm
b3JtV2ViVmlldzo6Y2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCk6CisgICAgICAgIChXVFI6OlBs
YXRmb3JtV2ViVmlldzo6c2V0TmF2aWdhdGlvbkdlc3R1cmVzRW5hYmxlZCk6CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6Zm9yY2VXaW5kb3dGcmFtZXNDaGFuZ2VkKToKKyAgICAgICAg
KFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpkcmF3c0JhY2tncm91bmQgY29uc3QpOgorICAgICAgICAo
V1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnNldERyYXdzQmFja2dyb3VuZCk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdUUjo6ZXhjZXB0aW9uRmlsdGVyKToKKyAgICAgICAgKFdUUjo6cnVuUnVuTG9vcFVudGlsKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Om5vdGlmeURvbmUpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6c2V0SGlkZGVuKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtRGVzdHJveSk6CisgICAgICAgIChXVFI6OnRvV0spOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtRGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtTGlicmFyeVBhdGhGb3JUZXN0aW5nKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0
aW9uc0ZvclRlc3QgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1dlYktp
dFRlc3RSdW5uZXJQcmVmaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L3dpbi9tYWluLmNwcDogQ29waWVkIGZyb20gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwLgorICAgICAgICAoZGxsTGF1bmNoZXJFbnRy
eVBvaW50KToKKwogMjAxOC0xMS0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ29jb2FdIEltcGxlbWVudCBTUEkgb24gV0tXZWJWaWV3IHRvIGlu
Y3JlYXNlIGFuZCBkZWNyZWFzZSBsaXN0IGxldmVscwpkaWZmIC0tZ2l0IGEvVG9vbHMvUGxhdGZv
cm1XaW4uY21ha2UgYi9Ub29scy9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBlNGUyZTdhNTQ0NmI4
NzA2ODlmNjU0MjI2ODY3ZWU2YWVhNDZkODM1Li5hY2ZkOTg1Y2MxZDg3YjA3N2IxNjIwNjdmZTMw
NjUxMTE2OTY4ZWFlIDEwMDY0NAotLS0gYS9Ub29scy9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9U
b29scy9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNCwzICs0LDcgQEAgYWRkX3N1YmRpcmVjdG9yeShJ
bWFnZURpZmYpCiBpZiAoRU5BQkxFX1dFQktJVF9MRUdBQ1kpCiAgICAgYWRkX3N1YmRpcmVjdG9y
eShNaW5pQnJvd3Nlci93aW4pCiBlbmRpZiAoKQorCitpZiAoRU5BQkxFX1dFQktJVCkKKyAgICBh
ZGRfc3ViZGlyZWN0b3J5KFdlYktpdFRlc3RSdW5uZXIpCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyIGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXR0ZXN0cnVubmVyCmluZGV4IDE3NzM3ZmE5ODk3YWZkMjg1MDg0OTQxNmI2Nzk5NGNh
Y2E1MGRmYzMuLjE4NmE0NWQzNjEyMjMwZTRhMDU2MGJkZWRmNWUzNDA1ZGJiZjYxNWEgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgorKysgYi9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKQEAgLTYyLDggKzYyLDggQEAgY2hkaXIgIlRv
b2xzL1dlYktpdFRlc3RSdW5uZXIiIG9yIGRpZTsKIG15ICRyZXN1bHQ7CiBpZiAoaXNBcHBsZUNv
Y29hV2ViS2l0KCkpIHsKICAgICAkcmVzdWx0ID0gYnVpbGRYQ29kZVByb2plY3QoIldlYktpdFRl
c3RSdW5uZXIiLCAkY2xlYW4sIFhjb2RlT3B0aW9ucygpLCBAQVJHVik7Ci19IGVsc2lmIChpc0d0
aygpIHx8IGlzV1BFKCkgfHwgaXNQbGF5U3RhdGlvbigpKSB7Ci0gICAgIyBHVEsrLCBXUEUsIGFu
ZCBQbGF5U3RhdGlvbiBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBzaG90LiBObyBuZWVkIHRvIGJ1
aWxkIGFueXRoaW5nIGhlcmUuCit9IGVsc2lmIChpc0d0aygpIHx8IGlzV1BFKCkgfHwgaXNQbGF5
U3RhdGlvbigpIHx8IGlzQW55V2luZG93cygpKSB7CisgICAgIyBHVEsrLCBXUEUsIFBsYXlTdGF0
aW9uLCBhbmQgV2luZG93cyBidWlsZCBldmVyeXRoaW5nIGluIG9uZSBzaG90LiBObyBuZWVkIHRv
IGJ1aWxkIGFueXRoaW5nIGhlcmUuCiAgICAgJHJlc3VsdCA9IDA7CiB9IGVsc2UgewogICAgIGRp
ZSAiV2ViS2l0VGVzdFJ1bm5lciBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uXG4i
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggZmJkZmZkYWRlOTU2YTM0
OGI3MDY4YmNiYzAzZmM1ODNhYzRmNzNmNC4uNzUwMDliYmI0NzkzNjI0ODUwZjQyMWNmMjY4OTkw
MmViYjVkYWVkOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0xMjks
NiArMTI5LDkgQEAgaWYgKENPTVBJTEVSX0lTX0dDQ19PUl9DTEFORykKICAgICBXRUJLSVRfQURE
X1RBUkdFVF9DWFhfRkxBR1MoV2ViS2l0VGVzdFJ1bm5lciAtV25vLXVudXNlZC1wYXJhbWV0ZXIp
CiBlbmRpZiAoKQogCi1pZiAoTk9UIEFQUExFKQoraWYgKFdJTjMyKQorICAgIGFkZF9kZXBlbmRl
bmNpZXMoV2ViS2l0VGVzdFJ1bm5lckxpYiBXZWJLaXRUZXN0UnVubmVyQmluZGluZ3MpCisgICAg
YWRkX2RlcGVuZGVuY2llcyhXZWJLaXRUZXN0UnVubmVyIFdlYktpdFRlc3RSdW5uZXJMaWIpCitl
bHNlaWYgKE5PVCBBUFBMRSkKICAgICBhZGRfZGVwZW5kZW5jaWVzKFdlYktpdCAke0ZvcndhcmRp
bmdIZWFkZXJzRm9yV2ViS2l0VGVzdFJ1bm5lcl9OQU1FfSkKIGVuZGlmICgpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDlkMWU2MGIwNDZmODRiMmQwMGQz
OWEzNzY1MGEyYjIyMzFjNWMzMDYuLmJmZGFkOTY1YjU2ODMyZGRhOWJiMmZjMWE2MmExMWYxZmYx
MzczYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC0y
NCw4ICsyNCw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBFdmVudFNlbmRlclByb3h5X2gKLSNkZWZpbmUgRXZlbnRTZW5kZXJQcm94eV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CkBAIC0xNDQsOSArMTQzLDEwIEBAIHByaXZhdGU6CiAgICAgdWludDMyX3QgbV9tb3Vz
ZUJ1dHRvbnNDdXJyZW50bHlEb3duIHsgMCB9OwogICAgIFZlY3RvcjxzdHJ1Y3Qgd3BlX2lucHV0
X3RvdWNoX2V2ZW50X3Jhdz4gbV90b3VjaEV2ZW50czsKICAgICBIYXNoU2V0PHVuc2lnbmVkLCBE
ZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8dW5zaWduZWQ+PiBtX3VwZGF0ZWRUb3VjaEV2ZW50czsKKyNlbGlmIFBMQVRGT1JNKFdJ
TikKKyAgICB1aW50MzJfdCBtX2J1dHRvblN0YXRlOworICAgIHVpbnQzMl90IG1fbW91c2VCdXR0
b25zQ3VycmVudGx5RG93biB7IDAgfTsKICNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RS
Ci0KLSNlbmRpZiAvLyBFdmVudFNlbmRlclByb3h5X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAKaW5kZXggN2I4MTY3NjQyMjRkOTJmOTQ1NDA0ZmRhNmNlNzFiMDBiZTAzOTU3NS4u
OWFjZjg1ODhkMzgyNzBkNzA0MzYzMjk5ZWYwNDY3M2FhZDI3ZDgwMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgpCiAgICAgcmV0dXJuIFdL
QWNjZXNzaWJpbGl0eUVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQoKTsKIH0KIAotI2lmICFQ
TEFURk9STShHVEspICYmICFQTEFURk9STShXUEUpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBSZWY8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVt
ZW50KCkKIHsKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKQEAgLTEwMCw0ICsxMDAsMyBAQCBSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50
KCkgeyByZXR1cgogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcAppbmRleCAxOWRjMGNmOTMyNjE0MWE1NzUyNDdhYjI4MTgyNTc1ZjMz
NzI0NzQxLi5hNGY2ODFjZmI1NzRjMTBmZjViNDBiZTk1NjIzYzJmZmY0YjkxYjcyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JF
bGVtZW50KCkgewogI2VuZGlmCiAgICAgCiAvLyBVbnN1cHBvcnRlZCBtZXRob2RzIG9uIHZhcmlv
dXMgcGxhdGZvcm1zLiBBcyB0aGV5J3JlIGltcGxlbWVudGVkIG9uIG90aGVyIHBsYXRmb3JtcyB0
aGlzIGxpc3Qgc2hvdWxkIGJlIG1vZGlmaWVkLgotI2lmICghUExBVEZPUk0oR1RLKSAmJiAhUExB
VEZPUk0oV1BFKSkgfHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKKyNpZiBQTEFURk9STShDT0NPQSkg
fHwgIUhBVkUoQUNDRVNTSUJJTElUWSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpIHsgcmV0dXJuIG51bGxwdHI7
IH0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3b3Jk
QXRPZmZzZXQoaW50KSB7IHJldHVybiBudWxscHRyOyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVs
bHB0cjsgfQpAQCAtMTA3LDQgKzEwNywzIEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4CiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5k
ZXggYjAwYzU0OWRhOTYyZDhmYzE3OTJjOWZjNTA1ZmRhYWNjNjY0NWEwOC4uZjI0ZGNlODY0MDA4
ZDc3NmY1MzUxNmZkMjYxZjhiYWJhOWYyNjhjNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgKQEAgLTM2MiwxMCArMzYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFVJRWxlbWVudHNX
aXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+ID4mKSBjb25zdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgZ2V0Q2hpbGRyZW4oVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBnZXRDaGlsZHJlbldp
dGhSYW5nZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mLCB1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9ub3RpZmlj
YXRpb25IYW5kbGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCmluZGV4IDRmMTI3MjIxNDc4ZmQw
NTQ3Y2Q3NWQ4MmQ2ZDBhODEyOGFmMDRhNjguLmRmYTNkMzE4ZjU3MjVjMTk4N2JjNTI2ZGI2ZWUx
MTNmZGM1MzE2ZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAKQEAgLTI0LDExICsyNCwxNSBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
LmgiCisKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVJbml0aWFsaXplLmg+CiAKKyNpZiBkZWZp
bmVkKFdJTjMyKQorZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKKyNlbHNlCiBleHRl
cm4gIkMiCisjZW5kaWYKIHZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CiAgICAgV1RSOjpJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkuaW5pdGlhbGl6ZShidW5kbGUsIGluaXRpYWxpemF0aW9uVXNl
ckRhdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDgwYTBhNDhiODE3MTkwM2NhOWM4
ZjRiNTIyMmQ0YWJkY2YxYzc4NDcuLjk2Yzg5ZDVhMThlOWIzZDYwNzYxNzEyMjBhOGY3NjcyMTNk
ZWZhOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCi0jaWYgVVNFKENGKQorI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykK
ICNpbmNsdWRlICJXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCIKICNlbmRpZgogCkBAIC0xMjMsNyAr
MTIzLDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIHJhbmdlVG9TdHIoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQKIHsKICAgICBpZiAoIXJhbmdlUmVmKQog
ICAgICAgICByZXR1cm4gIihudWxsKSI7Ci0gCisKICAgICBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
ID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOwogCiAgICAgSlNHbG9iYWxDb250ZXh0
UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChm
cmFtZSwgd29ybGQpOwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkdW1wQWxsRnJhbWVzVGV4dChTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogCiB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQogewotI2lmIFVTRShDRikKKyNp
ZiBVU0UoQ0YpICYmICFQTEFURk9STShXSU5fQ0FJUk8pCiAgICAgV0tSZXRhaW5QdHI8V0tEYXRh
UmVmPiB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkp
OwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSksIFdLRGF0YUdldFNpemUod2tEYXRhLmdl
dCgpKSkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBhZG9wdENGKFdl
YkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0
YS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZGYxYWRhZjBlMGEwMjJkODNiZDlkMjk3NDRkYjIyOWU0
NzdlNTk1NC4uNmI5ZDcwM2RiODAwMGQwOTM3Njk1Y2VhMjdkYjQ3MWQ5MDcwYjE1OCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCkBAIC05Myw3ICs5Myw3IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgICwgbV9k
YXRhYmFzZU1heFF1b3RhKC0xKQogICAgICwgbV91c2VyU3R5bGVTaGVldEVuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24oYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiIikpKQotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQor
I2lmICFQTEFURk9STShDT0NPQSkKICAgICAsIG1fd2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmVGVzdFJ1bm5lcjo6d2FpdFRvRHVtcFdhdGNoZG9nVGltZXJG
aXJlZCkKICNlbmRpZgogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBmNWIyYzIwZDIwYjRkOTM5YWRiMWRkMDIxMGYzZDBl
ZTI3ZjA0NWQ4Li5lOGJhOTdmNzE2ODRkZmNhMDc3NTczY2NhYmMxM2NlNjQzNDAyZmIxIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KIHR5cGVkZWYgUmV0YWluUHRyPENGUnVuTG9v
cFRpbWVyUmVmPiBQbGF0Zm9ybVRpbWVyUmVmOwotI2VsaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCisjZWxzZQogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiBuYW1lc3BhY2UgV1RS
IHsKIGNsYXNzIFRlc3RSdW5uZXI7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I4N2RlNjc2OTdjYjc1ZDIxN2ZlZDIyMTVmZDZlYzA3
ZjkyNWE1MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcApAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgor
CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
KworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpwbGF0Zm9ybU5hbWUoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShudWxscHRyKTsKK30KKworUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKG51bGxwdHIpOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cihKU1ZhbHVlUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdUUgorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NjBlY2E2NTg1MTg4MzI5MmUyYmY3YmIwMDFkZTZkZGNmMjAzMWRhCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0
eVVJRWxlbWVudFdpbi5jcHAKQEAgLTAsMCArMSw5NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCIKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkK
KworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdUUiB7
CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoUGxhdGZv
cm1VSUVsZW1lbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp+QWNjZXNzaWJpbGl0eVVJRWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFsKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdl
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiwgdW5zaWduZWQsIHVuc2ln
bmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjaGlsZHJlbkNvdW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiAwOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25l
ZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
a2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUZs
b3dUb0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25l
ZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlz
Y2xvc2VkUm93QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgo
dW5zaWduZWQpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGls
ZHJlbkNvdW50KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAw
OworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9z
ZWRCeVJvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4oKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVz
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0
cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJl
ckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycygpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNW
YWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6d2lkdGgoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNr
UG9pbnRZKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptaW5WYWx1ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1ByZXNzQWN0aW9uU3VwcG9ydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0luY3JlbWVudEFjdGlvblN1cHBvcnRlZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNE
ZWNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxl
ZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Nl
bGVjdGVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJj
aGljYWxMZXZlbCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNwZWFrQXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVj
dHMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUoaW50KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0aW9u
KGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpi
b3VuZHNGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCwgdW5zaWduZWQpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Vuc2lnbmVk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudENvdW50Rm9yU2VhcmNoUHJlZGljYXRl
KEpTQ29udGV4dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2wsIEpTVmFsdWVSZWYs
IEpTU3RyaW5nUmVmLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoSlNDb250ZXh0UmVmLCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KiwgYm9vbCwgSlNWYWx1ZVJlZiwgSlNTdHJpbmdSZWYsIGJv
b2wsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bGVjdFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJl
ZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVycygp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkNvbHVtbnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZSb3dzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm93Q291bnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5Db3VudCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4SW5UYWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gMDsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCwg
dW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdl
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKHVuc2lnbmVk
LCB1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVt
ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNob3dNZW51KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXNzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRB
dEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uQXRJbmRleCh1
bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsZWFyU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0Cit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0Cit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1
bmN0aW9uQ2FsbGJhY2spCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9u
TGlzdGVuZXIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1Zpc2libGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT2ZmU2NyZWVuKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNJZ25vcmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Np
bmdsZUxpbmUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlMaW5lKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGFrZUZvY3VzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24oKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkU2VsZWN0aW9u
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitpbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om5leHRUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JC
b3VuZHMoaW50LCBpbnQsIGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyRm9yQm91bmRzKGludCwgaW50LCBp
bnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZVdpdGhPcHRp
b25zKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqLCBib29sKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmli
dXRlKEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworaW50IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGV4dE1hcmtlckZvckluZGV4KGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVmlzaWJsZVRleHRSYW5nZShBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VW
aXNpYmxlV2l0aFN1YkZvY3VzKGludCwgaW50LCBpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9u
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0
aFByZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNsYXNzTGlzdCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KGludCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d29yZEF0T2Zmc2V0KGludCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KGlu
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VudGVuY2VB
dE9mZnNldChpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgIFdURgorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklM
SVRZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93
aW4vQWN0aXZhdGVGb250c1dpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL3dpbi9BY3RpdmF0ZUZvbnRzV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmMxNmZjZTI0YTQw
ZjBjYjFjYTliYTgxOGFiMGNjODBiZjlkZDhmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHAKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWN0aXZhdGVGb250cy5oIgor
CituYW1lc3BhY2UgV1RSIHsKKwordm9pZCBhY3RpdmF0ZUZvbnRzKCkKK3sKK30KKwordm9pZCBp
bnN0YWxsRmFrZUhlbHZldGljYShXS1N0cmluZ1JlZikKK3sKK30KKwordm9pZCB1bmluc3RhbGxG
YWtlSGVsdmV0aWNhKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdp
bi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3Rl
ZEJ1bmRsZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwODFmZjNhMjllOTYwNTM3NDcxYTYzYjg3Mzhi
MTliNGQyYjAwNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvd2luL0luamVjdGVkQnVuZGxlV2luLmNwcApAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorCituYW1lc3BhY2UgV1RS
IHsKKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6cGxhdGZvcm1Jbml0aWFsaXplKFdLVHlwZVJlZikK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXgu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5l
ckluamVjdGVkQnVuZGxlUHJlZml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOGVjZjM0MTQxNjA1ZjkzZmMz
NDg4YTY0YmMzNjAwYWZkZTU0ZDExCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4
LmNwcApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKyNpbmNsdWRlICJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaCIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rl
c3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJlZml4LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzhmZTQxYzI1Y2QyMTcyYzcwY2I5OTNhN2M5ZDVlYzQ4ZGIyY2I3YQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RS
dW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjdW5kZWYgV0VCQ09SRV9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0lNUE9S
VF9ERUNMQVJBVElPTgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL3dpbi9UZXN0UnVubmVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWZiZmY1YWZh
YjExMGVkN2Q3NDk4MDk3YjQ1NTdlYmUyY2VjMTY0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgorCisj
aW5jbHVkZSAiQWN0aXZhdGVGb250cy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNTdHJpbmdS
ZWYpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBUZXN0UnVubmVyOjppbnNwZWN0b3JUZXN0U3R1YlVSTCgpCit7CisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjppbnZh
bGlkYXRlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKQoreworICAgIG1fd2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXIuc3RvcCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnBsYXRmb3JtSW5pdGlhbGl6
ZSgpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6aW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVySWZOZWVkZWQoKQoreworICAgIGlmICghbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5p
c0FjdGl2ZSgpKQorICAgICAgICBtX3dhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hv
dChtX3RpbWVvdXQpOworfQorCit2b2lkIFRlc3RSdW5uZXI6Omluc3RhbGxGYWtlSGVsdmV0aWNh
KEpTU3RyaW5nUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgV1RSOjppbnN0YWxsRmFrZUhlbHZl
dGljYSh0b1dLKGNvbmZpZ3VyYXRpb24pLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RS
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBjZTM2OGZmMGU2
YTRkOWIzMWNmMTZmZWY5ODRhY2ZiMDVjM2IyNWVjLi5kYjQxOWM3ZDRmYjhiYmM0ZmJmMjhhYzZl
MWNkNTI3N2YxYTBlMTY0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtV2ViVmlld19oCi0jZGVmaW5lIFBsYXRmb3JtV2ViVmll
d19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCiAKQEAgLTQ5LDEz
ICs0OCwyMCBAQCB0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQbGF0Zm9ybUltYWdlOwog
dHlwZWRlZiBzdHJ1Y3QgX0d0a1dpZGdldCBHdGtXaWRnZXQ7CiB0eXBlZGVmIFdLVmlld1JlZiBQ
bGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgR3RrV2lkZ2V0KiBQbGF0Zm9ybVdpbmRvdzsKLXR5cGVk
ZWYgY2Fpcm9fc3VyZmFjZV90ICpQbGF0Zm9ybUltYWdlOwogI2VsaWYgUExBVEZPUk0oV1BFKQog
bmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiBjbGFzcyBIZWFkbGVzc1ZpZXdCYWNrZW5k
OwogfQogdHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIFdQRVRvb2xp
bmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZCogUGxhdGZvcm1XaW5kb3c7CisjZWxpZiBQ
TEFURk9STShXSU4pCisjaW5jbHVkZSA8Y2Fpcm8uaD4KK2NsYXNzIFRlc3RSdW5uZXJXaW5kb3c7
Cit0eXBlZGVmIEhXTkQgUGxhdGZvcm1XaW5kb3c7Cit0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9y
bVdLVmlldzsKKyNlbmRpZgorCisjaWYgVVNFKENBSVJPKQogdHlwZWRlZiBjYWlyb19zdXJmYWNl
X3QqIFBsYXRmb3JtSW1hZ2U7CiAjZW5kaWYKIApAQCAtMTI1LDUgKzEzMSwzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIFBsYXRmb3JtV2ViVmlld19o
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2luLmNtYWtlIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjQ0
Y2Q2YmU1YTMxYTI4YTQ2ZjdlNGZhM2RhOTBkODI2MzJlMTRiCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMCwwICsxLDg1IEBA
CitzZXQoV2ViS2l0VGVzdFJ1bm5lckxpYl9TT1VSQ0VTCisgICAgJHtXZWJLaXRUZXN0UnVubmVy
X1NPVVJDRVN9CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NhaXJvL1Rlc3RJbnZvY2F0
aW9uQ2Fpcm8uY3BwCisgICAgd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCisgICAgd2luL1Bs
YXRmb3JtV2ViVmlld1dpbi5jcHAKKyAgICB3aW4vVGVzdENvbnRyb2xsZXJXaW4uY3BwCisgICAg
d2luL21haW4uY3BwCispCisKK3NldChXZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMKKyAgICAke1RP
T0xTX0RJUn0vd2luL0RMTExhdW5jaGVyL0RMTExhdW5jaGVyTWFpbi5jcHAKKykKKworbGlzdChB
UFBFTkQgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL0FjdGl2YXRlRm9udHNXaW4uY3Bw
CisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9JbmplY3Rl
ZEJ1bmRsZVdpbi5jcHAKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJ
Un0vd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RF
REJVTkRMRV9ESVJ9L3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKKyAgICAke1dF
QktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vd2luL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRXaW4uY3BwCispCisKKworbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURF
X0RJUkVDVE9SSUVTCisgICAgY2Fpcm8KKyAgICB3aW4KKyAgICAke0NBSVJPX0lOQ0xVREVfRElS
U30KKyAgICAke0ZPUldBUkRJTkdfSEVBREVSU19ESVJ9CisgICAgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbgorKQorCisKK3NldChXZWJLaXRUZXN0UnVubmVyTGli
X0xJQlJBUklFUworICAgICR7V2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJRVN9CisgICAgQ29tc3Vw
cHcKKyAgICBPbGVhY2MKKykKKworbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9MSUJSQVJJ
RVMKKyAgICBXVEYKKyAgICBXZWJLaXQKKykKKworc2V0KFdlYktpdFRlc3RSdW5uZXJJbmplY3Rl
ZEJ1bmRsZV9MSUJSQVJJRVMKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQKKyAgICBXZWJLaXQKKykK
KworCitsaXN0KFJFTU9WRV9JVEVNCisgICAgV2ViS2l0VGVzdFJ1bm5lckxpYl9TT1VSQ0VTCisg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9CSU5ESU5HU19ESVJ9L0pTV3JhcHBlci5jcHAKKykKK2xp
c3QoUkVNT1ZFX0lURU0KKyAgICBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNF
UworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfQklORElOR1NfRElSfS9KU1dyYXBwZXIuY3BwCisp
CisKK1dFQktJVF9BRERfUFJFQ09NUElMRURfSEVBREVSKFdlYktpdFRlc3RSdW5uZXJQcmVmaXgu
aAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS93aW4vV2ViS2l0VGVzdFJ1bm5lclByZWZp
eC5jcHAKKyAgICBXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVMKKykKK1dFQktJVF9BRERfUFJF
Q09NUElMRURfSEVBREVSKFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5oCisgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9UZXN0UnVubmVySW5qZWN0
ZWRCdW5kbGVQcmVmaXguY3BwCisgICAgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NP
VVJDRVMKKykKKworbGlzdChBUFBFTkQKKyAgICBXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVMK
KyAgICAke1dFQktJVF9URVNUUlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNwcAorKQor
bGlzdChBUFBFTkQKKyAgICBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUwor
ICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfQklORElOR1NfRElSfS9KU1dyYXBwZXIuY3BwCispCisK
Kworc2V0KENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfU0hBUkVEX0xJTktFUl9G
TEFHU30gJHtNU1ZDX1JVTlRJTUVfTElOS0VSX0ZMQUdTfSIpCithZGRfbGlicmFyeShXZWJLaXRU
ZXN0UnVubmVyTGliIFNIQVJFRCAke1dlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFU30pCit0YXJn
ZXRfbGlua19saWJyYXJpZXMoV2ViS2l0VGVzdFJ1bm5lckxpYiAke1dlYktpdFRlc3RSdW5uZXJM
aWJfTElCUkFSSUVTfSkKKworYWRkX2RlZmluaXRpb25zKAorICAgIC1EV0lOX0NBSVJPCisgICAg
LURVU0VfQ09OU09MRV9FTlRSWV9QT0lOVAorICAgIC1EX1VOSUNPREUKKykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDU1YTlmYzgxZjkzMjJjOWE1ODlj
MmEwNWM0ZTNlN2U5NzRlNDM1Ni4uYjBlZWQ2MzYzNjUyNjU4MWM3NzJiMzliMThmYTU5MWVmNzI3
YjUxMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTY4
LDcgKzY4LDYgQEAKICNpbmNsdWRlIDxmc3RyZWFtPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lu
Y2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvQXV0b2Ry
YWluZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgpAQCAtODYsNiArODUsMTQgQEAKICNpbmNs
dWRlIDxXZWJLaXQvV0tQYWdlUHJpdmF0ZU1hYy5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShX
SU4pCisjaW5jbHVkZSA8ZGlyZWN0Lmg+CisjZGVmaW5lIGdldGN3ZCBfZ2V0Y3dkCisjZGVmaW5l
IFBBVEhfTUFYIF9NQVhfUEFUSAorI2Vsc2UKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgor
CiBuYW1lc3BhY2UgV1RSIHsKIAogY29uc3QgdW5zaWduZWQgVGVzdENvbnRyb2xsZXI6OnZpZXdX
aWR0aCA9IDgwMDsKQEAgLTg3Miw3ICs4NzksNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQog
ICAgIC8vIHNvbWUgb3RoZXIgY29kZSBkb2luZyB0aGlzLCBpdCBzaG91bGQgcHJvYmFibHkgYmUg
cmVzcG9uc2libGUgZm9yIGNsZWFudXAgdG9vLgogICAgIHJlc2V0UHJlZmVyZW5jZXNUb0NvbnNp
c3RlbnRWYWx1ZXMob3B0aW9ucyk7CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9S
TShXUEUpCisjaWYgUExBVEZPUk0oR1RLKQogICAgIFdLVGV4dENoZWNrZXJDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQodHJ1ZSk7CiAjZW5kaWYKIApAQCAtMTA5MSw4
ICsxMDk4LDE1IEBAIHN0YXRpYyBXS1VSTFJlZiBjcmVhdGVUZXN0VVJMKGNvbnN0IGNoYXIqIHBh
dGhPclVSTCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyNpZiBQTEFU
Rk9STShXSU4pCisgICAgY29uc3QgY2hhciBzZXBhcmF0b3IgPSAnXFwnOworICAgIGJvb2wgaXNB
YnNvbHV0ZVBhdGggPSBmYWxzZTsKKyAgICBpZiAoc3RybGVuKHBhdGhPclVSTCkgPj0gMyAmJiBw
YXRoT3JVUkxbMV0gPT0gJzonICYmIHBhdGhPclVSTFsyXSA9PSBzZXBhcmF0b3IpCisgICAgICAg
IGlzQWJzb2x1dGVQYXRoID0gdHJ1ZTsKKyNlbHNlCiAgICAgY29uc3QgY2hhciBzZXBhcmF0b3Ig
PSAnLyc7CiAgICAgYm9vbCBpc0Fic29sdXRlUGF0aCA9IHBhdGhPclVSTFswXSA9PSBzZXBhcmF0
b3I7CisjZW5kaWYKICAgICBjb25zdCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6Ly8iOwogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQcmVmaXgpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGQ4MWU1OGIz
OTE3YTIzYmMzMWQ1ZDc2OGViYTgxZGYwZjBlYTcyYWQuLmI4ZmNkNTdiODc1OWFhZGYzY2Q3M2Q5
OTYxZjUwN2JiOGVlNDRiOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oPgogI2luY2x1ZGUgPGNsaW1pdHM+CiAjaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1
ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU0LDYgKzUzLDEzIEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLUGFnZVByaXZhdGVNYWMuaD4KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1
ZGUgPGlvLmg+CisjZGVmaW5lIGlzYXR0eSBfaXNhdHR5CisjZWxzZQorI2luY2x1ZGUgPHVuaXN0
ZC5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJLaXRUZXN0UnVubmVyUHJlZml4LmgKaW5kZXggNWY5ODlmYzU0ZTc1MTExYTAyY2M2Njk1ODcx
OWE2YmU5NmVhYzM0YS4uZjIwMDExOTg2YzFkZWI2NjM5Nzk3OTEyNmU4MGZmZWZhZDIyOTgwMiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmgK
QEAgLTQ0LDMgKzQ0LDcgQEAKICN1bmRlZiBjYXRjaAogI2VuZGlmCiAKKyNpZiBPUyhXSU5ET1dT
KQorI3VuZGVmIFdFQkNPUkVfRVhQT1JUCisjZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdURl9JTVBP
UlRfREVDTEFSQVRJT04KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9FdmVudFNlbmRlclByb3h5V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjcwOTI5MDg0NTUxYWM0MWYz
ZGY2ZDdiZDhiNmQzNjEyMDBiNTIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRTZW5kZXJQcm94eS5oIgorCisjaW5jbHVkZSAi
UGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXVFIgeworCisvLyBLZXkg
ZXZlbnQgbG9jYXRpb24gY29kZSBkZWZpbmVkIGluIERPTSBMZXZlbCAzLgorZW51bSBLZXlMb2Nh
dGlvbkNvZGUgeworICAgIERPTUtleUxvY2F0aW9uU3RhbmRhcmQgICAgICA9IDB4MDAsCisgICAg
RE9NS2V5TG9jYXRpb25MZWZ0ICAgICAgICAgID0gMHgwMSwKKyAgICBET01LZXlMb2NhdGlvblJp
Z2h0ICAgICAgICAgPSAweDAyLAorICAgIERPTUtleUxvY2F0aW9uTnVtcGFkICAgICAgICA9IDB4
MDMKK307CisKK2VudW0gQnV0dG9uU3RhdGUgeworICAgIEJ1dHRvblJlbGVhc2VkID0gMCwKKyAg
ICBCdXR0b25QcmVzc2VkID0gMQorfTsKKworZW51bSBQb2ludGVyQXhpcyB7CisgICAgVmVydGlj
YWxTY3JvbGwgPSAwLAorICAgIEhvcml6b250YWxTY3JvbGwgPSAxCit9OworCitFdmVudFNlbmRl
clByb3h5OjpFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKiB0ZXN0Q29udHJvbGxlcikK
KyAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xsZXIpCisgICAgLCBtX3RpbWUoMCkK
KyAgICAsIG1fbGVmdE1vdXNlQnV0dG9uRG93bihmYWxzZSkKKyAgICAsIG1fY2xpY2tDb3VudCgw
KQorICAgICwgbV9jbGlja1RpbWUoMCkKKyAgICAsIG1fY2xpY2tCdXR0b24oa1dLRXZlbnRNb3Vz
ZUJ1dHRvbk5vQnV0dG9uKQorICAgICwgbV9idXR0b25TdGF0ZShCdXR0b25SZWxlYXNlZCkKK3sK
K30KKworRXZlbnRTZW5kZXJQcm94eTo6fkV2ZW50U2VuZGVyUHJveHkoKQoreworfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNpZ25lZCBidXR0b24sIFdLRXZlbnRNb2Rp
ZmllcnMgd2tNb2RpZmllcnMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBF
dmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVy
cyB3a01vZGlmaWVycykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnko
aW50IGhvcml6b250YWwsIGludCB2ZXJ0aWNhbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhpbnQgaG9yaXpvbnRhbCwgaW50IHZlcnRpY2FsLCBpbnQsIGludCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmNvbnRpbnVv
dXNNb3VzZVNjcm9sbEJ5KGludCwgaW50LCBib29sKQoreworfQorCit2b2lkIEV2ZW50U2VuZGVy
UHJveHk6OmxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpCit7CisgICAgbV90aW1lICs9IG1p
bGxpc2Vjb25kcyAvIDEwMDAuMDsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3du
KFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycywgdW5zaWdu
ZWQgbG9jYXRpb24pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdl
YlZpZXdXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3
V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40ZjkzYjNiMmViZTQyNTIwZWEwYTg1Y2ZjZTI5MmI2MDdlNTJm
M2RlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZv
cm1XZWJWaWV3V2luLmNwcApAQCAtMCwwICsxLDI2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBCcmVudCBGdWxnaGFtIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKworI2luY2x1ZGUgPEhXbmREQy5oPgorI2luY2x1ZGUg
PGNhaXJvLmg+CisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CisKKwor
bmFtZXNwYWNlIFdUUiB7CisKK3N0YXRpYyBMUENXU1RSIGhvc3RXaW5kb3dDbGFzc05hbWUgPSBM
IldUUldlYlZpZXdIb3N0V2luZG93IjsKK3N0YXRpYyBMUENXU1RSIHRlc3RSdW5uZXJXaW5kb3dO
YW1lID0gTCJXZWJLaXRUZXN0UnVubmVyIjsKKworc3RhdGljIHZvaWQgcmVnaXN0ZXJXaW5kb3dD
bGFzcygpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAo
aW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisK
KyAgICBXTkRDTEFTU0VYVyB3bmRDbGFzcyA9IHswfTsKKyAgICB3bmRDbGFzcy5jYlNpemUgPSBz
aXplb2Yod25kQ2xhc3MpOworICAgIHduZENsYXNzLnN0eWxlID0gQ1NfSFJFRFJBVyB8IENTX1ZS
RURSQVc7CisgICAgd25kQ2xhc3MubHBmblduZFByb2MgPSBEZWZXaW5kb3dQcm9jOworICAgIHdu
ZENsYXNzLmhDdXJzb3IgPSBMb2FkQ3Vyc29yKDAsIElEQ19BUlJPVyk7CisgICAgd25kQ2xhc3Mu
aEluc3RhbmNlID0gR2V0TW9kdWxlSGFuZGxlKDApOworICAgIHduZENsYXNzLmxwc3pDbGFzc05h
bWUgPSBob3N0V2luZG93Q2xhc3NOYW1lOworCisgICAgOjpSZWdpc3RlckNsYXNzRXhXKCZ3bmRD
bGFzcyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCisg
ICAgOiBtX3dpbmRvdyhudWxscHRyKQorICAgICwgbV93aW5kb3dJc0tleSh0cnVlKQorICAgICwg
bV9vcHRpb25zKG9wdGlvbnMpCit7CisgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOworCisgICAg
UkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAsIDYwMH07CisgICAgbV93aW5kb3cgPSA6OkNyZWF0
ZVdpbmRvd0V4KAorICAgICAgICAwLAorICAgICAgICBob3N0V2luZG93Q2xhc3NOYW1lLAorICAg
ICAgICB0ZXN0UnVubmVyV2luZG93TmFtZSwKKyAgICAgICAgV1NfT1ZFUkxBUFBFRFdJTkRPVywK
KyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgdmlld1JlY3QucmlnaHQsCisgICAgICAg
IHZpZXdSZWN0LmJvdHRvbSwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgR2V0TW9k
dWxlSGFuZGxlKDApLAorICAgICAgICAwKTsKKyAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUodmll
d1JlY3QsIGNvbmZpZ3VyYXRpb24sIG1fd2luZG93KTsKKyAgICBXS1ZpZXdTZXRJc0luV2luZG93
KG1fdmlldywgdHJ1ZSk7CisKKyAgICBTaG93V2luZG93KG1fd2luZG93LCBTV19TSE9XKTsKK30K
KworUGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKK3sKKyAgICBpZiAoOjpJc1dp
bmRvdyhtX3dpbmRvdykpCisgICAgICAgIDo6RGVzdHJveVdpbmRvdyhtX3dpbmRvdyk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0LCBXZWJWaWV3U2l6aW5nTW9kZSkKK3sKKyAgICA6OlNldFdpbmRvd1BvcygKKyAgICAg
ICAgV0tWaWV3R2V0V2luZG93KG1fdmlldyksCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAg
ICAgIDAsCisgICAgICAgIHdpZHRoLAorICAgICAgICBoZWlnaHQsCisgICAgICAgIFNXUF9OT01P
VkUgfCBTV1BfTk9aT1JERVIgfCBTV1BfTk9BQ1RJVkFURSB8IFNXUF9OT0NPUFlCSVRTKTsKK30K
KworV0tQYWdlUmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpCit7CisgICAgcmV0dXJuIFdLVmll
d0dldFBhZ2UobV92aWV3KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKK3sK
KyAgICA6OlNldEZvY3VzKDo6V0tWaWV3R2V0V2luZG93KG1fdmlldykpOworfQorCitXS1JlY3Qg
UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dGcmFtZSgpCit7CisgICAgV0tSZWN0IHdrRnJhbWUgPSB7
MH07CisgICAgUkVDVCByOworCisgICAgaWYgKDo6R2V0V2luZG93UmVjdChtX3dpbmRvdywgJnIp
KSB7CisgICAgICAgIHdrRnJhbWUub3JpZ2luLnggPSByLmxlZnQ7CisgICAgICAgIHdrRnJhbWUu
b3JpZ2luLnkgPSByLnRvcDsKKyAgICAgICAgd2tGcmFtZS5zaXplLndpZHRoID0gci5yaWdodCAt
IHIubGVmdDsKKyAgICAgICAgd2tGcmFtZS5zaXplLmhlaWdodCA9IHIuYm90dG9tIC0gci50b3A7
CisgICAgfQorCisgICAgcmV0dXJuIHdrRnJhbWU7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3
OjpzZXRXaW5kb3dGcmFtZShXS1JlY3QgZnJhbWUsIFdlYlZpZXdTaXppbmdNb2RlKQoreworICAg
IDo6U2V0V2luZG93UG9zKAorICAgICAgICBtX3dpbmRvdywKKyAgICAgICAgMCwKKyAgICAgICAg
ZnJhbWUub3JpZ2luLngsCisgICAgICAgIGZyYW1lLm9yaWdpbi55LAorICAgICAgICBmcmFtZS5z
aXplLndpZHRoLAorICAgICAgICBmcmFtZS5zaXplLmhlaWdodCwKKyAgICAgICAgU1dQX05PWk9S
REVSIHwgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9DT1BZQklUUyk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpkaWRJbml0aWFsaXplQ2xpZW50cygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1X
ZWJWaWV3OjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OnJlbW92ZUNocm9tZUlucHV0RmllbGQoKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmll
dzo6YWRkVG9XaW5kb3coKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlRnJv
bVdpbmRvdygpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzZXRXaW5kb3dJc0tleShi
b29sIHdpbmRvd0lzS2V5KQoreworICAgIG1fd2luZG93SXNLZXkgPSB3aW5kb3dJc0tleTsKK30K
Kwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQorewor
fQorCisjaWYgVVNFKENBSVJPKQorc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogZ2VuZXJhdGVDYWly
b1N1cmZhY2VGcm9tQml0bWFwKEJJVE1BUCBiaXRtYXBUYWcpCit7CisgICAgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKAorICAgICAgICBDQUlST19G
T1JNQVRfQVJHQjMyLAorICAgICAgICBiaXRtYXBUYWcuYm1XaWR0aCwKKyAgICAgICAgYml0bWFw
VGFnLmJtSGVpZ2h0KTsKKworICAgIHVuc2lnbmVkIGNoYXIqIHNyYyA9ICh1bnNpZ25lZCBjaGFy
KiliaXRtYXBUYWcuYm1CaXRzOworICAgIGludCBzcmNQaXRjaCA9IGJpdG1hcFRhZy5ibVdpZHRo
Qnl0ZXM7CisgICAgdW5zaWduZWQgY2hhciogZHN0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
ZGF0YShpbWFnZSk7CisgICAgaW50IGRzdFBpdGNoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
c3RyaWRlKGltYWdlKTsKKworICAgIGZvciAoaW50IHkgPSAwOyB5IDwgYml0bWFwVGFnLmJtSGVp
Z2h0OyB5KyspIHsKKyAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCBkc3RQaXRjaCk7CisgICAgICAg
IHNyYyArPSBzcmNQaXRjaDsKKyAgICAgICAgZHN0ICs9IGRzdFBpdGNoOworICAgIH0KKworICAg
IHJldHVybiBpbWFnZTsKK30KKworY2Fpcm9fc3VyZmFjZV90KiBQbGF0Zm9ybVdlYlZpZXc6Ondp
bmRvd1NuYXBzaG90SW1hZ2UoKQoreworICAgIFJFQ1Qgd2luZG93UmVjdDsKKyAgICA6OkdldENs
aWVudFJlY3QobV93aW5kb3csICZ3aW5kb3dSZWN0KTsKKyAgICBMT05HIHdpZHRoID0gd2luZG93
UmVjdC5yaWdodCAtIHdpbmRvd1JlY3QubGVmdDsKKyAgICBMT05HIGhlaWdodCA9IHdpbmRvd1Jl
Y3QuYm90dG9tIC0gd2luZG93UmVjdC50b3A7CisKKyAgICBXZWJDb3JlOjpIV25kREMgd2luZG93
REMobV93aW5kb3cpOworICAgIGF1dG8gbWVtb3J5REMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0
ZUNvbXBhdGlibGVEQyh3aW5kb3dEQykpOworCisgICAgQklUTUFQSU5GTyBiaXRtYXBJbmZvID0g
ezB9OworICAgIFdLUmVjdCB3a0ZyYW1lID0gd2luZG93RnJhbWUoKTsKKyAgICBiaXRtYXBJbmZv
LmJtaUhlYWRlci5iaVNpemUgPSBzaXplb2YoQklUTUFQSU5GT0hFQURFUik7CisgICAgYml0bWFw
SW5mby5ibWlIZWFkZXIuYmlXaWR0aCA9IHdpZHRoOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVy
LmJpSGVpZ2h0ID0gLWhlaWdodDsKKyAgICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaVBsYW5lcyA9
IDE7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlCaXRDb3VudCA9IDMyOworICAgIGJpdG1h
cEluZm8uYm1pSGVhZGVyLmJpQ29tcHJlc3Npb24gPSBCSV9SR0I7CisgICAgYml0bWFwSW5mby5i
bWlIZWFkZXIuYmlTaXplSW1hZ2UgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CisKKyAgICB2b2lkKiBi
aXRzUG9pbnRlciA9IDA7CisgICAgYXV0byBiaXRtYXAgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0
ZURJQlNlY3Rpb24od2luZG93REMsICZiaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgJmJpdHNQ
b2ludGVyLCAwLCAwKSk7CisgICAgaWYgKCFiaXRtYXApCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgOjpTZWxlY3RPYmplY3QobWVtb3J5REMuZ2V0KCksIGJpdG1hcC5nZXQoKSk7Cisg
ICAgOjpCaXRCbHQobWVtb3J5REMuZ2V0KCksCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAg
ICAgIHdpZHRoLAorICAgICAgICBoZWlnaHQsCisgICAgICAgIHdpbmRvd0RDLAorICAgICAgICAw
LAorICAgICAgICAwLAorICAgICAgICBTUkNDT1BZKTsKKworICAgIEJJVE1BUCBiaXRtYXBUYWcg
PSB7MH07CisgICAgR2V0T2JqZWN0KGJpdG1hcC5nZXQoKSwgc2l6ZW9mKGJpdG1hcFRhZyksICZi
aXRtYXBUYWcpOworICAgIEFTU0VSVChiaXRtYXBUYWcuYm1CaXRzUGl4ZWwgPT0gMzIpOworCisg
ICAgcmV0dXJuIGdlbmVyYXRlQ2Fpcm9TdXJmYWNlRnJvbUJpdG1hcChiaXRtYXBUYWcpOworfQor
I2VuZGlmCisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpjaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVk
KGZsb2F0KQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0TmF2aWdhdGlvbkdlc3R1
cmVzRW5hYmxlZChib29sKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Zm9yY2VXaW5k
b3dGcmFtZXNDaGFuZ2VkKCkKK3sKK30KKworYm9vbCBQbGF0Zm9ybVdlYlZpZXc6OmRyYXdzQmFj
a2dyb3VuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wpCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xs
ZXJXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdENvbnRyb2xsZXJXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI1N2I2N2E1MjkyOTFhYzI5ZWFjYjIyZGRjMjdjZDZmYjMyNDVmNmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0Q29udHJv
bGxlcldpbi5jcHAKQEAgLTAsMCArMSwyMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lu
Y2x1ZGUgPFdpbkJhc2UuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGlvLmg+Cisj
aW5jbHVkZSA8c2hsd2FwaS5oPgorI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx3aW5kb3dz
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworCisjZGVmaW5lIElOSkVDVEVEX0JVTkRM
RV9ETExfTkFNRSAiVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLmRsbCIKKworbmFtZXNwYWNlIFdU
UiB7CisKK3N0YXRpYyBIQU5ETEUgd2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnQ7CitzdGF0aWMgY29u
c3QgY2hhciB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVudE5hbWVbXSA9ICJXZWJLaXRUZXN0UnVubmVy
LldlYlByb2Nlc3NDcmFzaGluZyI7CisvLyBUaGlzIGlzIHRoZSBsb25nZXN0IHdlJ2xsIHdhaXQg
KGluIHNlY29uZHMpIGZvciB0aGUgd2ViIHByb2Nlc3MgdG8gZmluaXNoIGNyYXNoaW5nIGFuZCBh
IGNyYXNoCisvLyBsb2cgdG8gYmUgc2F2ZWQuIFRoaXMgaW50ZXJ2YWwgc2hvdWxkIGJlIGp1c3Qg
YSB0aW55IGJpdCBsb25nZXIgdGhhbiBpdCB3aWxsIGV2ZXIgcmVhc29uYWJseQorLy8gdGFrZSB0
byBzYXZlIGEgY3Jhc2ggbG9nLgorc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtV2FpdEZvcldl
YlByb2Nlc3NUb0NyYXNoID0gNjA7CisKKworc3RhdGljIExPTkcgV0lOQVBJIGV4Y2VwdGlvbkZp
bHRlcihFWENFUFRJT05fUE9JTlRFUlMqKQoreworICAgIGZwdXRzKCIjQ1JBU0hFRFxuIiwgc3Rk
ZXJyKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVF
X1NFQVJDSDsKK30KKworZW51bSBSdW5Mb29wUmVzdWx0IHsgVGltZWRPdXQsIE9iamVjdFNpZ25h
bGVkLCBDb25kaXRpb25TYXRpc2ZpZWQgfTsKKworc3RhdGljIFJ1bkxvb3BSZXN1bHQgcnVuUnVu
TG9vcFVudGlsKGJvb2wmIGNvbmRpdGlvbiwgSEFORExFIG9iamVjdCwgZG91YmxlIHRpbWVvdXQp
Cit7CisgICAgRFdPUkQgZW5kID0gOjpHZXRUaWNrQ291bnQoKSArIHRpbWVvdXQgKiAxMDAwOwor
ICAgIGlmICh0aW1lb3V0IDwgMCkKKyAgICAgICAgZW5kID0gVUxPTkdfTUFYOworCisgICAgd2hp
bGUgKCFjb25kaXRpb24pIHsKKyAgICAgICAgRFdPUkQgbm93ID0gOjpHZXRUaWNrQ291bnQoKTsK
KyAgICAgICAgaWYgKG5vdyA+IGVuZCkKKyAgICAgICAgICAgIHJldHVybiBUaW1lZE91dDsKKwor
ICAgICAgICBEV09SRCB3YWl0ID0gZW5kIC0gbm93OworICAgICAgICBEV09SRCBvYmplY3RDb3Vu
dCA9IG9iamVjdCA/IDEgOiAwOworICAgICAgICBjb25zdCBIQU5ETEUqIG9iamVjdHMgPSBvYmpl
Y3QgPyAmb2JqZWN0IDogMDsKKworICAgICAgICBEV09SRCByZXN1bHQgPSA6Ok1zZ1dhaXRGb3JN
dWx0aXBsZU9iamVjdHNFeChvYmplY3RDb3VudCwgb2JqZWN0cywgd2FpdCwgUVNfQUxMSU5QVVQs
IE1XTU9fSU5QVVRBVkFJTEFCTEUpOworICAgICAgICBpZiAocmVzdWx0ID09IFdBSVRfVElNRU9V
VCkKKyAgICAgICAgICAgIHJldHVybiBUaW1lZE91dDsKKworICAgICAgICBpZiAob2JqZWN0Q291
bnQgJiYgcmVzdWx0ID49IFdBSVRfT0JKRUNUXzAgJiYgcmVzdWx0IDwgV0FJVF9PQkpFQ1RfMCAr
IG9iamVjdENvdW50KQorICAgICAgICAgICAgcmV0dXJuIE9iamVjdFNpZ25hbGVkOworCisgICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCArIG9iamVjdENvdW50KTsKKyAgICAg
ICAgLy8gVGhlcmUgYXJlIG1lc3NhZ2VzIGluIHRoZSBxdWV1ZS4gUHJvY2VzcyB0aGVtLgorICAg
ICAgICBNU0cgbXNnOworICAgICAgICB3aGlsZSAoOjpQZWVrTWVzc2FnZVcoJm1zZywgMCwgMCwg
MCwgUE1fUkVNT1ZFKSkgeworICAgICAgICAgICAgOjpUcmFuc2xhdGVNZXNzYWdlKCZtc2cpOwor
ICAgICAgICAgICAgOjpEaXNwYXRjaE1lc3NhZ2VXKCZtc2cpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIENvbmRpdGlvblNhdGlzZmllZDsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6bm90aWZ5RG9uZSgpCit7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbihi
b29sKQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQor
eworICAgIC8vIEN5Z3dpbiBjYWxscyA6OlNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJS
T1JTKSwgd2hpY2ggd2Ugd2lsbCBpbmhlcml0LiBUaGlzIGlzIGJhZCBmb3IKKyAgICAvLyB0ZXN0
aW5nL2RlYnVnZ2luZywgYXMgaXQgY2F1c2VzIHRoZSBwb3N0LW1vcnRlbSBkZWJ1Z2dlciBub3Qg
dG8gYmUgaW52b2tlZC4gV2UgcmVzZXQgdGhlCisgICAgLy8gZXJyb3IgbW9kZSBoZXJlIHRvIHdv
cmsgYXJvdW5kIEN5Z3dpbidzIGJlaGF2aW9yLiBTZWUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTUy
MjI+LgorICAgIDo6U2V0RXJyb3JNb2RlKDApOworCisgICAgOjpTZXRVbmhhbmRsZWRFeGNlcHRp
b25GaWx0ZXIoZXhjZXB0aW9uRmlsdGVyKTsKKworICAgIF9zZXRtb2RlKDEsIF9PX0JJTkFSWSk7
CisgICAgX3NldG1vZGUoMiwgX09fQklOQVJZKTsKKworICAgIHdlYlByb2Nlc3NDcmFzaGluZ0V2
ZW50ID0gOjpDcmVhdGVFdmVudEEoMCwgRkFMU0UsIEZBTFNFLCB3ZWJQcm9jZXNzQ3Jhc2hpbmdF
dmVudE5hbWUpOworfQorCitXS1ByZWZlcmVuY2VzUmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bVByZWZlcmVuY2VzKCkKK3sKKyAgICByZXR1cm4gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyht
X3BhZ2VHcm91cC5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtRGVz
dHJveSgpCit7Cit9CisKK3N0YXRpYyBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdG9XSyhjb25z
dCBjaGFyKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPihB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzdHJpbmcpKTsKK30KKwordm9p
ZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCit7CisgICAgLy8g
RklYTUU6IEZJWE1FISBOTyBXS0NvbnRleHRTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzIGlu
IEFQSSBsaXN0CisgICAgLy8gRklYTUU6IE1ha2UgRFJUIHBhc3Mgd2l0aCBXaW5kb3dzIG5hdGl2
ZSBjb250cm9scy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvMjU1OTI+CisgICAgLy8gV0tDb250ZXh0
U2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhtX2NvbnRleHQuZ2V0KCksIGZhbHNlKTsKKwor
ICAgIFdLQ29udGV4dFNldEluaXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZSht
X2NvbnRleHQuZ2V0KCksIHRvV0sod2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnROYW1lKS5nZXQoKSk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgY29uZGl0
aW9uLCBXVEY6OlNlY29uZHMgdGltZW91dCkKK3sKKyAgICBSdW5Mb29wUmVzdWx0IHJlc3VsdCA9
IHJ1blJ1bkxvb3BVbnRpbChjb25kaXRpb24sIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50LCB0aW1l
b3V0LnNlY29uZHMoKSk7CisgICAgaWYgKHJlc3VsdCA9PSBUaW1lZE91dCB8fCByZXN1bHQgPT0g
Q29uZGl0aW9uU2F0aXNmaWVkKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHJlc3VsdCA9
PSBPYmplY3RTaWduYWxlZCk7CisKKyAgICAvLyBUaGUgd2ViIHByb2Nlc3MgaXMgY3Jhc2hpbmcu
IEEgY3Jhc2ggbG9nIG1pZ2h0IGJlIGJlaW5nIHNhdmVkLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcK
KyAgICAvLyB0aW1lLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB0aW1lIG91dCB3aGlsZSB0aGF0IGhh
cHBlbnMuCisKKyAgICAvLyBGaXJzdCwgbGV0IHRoZSB0ZXN0IGhhcm5lc3Mga25vdyB0aGlzIGhh
cHBlbmVkIHNvIGl0IHdvbid0IHRoaW5rIHdlJ3ZlIGh1bmcuIEJ1dAorICAgIC8vIG1ha2Ugc3Vy
ZSB3ZSBkb24ndCBleGl0IGp1c3QgeWV0IQorICAgIG1fc2hvdWxkRXhpdFdoZW5XZWJQcm9jZXNz
Q3Jhc2hlcyA9IGZhbHNlOworICAgIHByb2Nlc3NEaWRDcmFzaCgpOworICAgIG1fc2hvdWxkRXhp
dFdoZW5XZWJQcm9jZXNzQ3Jhc2hlcyA9IHRydWU7CisKKyAgICAvLyBUaGVuIHNwaW4gYSBydW4g
bG9vcCB1bnRpbCBpdCBmaW5pc2hlcyBjcmFzaGluZyB0byBnaXZlIHRpbWUgZm9yIGEgY3Jhc2gg
bG9nIHRvIGJlIHNhdmVkLiBJZgorICAgIC8vIGl0IHRha2VzIHRvbyBsb25nIGZvciBhIGNyYXNo
IGxvZyB0byBiZSBzYXZlZCwgd2UnbGwganVzdCBnaXZlIHVwLgorICAgIGJvb2wgbmV2ZXJTZXRD
b25kaXRpb24gPSBmYWxzZTsKKyAgICByZXN1bHQgPSBydW5SdW5Mb29wVW50aWwobmV2ZXJTZXRD
b25kaXRpb24sIDAsIG1heGltdW1XYWl0Rm9yV2ViUHJvY2Vzc1RvQ3Jhc2gpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gVGltZWRPdXQpOworICAgIGV4aXQoMSk7Cit9CisK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtRGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFn
ZVJlZiwgV0tGcmFtZVJlZikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFRl
c3RDb250cm9sbGVyOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKCkKK3sKKyAgICBtX2lu
amVjdGVkQnVuZGxlUGF0aC5hZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhJTkpF
Q1RFRF9CVU5ETEVfRExMX05BTUUpKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZVRlc3RQbHVnaW5EaXJlY3RvcnkoKQoreworICAgIHdjaGFyX3QgZXhlUGF0aFtNQVhfUEFU
SF07CisgICAgaWYgKDo6R2V0TW9kdWxlRmlsZU5hbWUobnVsbHB0ciwgZXhlUGF0aCwgTUFYX1BB
VEgpKSB7CisgICAgICAgIHdjaGFyX3QgZHJpdmVbX01BWF9EUklWRV07CisgICAgICAgIHdjaGFy
X3QgZGlyW19NQVhfRElSXTsKKyAgICAgICAgX3dzcGxpdHBhdGgoZXhlUGF0aCwgZHJpdmUsIGRp
ciwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICAgICAgd2NoYXJfdCBidW5kbGVEaXJbTUFYX1BB
VEhdOworICAgICAgICB3Y3NuY3B5KGJ1bmRsZURpciwgZHJpdmUsIE1BWF9QQVRIKTsKKyAgICAg
ICAgd2NzbmNhdChidW5kbGVEaXIsIGRpciwgTUFYX1BBVEggLSBfTUFYX0RSSVZFKTsKKworICAg
ICAgICBjaGFyIGJ1bmRsZURpclVURjhbTUFYX1BBVEhdOworICAgICAgICA6OldpZGVDaGFyVG9N
dWx0aUJ5dGUoQ1BfVVRGOCwgMCwgYnVuZGxlRGlyLCAtMSwgYnVuZGxlRGlyVVRGOCwgTUFYX1BB
VEgsIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5h
ZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidW5kbGVEaXJVVEY4KSk7CisgICAg
fQorfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpydW5Nb2RhbChQbGF0Zm9ybVdlYlZpZXcqKQor
eworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGlzIHRvIHRlc3Qgc2hvd01vZGFs
RGlhbG9nLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1dLQ29udGV4dFJlZiBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgp
OworfQorCitjb25zdCBjaGFyKiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1MaWJyYXJ5UGF0aEZv
clRlc3RpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29uZmlndXJlVmlld0ZvclRlc3Qo
Y29uc3QgVGVzdEludm9jYXRpb24mKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZh
bHVlcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6dXBkYXRlUGxhdGZvcm1TcGVjaWZpY1Rlc3RPcHRpb25zRm9yVGVzdChUZXN0T3B0aW9ucyYs
IGNvbnN0IHN0ZDo6c3RyaW5nJikgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
d2luL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93
aW4vV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRjNzRjZTk1Y2EwOTRi
NThmY2UwN2U0OWExM2Y2NDZiYTNjOGVhYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguY3BwCkBAIC0wLDAgKzEsMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyNpbmNsdWRl
ICJXZWJLaXRUZXN0UnVubmVyUHJlZml4LmgiCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9tYWluLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL21haW4uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVmZDlmNDkwZmJmMTg4YzQ5NzFmNzc4ZWEzZmUzMGI2OGVjYTM1OGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9tYWluLmNwcApAQCAt
MCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiVGVzdENvbnRyb2xsZXIuaCIKKworZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkg
aW50IFdJTkFQSSBkbGxMYXVuY2hlckVudHJ5UG9pbnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFy
Z3ZbXSkKK3sKKyAgICBXVFI6OlRlc3RDb250cm9sbGVyIGNvbnRyb2xsZXIoYXJnYywgYXJndik7
CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggYzJkMmIwNzBhNTJlNGZkM2EzMTcxMDhjZjI4Y2I1ZWYxY2FlYTJlNC4uMGMzM2YwMWI5MmVm
MmE1MDE3NGRkNzdiZDRhNGQwNTZjYTQ0ZDg0NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTExLTExICBUYWthc2hpIEtvbW9yaSAg
PFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgorCisgICAgICAgIFJlc3VycmVjdCBXZWJLaXRUZXN0
UnVubmVyIGZvciBXaW5kb3dzIHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2U6CisKIDIwMTgt
MTEtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtMaW51eF0gVXNlIG1lbWZkX2NyZWF0ZSB3aGVuIGF2YWlsYWJsZSBpbiBTaGFyZWRNZW1v
cnkgaW1wbGVtZW50YXRpb24K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354527</attachid>
            <date>2018-11-11 19:46:28 -0800</date>
            <delta_ts>2018-11-12 10:58:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189257-20181112124432.patch</filename>
            <type>text/plain</type>
            <size>90883</size>
            <attacher name="Takashi Komori">takashi.komori</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhY2ZmMzQ4ZGVjMGUwZmMz
NWMwNTU2N2E1ZWMxMWIxZWFlNTc2NmEuLmYxMjU2NWFmMjNhY2YwMTg2MjBlMmJhNjNlNmM2MmU0
NmJlZTllZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMTEtMTEgIFRha2FzaGkg
S29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgUmVzdXJyZWN0IFdl
YktpdFRlc3RSdW5uZXIgZm9yIFdpbmRvd3MgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKwogMjAxOC0xMS0w
OSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29j
b2FdIEltcGxlbWVudCBTUEkgb24gV0tXZWJWaWV3IHRvIGluY3JlYXNlIGFuZCBkZWNyZWFzZSBs
aXN0IGxldmVscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggM2RkNTY0Mzc3NzkzMTg2YTMz
OWFlZGY5MWI4ODkzZDRhYWUwOTA3ZC4uMDA1NDk4NjFlZTdmOGRlNGQ3NzZjYTlmM2U2Mzc1ZDJk
MmQyYzk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xOTUsNiArMTk1LDcgQEAgV0VC
S0lUX1dSQVBfU09VUkNFTElTVCgke1dlYktpdF9TT1VSQ0VTfSkKIHNldChXZWJLaXRfRk9SV0FS
RElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgU2hhcmVkL0FQSS9jCiAKKyAgICBTaGFyZWQv
QVBJL2MvY2Fpcm8KICAgICBTaGFyZWQvQVBJL2MvY2YKICAgICBTaGFyZWQvQVBJL2Mvd2luCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKaW5kZXggZjIyZjNmMTgzZDQ0ZmUyYjYxMGRjZDMwNTQ0OTgyODE0
OTQxMDhmOC4uMDgxZGFlYzQ5N2JlNjgxMDYxNGE0ZTEwNmQyZDIwMmU2MmM1Nzc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UKQEAgLTg0LDYgKzg0LDcgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9D
QUlST30pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwg
UFVCTElDIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1QgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgUFVCTElDIE9OKQorICAgIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BQ0NFU1NJQklMSVRZIFBSSVZBVEUgT04pCiAKICAgICAj
IEZJWE1FOiBJbXBsZW1lbnQgcGx1Z2luIHByb2Nlc3Mgb24gTW9kZXJuIFdlYktpdC4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTMxMwogICAgIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIFBSSVZBVEUg
T0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGQzZWU1MzIyMTgzZGRmNDNmOGQ4MWY1ZWQ0YjBkNzUwNGY4ZTM1NTAuLjkwMDk3MzZlMmQ4MjVh
ODBiNWQ0ZDMzZGE1NGYxY2E5ZTQ3M2E2MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNzQgQEAKKzIwMTgtMTEtMTEgIFRha2Fz
aGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CisKKyAgICAgICAgUmVzdXJyZWN0
IFdlYktpdFRlc3RSdW5uZXIgZm9yIFdpbmRvd3MgcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IFdlYktpdFRlc3RSdW5uZXIgZm9y
IFdpbkNhaXJvLgorCisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU2Ny
aXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclBy
b3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHA6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpyYW5nZVRvU3RyKToKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNoaXZlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpUZXN0UnVubmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxl
bWVudEJ5SWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cGxhdGZv
cm1OYW1lKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVt
ZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVt
ZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNh
dGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJl
bW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDogQWRkZWQuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp+QWNjZXNzaWJpbGl0
eVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1
YWwpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJh
bmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3Vu
dCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhPZkNoaWxkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRl
eCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVu
dEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxv
d1RvRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXggY29uc3QpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQgY29uc3QpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxpbmtlZFVJRWxl
bWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZEb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyBjb25zdCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZh
bHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNB
dHRyaWJ1dGVTZXR0YWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzQXR0cmlidXRlU3VwcG9ydGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN1YnJvbGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b2xlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b21wdXRlZFJvbGVTdHJpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp0aXRsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24g
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQgY29uc3QpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6eSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OndpZHRoKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVp
Z2h0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1ByZXNzQWN0aW9uU3VwcG9ydGVkKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25T
dXBwb3J0ZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0RlY3Jl
bWVudEFjdGlvblN1cHBvcnRlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRW5hYmxlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
UmVxdWlyZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0ZvY3VzZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1NlbGVjdGVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0NoZWNrZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCBjb25zdCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrQXMpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzIGNvbnN0KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQb3NpdGlvbik6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvdW5kc0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01p
c3NwZWxsZWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1l
bnRDb3VudEZvclNlYXJjaFByZWRpY2F0ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVh
ZGVycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkNvbHVtbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZSb3dzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmli
dXRlc09mVmlzaWJsZUNlbGxzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mSGVhZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cm93Q291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4
SW5UYWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4
UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRl
eFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2VsbEZvckNv
bHVtbkFuZFJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6
b250YWxTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpkZWNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzaG93TWVudSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnByZXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0
ZWRDaGlsZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
dFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsZWFyU2VsZWN0ZWRDaGlsZHJlbiBjb25zdCk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5j
b2RpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVS
SSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9u
TGlzdGVuZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3Vz
YWJsZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2Vs
ZWN0YWJsZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
TXVsdGlTZWxlY3RhYmxlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNPZmZTY3JlZW4gY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0NvbGxhcHNlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzSWdub3JlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzU2luZ2xlTGluZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzTXVsdGlMaW5lIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aGFzUG9wdXAgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0YWtlRm9jdXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0YWtlU2VsZWN0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YWRkU2VsZWN0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVtb3ZlU2VsZWN0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTGVuZ3RoKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cHJldmlvdXNUZXh0TWFya2VyKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bmV4dFRleHRNYXJrZXIpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXJGb3JCb3VuZHMp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXJG
b3JCb3VuZHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyRm9yUG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZVdpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2Vy
VmFsaWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2Vy
Rm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRl
eHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0
TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0
ZWRWaXNpYmxlVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3VwcG9ydGVkQWN0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rl
c2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNsYXNzTGlzdCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNoYXJhY3RlckF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6d29yZEF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bGluZUF0T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VudGVuY2VBdE9mZnNldCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHA6IENvcGllZCBmcm9tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNw
cC4KKyAgICAgICAgKFdUUjo6YWN0aXZhdGVGb250cyk6CisgICAgICAgIChXVFI6Omluc3RhbGxG
YWtlSGVsdmV0aWNhKToKKyAgICAgICAgKFdUUjo6dW5pbnN0YWxsRmFrZUhlbHZldGljYSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRCdW5k
bGVXaW4uY3BwOiBDb3BpZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5jcHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJ
bmplY3RlZEJ1bmRsZVByZWZpeC5oOiBDb3BpZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6IENvcGllZCBm
cm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVN
YWluLmNwcC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6
CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omluc3BlY3RvclRlc3RTdHViVVJMKToKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKToK
KyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6aW5pdGlhbGl6ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVySWZOZWVk
ZWQpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjppbnN0YWxsRmFrZUhlbHZldGljYSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpjcmVh
dGVUZXN0VVJMKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcDog
QWRkZWQuCisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp+RXZlbnRTZW5kZXJQcm94eSk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojptb3VzZU1vdmVUbyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNl
U2Nyb2xsQnkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojpjb250aW51b3VzTW91c2VTY3JvbGxCeSk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6OmxlYXBGb3J3YXJkKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5
RG93bik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OnJlZ2lzdGVyV2luZG93Q2xhc3MpOgorICAgICAg
ICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChXVFI6
OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChXVFI6OlBsYXRm
b3JtV2ViVmlldzo6cmVzaXplVG8pOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnBh
Z2UpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKToKKyAgICAgICAgKFdU
Ujo6UGxhdGZvcm1XZWJWaWV3Ojp3aW5kb3dGcmFtZSk6CisgICAgICAgIChXVFI6OlBsYXRmb3Jt
V2ViVmlldzo6c2V0V2luZG93RnJhbWUpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6
OmRpZEluaXRpYWxpemVDbGllbnRzKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3Ojph
ZGRDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1v
dmVDaHJvbWVJbnB1dEZpZWxkKToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjphZGRU
b1dpbmRvdyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlRnJvbVdpbmRv
dyk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93SXNLZXkpOgorICAg
ICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIpOgor
ICAgICAgICAoV1RSOjpnZW5lcmF0ZUNhaXJvU3VyZmFjZUZyb21CaXRtYXApOgorICAgICAgICAo
V1RSOjpQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UpOgorICAgICAgICAoV1RS
OjpQbGF0Zm9ybVdlYlZpZXc6OmNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQpOgorICAgICAgICAo
V1RSOjpQbGF0Zm9ybVdlYlZpZXc6OnNldE5hdmlnYXRpb25HZXN0dXJlc0VuYWJsZWQpOgorICAg
ICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OmZvcmNlV2luZG93RnJhbWVzQ2hhbmdlZCk6Cisg
ICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6ZHJhd3NCYWNrZ3JvdW5kIGNvbnN0KToKKyAg
ICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpzZXREcmF3c0JhY2tncm91bmQpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9sbGVyV2luLmNwcDogQWRkZWQuCisg
ICAgICAgIChXVFI6OmV4Y2VwdGlvbkZpbHRlcik6CisgICAgICAgIChXVFI6OnJ1blJ1bkxvb3BV
bnRpbCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEhpZGRlbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAoV1RSOjp0b1dLKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SdW5VbnRpbCk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybURpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJ1bk1vZGFsKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybUxpYnJhcnlQYXRoRm9yVGVzdGluZyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZpZXdGb3JUZXN0KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNwZWNpZmlj
VGVzdE9wdGlvbnNGb3JUZXN0IGNvbnN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dp
bi9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmNwcDogQWRkZWQuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci93aW4vbWFpbi5jcHA6IENvcGllZCBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcC4KKyAgICAgICAgKGRsbExhdW5j
aGVyRW50cnlQb2ludCk6CisKIDIwMTgtMTEtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBJbXBsZW1lbnQgU1BJIG9uIFdLV2ViVmll
dyB0byBpbmNyZWFzZSBhbmQgZGVjcmVhc2UgbGlzdCBsZXZlbHMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1BsYXRmb3JtV2luLmNtYWtlIGIvVG9vbHMvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggZTRlMmU3
YTU0NDZiODcwNjg5ZjY1NDIyNjg2N2VlNmFlYTQ2ZDgzNS4uYWNmZDk4NWNjMWQ4N2IwNzdiMTYy
MDY3ZmUzMDY1MTExNjk2OGVhZSAxMDA2NDQKLS0tIGEvVG9vbHMvUGxhdGZvcm1XaW4uY21ha2UK
KysrIGIvVG9vbHMvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTQsMyArNCw3IEBAIGFkZF9zdWJkaXJl
Y3RvcnkoSW1hZ2VEaWZmKQogaWYgKEVOQUJMRV9XRUJLSVRfTEVHQUNZKQogICAgIGFkZF9zdWJk
aXJlY3RvcnkoTWluaUJyb3dzZXIvd2luKQogZW5kaWYgKCkKKworaWYgKEVOQUJMRV9XRUJLSVQp
CisgICAgYWRkX3N1YmRpcmVjdG9yeShXZWJLaXRUZXN0UnVubmVyKQorZW5kaWYgKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lciBiL1Rvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgppbmRleCAxNzczN2ZhOTg5N2FmZDI4NTA4NDk0MTZi
Njc5OTRjYWNhNTBkZmMzLi4xODZhNDVkMzYxMjIzMGU0YTA1NjBiZGVkZjVlMzQwNWRiYmY2MTVh
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdHRlc3RydW5uZXIKKysrIGIv
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCkBAIC02Miw4ICs2Miw4IEBAIGNo
ZGlyICJUb29scy9XZWJLaXRUZXN0UnVubmVyIiBvciBkaWU7CiBteSAkcmVzdWx0OwogaWYgKGlz
QXBwbGVDb2NvYVdlYktpdCgpKSB7CiAgICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCJX
ZWJLaXRUZXN0UnVubmVyIiwgJGNsZWFuLCBYY29kZU9wdGlvbnMoKSwgQEFSR1YpOwotfSBlbHNp
ZiAoaXNHdGsoKSB8fCBpc1dQRSgpIHx8IGlzUGxheVN0YXRpb24oKSkgewotICAgICMgR1RLKywg
V1BFLCBhbmQgUGxheVN0YXRpb24gYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVl
ZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgorfSBlbHNpZiAoaXNHdGsoKSB8fCBpc1dQRSgpIHx8
IGlzUGxheVN0YXRpb24oKSB8fCBpc0FueVdpbmRvd3MoKSkgeworICAgICMgR1RLKywgV1BFLCBQ
bGF5U3RhdGlvbiwgYW5kIFdpbmRvd3MgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8g
bmVlZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1bHQgPSAwOwogfSBlbHNlIHsK
ICAgICBkaWUgIldlYktpdFRlc3RSdW5uZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRm
b3JtLlxuIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50
eHQgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IGZiZGZmZGFk
ZTk1NmEzNDhiNzA2OGJjYmMwM2ZjNTgzYWM0ZjczZjQuLjc1MDA5YmJiNDc5MzYyNDg1MGY0MjFj
ZjI2ODk5MDJlYmI1ZGFlZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01h
a2VMaXN0cy50eHQKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dApA
QCAtMTI5LDYgKzEyOSw5IEBAIGlmIChDT01QSUxFUl9JU19HQ0NfT1JfQ0xBTkcpCiAgICAgV0VC
S0lUX0FERF9UQVJHRVRfQ1hYX0ZMQUdTKFdlYktpdFRlc3RSdW5uZXIgLVduby11bnVzZWQtcGFy
YW1ldGVyKQogZW5kaWYgKCkKIAotaWYgKE5PVCBBUFBMRSkKK2lmIChXSU4zMikKKyAgICBhZGRf
ZGVwZW5kZW5jaWVzKFdlYktpdFRlc3RSdW5uZXJMaWIgV2ViS2l0VGVzdFJ1bm5lckJpbmRpbmdz
KQorICAgIGFkZF9kZXBlbmRlbmNpZXMoV2ViS2l0VGVzdFJ1bm5lciBXZWJLaXRUZXN0UnVubmVy
TGliKQorZWxzZWlmIChOT1QgQVBQTEUpCiAgICAgYWRkX2RlcGVuZGVuY2llcyhXZWJLaXQgJHtG
b3J3YXJkaW5nSGVhZGVyc0ZvcldlYktpdFRlc3RSdW5uZXJfTkFNRX0pCiBlbmRpZiAoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAppbmRleCA5ZDFlNjBiMDQ2Zjg0
YjJkMDBkMzlhMzc2NTBhMmIyMjMxYzVjMzA2Li5iZmRhZDk2NWI1NjgzMmRkYTliYjJmYzFhNjJh
MTFmMWZmMTM3M2FmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2Vu
ZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aApAQCAtMjQsOCArMjQsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgRXZlbnRTZW5kZXJQcm94eV9oCi0jZGVmaW5lIEV2ZW50U2VuZGVyUHJv
eHlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpAQCAtMTQ0LDkgKzE0MywxMCBAQCBwcml2YXRlOgogICAgIHVpbnQzMl90
IG1fbW91c2VCdXR0b25zQ3VycmVudGx5RG93biB7IDAgfTsKICAgICBWZWN0b3I8c3RydWN0IHdw
ZV9pbnB1dF90b3VjaF9ldmVudF9yYXc+IG1fdG91Y2hFdmVudHM7CiAgICAgSGFzaFNldDx1bnNp
Z25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gbV91cGRhdGVkVG91Y2hFdmVudHM7CisjZWxpZiBQTEFU
Rk9STShXSU4pCisgICAgdWludDMyX3QgbV9idXR0b25TdGF0ZTsKKyAgICB1aW50MzJfdCBtX21v
dXNlQnV0dG9uc0N1cnJlbnRseURvd24geyAwIH07CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdUUgotCi0jZW5kaWYgLy8gRXZlbnRTZW5kZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuY3BwCmluZGV4IDdiODE2NzY0MjI0ZDkyZjk0NTQwNGZkYTZjZTcxYjAwYmUw
Mzk1NzUuLjlhY2Y4NTg4ZDM4MjcwZDcwNDM2MzI5OWVmMDQ2NzNhYWQyN2Q4MDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQoKQogICAgIHJl
dHVybiBXS0FjY2Vzc2liaWxpdHlFbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkKCk7CiB9CiAK
LSNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV1BFKQorI2lmIFBMQVRGT1JNKENPQ09B
KQogUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
b290RWxlbWVudCgpCiB7CiAgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCk7CkBAIC0xMDAsNCArMTAwLDMgQEAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2Vk
RWxlbWVudCgpIHsgcmV0dXIKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVFIKLQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggMTlkYzBjZjkzMjYxNDFhNTc1MjQ3YWIyODE4
MjU3NWYzMzcyNDc0MS4uYTRmNjgxY2ZiNTc0YzEwZmY1YjQwYmU5NTYyM2MyZmZmNGI5MWI3MiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3Ry
aW5nRm9yRWxlbWVudCgpIHsKICNlbmRpZgogICAgIAogLy8gVW5zdXBwb3J0ZWQgbWV0aG9kcyBv
biB2YXJpb3VzIHBsYXRmb3Jtcy4gQXMgdGhleSdyZSBpbXBsZW1lbnRlZCBvbiBvdGhlciBwbGF0
Zm9ybXMgdGhpcyBsaXN0IHNob3VsZCBiZSBtb2RpZmllZC4KLSNpZiAoIVBMQVRGT1JNKEdUSykg
JiYgIVBMQVRGT1JNKFdQRSkpIHx8ICFIQVZFKEFDQ0VTU0lCSUxJVFkpCisjaWYgUExBVEZPUk0o
Q09DT0EpIHx8ICFIQVZFKEFDQ0VTU0lCSUxJVFkpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hhcmFjdGVyQXRPZmZzZXQoaW50KSB7IHJldHVybiBu
dWxscHRyOyB9CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6d29yZEF0T2Zmc2V0KGludCkgeyByZXR1cm4gbnVsbHB0cjsgfQogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9mZnNldChpbnQpIHsgcmV0
dXJuIG51bGxwdHI7IH0KQEAgLTEwNyw0ICsxMDcsMyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzU2VudGVuY2VTdGFydFRl
eAogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdUUgotCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5oCmluZGV4IGIwMGM1NDlkYTk2MmQ4ZmMxNzkyYzlmYzUwNWZkYWFjYzY2NDVhMDguLmYyNGRj
ZTg2NDAwOGQ3NzZmNTM1MTZmZDI2MWY4YmFiYTlmMjY4YzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oCkBAIC0zNjIsMTAgKzM2Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRVSUVs
ZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiA+JikgY29uc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIGdldENoaWxkcmVuKFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0Q2hp
bGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+Jiwg
dW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7Ci0jZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1f
bm90aWZpY2F0aW9uSGFuZGxlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAppbmRleCA0ZjEyNzIy
MTQ3OGZkMDU0N2NkNzVkODJkNmQwYTgxMjhhZjA0YTY4Li5kZmEzZDMxOGY1NzI1YzE5ODdiYzUy
NmRiNmVlMTEzZmRjNTMxNmU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTWFpbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCkBAIC0yNCwxMSAr
MjQsMTUgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZS5oIgorCiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgogCisj
aWYgZGVmaW5lZChXSU4zMikKK2V4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZWxz
ZQogZXh0ZXJuICJDIgorI2VuZGlmCiB2b2lkIFdLQnVuZGxlSW5pdGlhbGl6ZShXS0J1bmRsZVJl
ZiBidW5kbGUsIFdLVHlwZVJlZiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewogICAgIFdUUjo6
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmluaXRpYWxpemUoYnVuZGxlLCBpbml0aWFsaXph
dGlvblVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCA4MGEwYTQ4YjgxNzE5
MDNjYTljOGY0YjUyMjJkNGFiZGNmMWM3ODQ3Li45NmM4OWQ1YTE4ZTliM2Q2MDc2MTcxMjIwYThm
NzY3MjEzZGVmYTkwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01MCw3ICs1MCw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAotI2lmIFVTRShDRikKKyNpZiBVU0UoQ0YpICYmICFQTEFURk9STShXSU5f
Q0FJUk8pCiAjaW5jbHVkZSAiV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgiCiAjZW5kaWYKIApAQCAt
MTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyByYW5nZVRvU3RyKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkCiB7CiAgICAgaWYgKCFyYW5n
ZVJlZikKICAgICAgICAgcmV0dXJuICIobnVsbCkiOwotIAorCiAgICAgV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsKIAogICAgIEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0Rm9y
V29ybGQoZnJhbWUsIHdvcmxkKTsKQEAgLTg3OSw3ICs4NzksNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6ZHVtcEFsbEZyYW1lc1RleHQoU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikK
IAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRlcikKIHsKLSNpZiBVU0Uo
Q0YpCisjaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJPKQogICAgIFdLUmV0YWluUHRy
PFdLRGF0YVJlZj4gd2tEYXRhID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weVdlYkFyY2hpdmUo
ZnJhbWUpKTsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9wdENGKENGRGF0
YUNyZWF0ZSgwLCBXS0RhdGFHZXRCeXRlcyh3a0RhdGEuZ2V0KCkpLCBXS0RhdGFHZXRTaXplKHdr
RGF0YS5nZXQoKSkpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gYWRv
cHRDRihXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0
YShjZkRhdGEuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGRmMWFkYWYwZTBhMDIyZDgzYmQ5ZDI5NzQ0
ZGIyMjllNDc3ZTU5NTQuLjZiOWQ3MDNkYjgwMDBkMDkzNzY5NWNlYTI3ZGI0NzFkOTA3MGIxNTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCBUZXN0UnVubmVyOjpUZXN0UnVubmVyKCkKICAg
ICAsIG1fZGF0YWJhc2VNYXhRdW90YSgtMSkKICAgICAsIG1fdXNlclN0eWxlU2hlZXRFbmFibGVk
KGZhbHNlKQogICAgICwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uKGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpKSkKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX3dhaXRUb0R1bXBXYXRjaGRvZ1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlRlc3RSdW5uZXI6OndhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVyRmlyZWQpCiAjZW5kaWYKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggZjViMmMyMGQyMGI0ZDkzOWFkYjFkZDAy
MTBmM2QwZWUyN2YwNDVkOC4uZThiYTk3ZjcxNjg0ZGZjYTA3NzU3M2NjYWJjMTNjZTY0MzQwMmZi
MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+CiB0eXBlZGVmIFJldGFpblB0cjxD
RlJ1bkxvb3BUaW1lclJlZj4gUGxhdGZvcm1UaW1lclJlZjsKLSNlbGlmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oV1BFKQorI2Vsc2UKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogbmFtZXNw
YWNlIFdUUiB7CiBjbGFzcyBUZXN0UnVubmVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiODdkZTY3Njk3Y2I3NWQyMTdmZWQyMjE1
ZmQ2ZWMwN2Y5MjVhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKQEAgLTAs
MCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuaCIKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3ZvaWQgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cGxhdGZvcm1OYW1lKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWY8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjcmVhdGUobnVsbHB0cik7Cit9CisKK1JlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShudWxs
cHRyKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoSlNWYWx1ZVJlZikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVtb3ZlTm90aWZp
Y2F0aW9uTGlzdGVuZXIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJ
TElUWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
d2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTYwZWNhNjU4NTE4ODMyOTJlMmJmN2JiMDAxZGU2ZGRjZjIwMzFkYQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCkBAIC0wLDAgKzEsOTc4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpCisKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFj
ZSBXVFIgeworCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
KFBsYXRmb3JtVUlFbGVtZW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldp
dGhSYW5nZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYsIHVuc2lnbmVk
LCB1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitpbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCwgaW50KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCisKK1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgo
dW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5z
aWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgo
dW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5kZXgodW5zaWduZWQpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRB
dEluZGV4KHVuc2lnbmVkKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkUm93QXRJbmRleCh1bnNpZ25lZCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRFbGVt
ZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGlzY2xvc2VkQnlSb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mRG9jdW1lbnRMaW5rcygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxk
cmVuKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0
cmlidXRlcygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworSlNWYWx1ZVJlZiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCitKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQo
SlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Rv
dWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjbGlja1BvaW50WSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
K30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1
ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRp
b24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNJbmNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRGVjcmVtZW50QWN0aW9uU3VwcG9ydGVkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0VuYWJsZWQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTZWxlY3RlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZE9w
dGlvbkFjdGl2ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2VkKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzcGVha0FzKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURy
b3BFZmZlY3RzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGlu
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCitKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JMaW5lKGlu
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQ
b3NpdGlvbihpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5z
aWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZWRTdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQsIHVuc2ln
bmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit1
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRDb3VudEZvclNlYXJjaFBy
ZWRpY2F0ZShKU0NvbnRleHRSZWYsIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqLCBib29sLCBKU1Zh
bHVlUmVmLCBKU1N0cmluZ1JlZiwgYm9vbCwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiAwOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEpTQ29udGV4
dFJlZiwgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCosIGJvb2wsIEpTVmFsdWVSZWYsIEpTU3RyaW5n
UmVmLCBib29sLCBib29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZWxlY3RUZXh0V2l0aENyaXRlcmlhKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYsIEpT
VmFsdWVSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hl
YWRlcnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZDb2x1bW5zKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXR0cmlidXRlc09mUm93cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxscygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRlcigpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworaW50IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvd0NvdW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uQ291bnQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5z
aWduZWQsIHVuc2lnbmVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25z
dAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRl
eHRSYW5nZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRSYW5nZSh1
bnNpZ25lZCwgdW5zaWduZWQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRlY3JlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENo
aWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3Rl
ZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbkF0
SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGVhclNlbGVjdGVkQ2hpbGRyZW4oKSBj
b25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29k
aW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1l
bnRVUkkoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1
ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVl
bigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNTaW5nbGVMaW5lKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpTGlu
ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlU2VsZWN0aW9uKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZFNl
bGVjdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAwOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpu
ZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciosIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNz
aWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbmRUZXh0TWFy
a2VyRm9yQm91bmRzKGludCwgaW50LCBpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlckZvckJvdW5kcyhpbnQs
IGludCwgaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9yUG9pbnQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VX
aXRoT3B0aW9ucyhBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiwgYm9vbCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWlu
c0F0dHJpYnV0ZShKU1N0cmluZ1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2ludCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRNYXJrZXIoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZFZpc2libGVUZXh0UmFuZ2UoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50KGludCwgaW50KQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQsIGludCwgaW50LCBpbnQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNj
cmlwdGlvbigpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGFzc0xpc3QoKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0pTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGFyYWN0ZXJBdE9mZnNldChpbnQpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndvcmRBdE9mZnNldChp
bnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVBdE9m
ZnNldChpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bnRlbmNlQXRPZmZzZXQoaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlICBXVEYKKworI2VuZGlmIC8vIEhBVkUoQUND
RVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvd2luL0FjdGl2YXRlRm9udHNXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS93aW4vQWN0aXZhdGVGb250c1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZjMTZm
Y2UyNGE0MGYwY2IxY2E5YmE4MThhYjBjYzgwYmY5ZGQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL0FjdGl2YXRlRm9udHNXaW4u
Y3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjdGl2YXRlRm9u
dHMuaCIKKworbmFtZXNwYWNlIFdUUiB7CisKK3ZvaWQgYWN0aXZhdGVGb250cygpCit7Cit9CisK
K3ZvaWQgaW5zdGFsbEZha2VIZWx2ZXRpY2EoV0tTdHJpbmdSZWYpCit7Cit9CisKK3ZvaWQgdW5p
bnN0YWxsRmFrZUhlbHZldGljYSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vSW5qZWN0ZWRC
dW5kbGVXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4v
SW5qZWN0ZWRCdW5kbGVXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MDgxZmYzYTI5ZTk2MDUzNzQ3MWE2
M2I4NzM4YjE5YjRkMmIwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL3dpbi9JbmplY3RlZEJ1bmRsZVdpbi5jcHAKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKworbmFtZXNw
YWNlIFdUUiB7CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBsYXRmb3JtSW5pdGlhbGl6ZShXS1R5
cGVSZWYpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lckluamVjdGVkQnVuZGxl
UHJlZml4LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rl
c3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhlY2YzNDE0MTYw
NWY5M2ZjMzQ4OGE2NGJjMzYwMGFmZGU1NGQxMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRs
ZVByZWZpeC5jcHAKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlUHJl
Zml4LmgiCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L3dpbi9UZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZVByZWZpeC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4ZmU0MWMyNWNkMjE3MmM3MGNiOTkzYTdjOWQ1ZWM0OGRiMmNiN2EKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL3dp
bi9UZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaApAQCAtMCwwICsxLDI3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3VuZGVmIFdFQkNPUkVfRVhQT1JUCisjZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdU
Rl9JTVBPUlRfREVDTEFSQVRJT04KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVm
YmZmNWFmYWIxMTBlZDdkNzQ5ODA5N2I0NTU3ZWJlMmNlYzE2NAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvd2luL1Rlc3RSdW5uZXJXaW4u
Y3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIu
aCIKKworI2luY2x1ZGUgIkFjdGl2YXRlRm9udHMuaCIKKworbmFtZXNwYWNlIFdUUiB7CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpT
U3RyaW5nUmVmKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gVGVzdFJ1bm5lcjo6aW5zcGVjdG9yVGVzdFN0dWJVUkwoKQoreworICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6aW52YWxpZGF0ZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkKK3sKKyAgICBtX3dhaXRUb0R1
bXBXYXRjaGRvZ1RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpwbGF0Zm9ybUlu
aXRpYWxpemUoKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OmluaXRpYWxpemVXYWl0VG9EdW1w
V2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fd2FpdFRvRHVtcFdhdGNoZG9n
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV93YWl0VG9EdW1wV2F0Y2hkb2dUaW1lci5zdGFy
dE9uZVNob3QobV90aW1lb3V0KTsKK30KKwordm9pZCBUZXN0UnVubmVyOjppbnN0YWxsRmFrZUhl
bHZldGljYShKU1N0cmluZ1JlZiBjb25maWd1cmF0aW9uKQoreworICAgIFdUUjo6aW5zdGFsbEZh
a2VIZWx2ZXRpY2EodG9XSyhjb25maWd1cmF0aW9uKS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggY2Uz
NjhmZjBlNmE0ZDliMzFjZjE2ZmVmOTg0YWNmYjA1YzNiMjVlYy4uZGI0MTljN2Q0ZmI4YmJjNGZi
ZjI4YWM2ZTFjZDUyNzdmMWEwZTE2NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3Jt
V2ViVmlldy5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBQbGF0Zm9ybVdlYlZpZXdfaAotI2RlZmluZSBQbGF0Zm9y
bVdlYlZpZXdfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgogCkBA
IC00OSwxMyArNDgsMjAgQEAgdHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGxhdGZvcm1J
bWFnZTsKIHR5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0OwogdHlwZWRlZiBXS1Zp
ZXdSZWYgUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIEd0a1dpZGdldCogUGxhdGZvcm1XaW5kb3c7
Ci10eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCAqUGxhdGZvcm1JbWFnZTsKICNlbGlmIFBMQVRGT1JN
KFdQRSkKIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogY2xhc3MgSGVhZGxlc3NWaWV3
QmFja2VuZDsKIH0KIHR5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiBX
UEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQqIFBsYXRmb3JtV2luZG93Owor
I2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPGNhaXJvLmg+CitjbGFzcyBUZXN0UnVubmVy
V2luZG93OwordHlwZWRlZiBIV05EIFBsYXRmb3JtV2luZG93OwordHlwZWRlZiBXS1ZpZXdSZWYg
UGxhdGZvcm1XS1ZpZXc7CisjZW5kaWYKKworI2lmIFVTRShDQUlSTykKIHR5cGVkZWYgY2Fpcm9f
c3VyZmFjZV90KiBQbGF0Zm9ybUltYWdlOwogI2VuZGlmCiAKQEAgLTEyNSw1ICsxMzEsMyBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVdl
YlZpZXdfaApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdpbi5j
bWFrZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XaW4uY21ha2UKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjI0NGNkNmJlNWEzMWEyOGE0NmY3ZTRmYTNkYTkwZDgyNjMyZTE0YgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCAr
MSw4NSBAQAorc2V0KFdlYktpdFRlc3RSdW5uZXJMaWJfU09VUkNFUworICAgICR7V2ViS2l0VGVz
dFJ1bm5lcl9TT1VSQ0VTfQorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9jYWlyby9UZXN0
SW52b2NhdGlvbkNhaXJvLmNwcAorICAgIHdpbi9FdmVudFNlbmRlclByb3h5V2luLmNwcAorICAg
IHdpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCisgICAgd2luL1Rlc3RDb250cm9sbGVyV2luLmNw
cAorICAgIHdpbi9tYWluLmNwcAorKQorCitzZXQoV2ViS2l0VGVzdFJ1bm5lcl9TT1VSQ0VTCisg
ICAgJHtUT09MU19ESVJ9L3dpbi9ETExMYXVuY2hlci9ETExMYXVuY2hlck1haW4uY3BwCispCisK
K2xpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9BY3RpdmF0ZUZvbnRz
V2luLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS93aW4v
SW5qZWN0ZWRCdW5kbGVXaW4uY3BwCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJV
TkRMRV9ESVJ9L3dpbi9UZXN0UnVubmVyV2luLmNwcAorICAgICR7V0VCS0lUX1RFU1RSVU5ORVJf
SU5KRUNURURCVU5ETEVfRElSfS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCisg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L3dpbi9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50V2luLmNwcAorKQorCisKK2xpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgIGNhaXJvCisgICAgd2luCisgICAgJHtDQUlST19JTkNM
VURFX0RJUlN9CisgICAgJHtGT1JXQVJESU5HX0hFQURFUlNfRElSfQorICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS93aW4KKykKKworCitzZXQoV2ViS2l0VGVzdFJ1
bm5lckxpYl9MSUJSQVJJRVMKKyAgICAke1dlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTfQorICAg
IENvbXN1cHB3CisgICAgT2xlYWNjCispCisKK2xpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJf
TElCUkFSSUVTCisgICAgV1RGCisgICAgV2ViS2l0CispCisKK3NldChXZWJLaXRUZXN0UnVubmVy
SW5qZWN0ZWRCdW5kbGVfTElCUkFSSUVTCisgICAgV2ViQ29yZVRlc3RTdXBwb3J0CisgICAgV2Vi
S2l0CispCisKKworbGlzdChSRU1PVkVfSVRFTQorICAgIFdlYktpdFRlc3RSdW5uZXJMaWJfU09V
UkNFUworICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfQklORElOR1NfRElSfS9KU1dyYXBwZXIuY3Bw
CispCitsaXN0KFJFTU9WRV9JVEVNCisgICAgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxl
X1NPVVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVy
LmNwcAorKQorCitXRUJLSVRfQUREX1BSRUNPTVBJTEVEX0hFQURFUihXZWJLaXRUZXN0UnVubmVy
UHJlZml4LmgKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vd2luL1dlYktpdFRlc3RSdW5u
ZXJQcmVmaXguY3BwCisgICAgV2ViS2l0VGVzdFJ1bm5lckxpYl9TT1VSQ0VTCispCitXRUJLSVRf
QUREX1BSRUNPTVBJTEVEX0hFQURFUihUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVQcmVmaXguaAor
ICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS93aW4vVGVzdFJ1bm5l
ckluamVjdGVkQnVuZGxlUHJlZml4LmNwcAorICAgIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1
bmRsZV9TT1VSQ0VTCispCisKK2xpc3QoQVBQRU5ECisgICAgV2ViS2l0VGVzdFJ1bm5lckxpYl9T
T1VSQ0VTCisgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9CSU5ESU5HU19ESVJ9L0pTV3JhcHBlci5j
cHAKKykKK2xpc3QoQVBQRU5ECisgICAgV2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NP
VVJDRVMKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0JJTkRJTkdTX0RJUn0vSlNXcmFwcGVyLmNw
cAorKQorCisKK3NldChDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9M
SU5LRVJfRkxBR1N9ICR7TVNWQ19SVU5USU1FX0xJTktFUl9GTEFHU30iKQorYWRkX2xpYnJhcnko
V2ViS2l0VGVzdFJ1bm5lckxpYiBTSEFSRUQgJHtXZWJLaXRUZXN0UnVubmVyTGliX1NPVVJDRVN9
KQordGFyZ2V0X2xpbmtfbGlicmFyaWVzKFdlYktpdFRlc3RSdW5uZXJMaWIgJHtXZWJLaXRUZXN0
UnVubmVyTGliX0xJQlJBUklFU30pCisKK2FkZF9kZWZpbml0aW9ucygKKyAgICAtRFdJTl9DQUlS
TworICAgIC1EVVNFX0NPTlNPTEVfRU5UUllfUE9JTlQKKyAgICAtRF9VTklDT0RFCispCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ1NWE5ZmM4MWY5MzIy
YzlhNTg5YzJhMDVjNGUzZTdlOTc0ZTQzNTYuLmIwZWVkNjM2MzY1MjY1ODFjNzcyYjM5YjE4ZmE1
OTFlZjcyN2I1MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSA8ZnN0cmVhbT4KICNpbmNsdWRlIDxzdGRsaWIu
aD4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8d3Rm
L0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRv
bU51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KQEAgLTg2LDYgKzg1LDE0IEBA
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVByaXZhdGVNYWMuaD4KICNlbmRpZgogCisjaWYgUExB
VEZPUk0oV0lOKQorI2luY2x1ZGUgPGRpcmVjdC5oPgorI2RlZmluZSBnZXRjd2QgX2dldGN3ZAor
I2RlZmluZSBQQVRIX01BWCBfTUFYX1BBVEgKKyNlbHNlCisjaW5jbHVkZSA8dW5pc3RkLmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIGNvbnN0IHVuc2lnbmVkIFRlc3RDb250cm9sbGVy
Ojp2aWV3V2lkdGggPSA4MDA7CkBAIC04NzIsNyArODc5LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxl
cjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9u
cywgUmUKICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2Jh
Ymx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KICAgICByZXNldFByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKG9wdGlvbnMpOwogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAh
UExBVEZPUk0oV1BFKQorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXS1RleHRDaGVja2VyQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkU3RhdGVDaGFuZ2VkKHRydWUpOwogI2VuZGlmCiAKQEAg
LTEwOTEsOCArMTA5OCwxNSBAQCBzdGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVzdFVSTChjb25zdCBj
aGFyKiBwYXRoT3JVUkwpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIGNvbnN0IGNoYXIgc2VwYXJhdG9yID0gJ1xcJzsKKyAgICBi
b29sIGlzQWJzb2x1dGVQYXRoID0gZmFsc2U7CisgICAgaWYgKHN0cmxlbihwYXRoT3JVUkwpID49
IDMgJiYgcGF0aE9yVVJMWzFdID09ICc6JyAmJiBwYXRoT3JVUkxbMl0gPT0gc2VwYXJhdG9yKQor
ICAgICAgICBpc0Fic29sdXRlUGF0aCA9IHRydWU7CisjZWxzZQogICAgIGNvbnN0IGNoYXIgc2Vw
YXJhdG9yID0gJy8nOwogICAgIGJvb2wgaXNBYnNvbHV0ZVBhdGggPSBwYXRoT3JVUkxbMF0gPT0g
c2VwYXJhdG9yOworI2VuZGlmCiAgICAgY29uc3QgY2hhciogZmlsZVByZWZpeCA9ICJmaWxlOi8v
IjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihmaWxlUHJl
Zml4KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBk
ODFlNThiMzkxN2EyM2JjMzFkNWQ3NjhlYmE4MWRmMGYwZWE3MmFkLi5iOGZjZDU3Yjg3NTlhYWRm
M2NkNzNkOTk2MWY1MDdiYjhlZTQ0YjhiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaD4KICNpbmNsdWRlIDxjbGltaXRzPgogI2luY2x1ZGUgPGNzdGRpbz4K
LSNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC01NCw2ICs1MywxMyBAQAogI2luY2x1ZGUg
PFdlYktpdC9XS1BhZ2VQcml2YXRlTWFjLmg+CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikK
KyNpbmNsdWRlIDxpby5oPgorI2RlZmluZSBpc2F0dHkgX2lzYXR0eQorI2Vsc2UKKyNpbmNsdWRl
IDx1bmlzdGQuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oCmluZGV4IDVmOTg5ZmM1NGU3NTExMWEwMmNj
NjY5NTg3MTlhNmJlOTZlYWMzNGEuLmYyMDAxMTk4NmMxZGViNjYzOTc5NzkxMjZlODBmZmVmYWQy
Mjk4MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
clByZWZpeC5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lclBy
ZWZpeC5oCkBAIC00NCwzICs0NCw3IEBACiAjdW5kZWYgY2F0Y2gKICNlbmRpZgogCisjaWYgT1Mo
V0lORE9XUykKKyN1bmRlZiBXRUJDT1JFX0VYUE9SVAorI2RlZmluZSBXRUJDT1JFX0VYUE9SVCBX
VEZfSU1QT1JUX0RFQ0xBUkFUSU9OCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93aW4vRXZlbnRTZW5kZXJQcm94eVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI3MDkyOTA4NDU1
MWFjNDFmM2RmNmQ3YmQ4YjZkMzYxMjAwYjUyMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvd2luL0V2ZW50U2VuZGVyUHJveHlXaW4uY3BwCkBAIC0wLDAgKzEsMTA4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50U2VuZGVyUHJveHkuaCIKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorCituYW1lc3BhY2UgV1RSIHsKKwor
Ly8gS2V5IGV2ZW50IGxvY2F0aW9uIGNvZGUgZGVmaW5lZCBpbiBET00gTGV2ZWwgMy4KK2VudW0g
S2V5TG9jYXRpb25Db2RlIHsKKyAgICBET01LZXlMb2NhdGlvblN0YW5kYXJkICAgICAgPSAweDAw
LAorICAgIERPTUtleUxvY2F0aW9uTGVmdCAgICAgICAgICA9IDB4MDEsCisgICAgRE9NS2V5TG9j
YXRpb25SaWdodCAgICAgICAgID0gMHgwMiwKKyAgICBET01LZXlMb2NhdGlvbk51bXBhZCAgICAg
ICAgPSAweDAzCit9OworCitlbnVtIEJ1dHRvblN0YXRlIHsKKyAgICBCdXR0b25SZWxlYXNlZCA9
IDAsCisgICAgQnV0dG9uUHJlc3NlZCA9IDEKK307CisKK2VudW0gUG9pbnRlckF4aXMgeworICAg
IFZlcnRpY2FsU2Nyb2xsID0gMCwKKyAgICBIb3Jpem9udGFsU2Nyb2xsID0gMQorfTsKKworRXZl
bnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRy
b2xsZXIpCisgICAgOiBtX3Rlc3RDb250cm9sbGVyKHRlc3RDb250cm9sbGVyKQorICAgICwgbV90
aW1lKDApCisgICAgLCBtX2xlZnRNb3VzZUJ1dHRvbkRvd24oZmFsc2UpCisgICAgLCBtX2NsaWNr
Q291bnQoMCkKKyAgICAsIG1fY2xpY2tUaW1lKDApCisgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2
ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKKyAgICAsIG1fYnV0dG9uU3RhdGUoQnV0dG9uUmVsZWFz
ZWQpCit7Cit9CisKK0V2ZW50U2VuZGVyUHJveHk6On5FdmVudFNlbmRlclByb3h5KCkKK3sKK30K
Kwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2
ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCh1bnNpZ25lZCBidXR0b24sIFdLRXZlbnRN
b2RpZmllcnMgd2tNb2RpZmllcnMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNj
cm9sbEJ5KGludCBob3Jpem9udGFsLCBpbnQgdmVydGljYWwpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoaW50IGhvcml6b250YWwsIGludCB2ZXJ0aWNhbCwgaW50LCBpbnQp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojpj
b250aW51b3VzTW91c2VTY3JvbGxCeShpbnQsIGludCwgYm9vbCkKK3sKK30KKwordm9pZCBFdmVu
dFNlbmRlclByb3h5OjpsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKQoreworICAgIG1fdGlt
ZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
a2V5RG93bihXS1N0cmluZ1JlZiBrZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMs
IHVuc2lnbmVkIGxvY2F0aW9uKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY5M2IzYjJlYmU0MjUyMGVhMGE4NWNmY2UyOTJi
NjA3ZTUyZjNkZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2lu
L1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKQEAgLTAsMCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQnJlbnQgRnVsZ2hhbSA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKKyNpbmNsdWRlIDxIV25kREMuaD4KKyNp
bmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPGNzdGRpbz4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5o
PgorCisKK25hbWVzcGFjZSBXVFIgeworCitzdGF0aWMgTFBDV1NUUiBob3N0V2luZG93Q2xhc3NO
YW1lID0gTCJXVFJXZWJWaWV3SG9zdFdpbmRvdyI7CitzdGF0aWMgTFBDV1NUUiB0ZXN0UnVubmVy
V2luZG93TmFtZSA9IEwiV2ViS2l0VGVzdFJ1bm5lciI7CisKK3N0YXRpYyB2b2lkIHJlZ2lzdGVy
V2luZG93Q2xhc3MoKQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Cisg
ICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOworCisgICAgV05EQ0xBU1NFWFcgd25kQ2xhc3MgPSB7MH07CisgICAgd25kQ2xhc3MuY2JT
aXplID0gc2l6ZW9mKHduZENsYXNzKTsKKyAgICB3bmRDbGFzcy5zdHlsZSA9IENTX0hSRURSQVcg
fCBDU19WUkVEUkFXOworICAgIHduZENsYXNzLmxwZm5XbmRQcm9jID0gRGVmV2luZG93UHJvYzsK
KyAgICB3bmRDbGFzcy5oQ3Vyc29yID0gTG9hZEN1cnNvcigwLCBJRENfQVJST1cpOworICAgIHdu
ZENsYXNzLmhJbnN0YW5jZSA9IEdldE1vZHVsZUhhbmRsZSgwKTsKKyAgICB3bmRDbGFzcy5scHN6
Q2xhc3NOYW1lID0gaG9zdFdpbmRvd0NsYXNzTmFtZTsKKworICAgIDo6UmVnaXN0ZXJDbGFzc0V4
Vygmd25kQ2xhc3MpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b25zKQorICAgIDogbV93aW5kb3cobnVsbHB0cikKKyAgICAsIG1fd2luZG93SXNLZXkodHJ1ZSkK
KyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQoreworICAgIHJlZ2lzdGVyV2luZG93Q2xhc3MoKTsK
KworICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2MDB9OworICAgIG1fd2luZG93ID0g
OjpDcmVhdGVXaW5kb3dFeCgKKyAgICAgICAgMCwKKyAgICAgICAgaG9zdFdpbmRvd0NsYXNzTmFt
ZSwKKyAgICAgICAgdGVzdFJ1bm5lcldpbmRvd05hbWUsCisgICAgICAgIFdTX09WRVJMQVBQRURX
SU5ET1csCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIHZpZXdSZWN0LnJpZ2h0LAor
ICAgICAgICB2aWV3UmVjdC5ib3R0b20sCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAg
IEdldE1vZHVsZUhhbmRsZSgwKSwKKyAgICAgICAgMCk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3Jl
YXRlKHZpZXdSZWN0LCBjb25maWd1cmF0aW9uLCBtX3dpbmRvdyk7CisgICAgV0tWaWV3U2V0SXNJ
bldpbmRvdyhtX3ZpZXcsIHRydWUpOworCisgICAgU2hvd1dpbmRvdyhtX3dpbmRvdywgU1dfU0hP
Vyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCit7CisgICAgaWYg
KDo6SXNXaW5kb3cobV93aW5kb3cpKQorICAgICAgICA6OkRlc3Ryb3lXaW5kb3cobV93aW5kb3cp
OworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCwgV2ViVmlld1NpemluZ01vZGUpCit7CisgICAgOjpTZXRXaW5kb3dQb3Mo
CisgICAgICAgIFdLVmlld0dldFdpbmRvdyhtX3ZpZXcpLAorICAgICAgICAwLAorICAgICAgICAw
LAorICAgICAgICAwLAorICAgICAgICB3aWR0aCwKKyAgICAgICAgaGVpZ2h0LAorICAgICAgICBT
V1BfTk9NT1ZFIHwgU1dQX05PWk9SREVSIHwgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9DT1BZQklU
Uyk7Cit9CisKK1dLUGFnZVJlZiBQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UoKQoreworICAgIHJldHVy
biBXS1ZpZXdHZXRQYWdlKG1fdmlldyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1
cygpCit7CisgICAgOjpTZXRGb2N1cyg6OldLVmlld0dldFdpbmRvdyhtX3ZpZXcpKTsKK30KKwor
V0tSZWN0IFBsYXRmb3JtV2ViVmlldzo6d2luZG93RnJhbWUoKQoreworICAgIFdLUmVjdCB3a0Zy
YW1lID0gezB9OworICAgIFJFQ1QgcjsKKworICAgIGlmICg6OkdldFdpbmRvd1JlY3QobV93aW5k
b3csICZyKSkgeworICAgICAgICB3a0ZyYW1lLm9yaWdpbi54ID0gci5sZWZ0OworICAgICAgICB3
a0ZyYW1lLm9yaWdpbi55ID0gci50b3A7CisgICAgICAgIHdrRnJhbWUuc2l6ZS53aWR0aCA9IHIu
cmlnaHQgLSByLmxlZnQ7CisgICAgICAgIHdrRnJhbWUuc2l6ZS5oZWlnaHQgPSByLmJvdHRvbSAt
IHIudG9wOworICAgIH0KKworICAgIHJldHVybiB3a0ZyYW1lOworfQorCit2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6c2V0V2luZG93RnJhbWUoV0tSZWN0IGZyYW1lLCBXZWJWaWV3U2l6aW5nTW9kZSkK
K3sKKyAgICA6OlNldFdpbmRvd1BvcygKKyAgICAgICAgbV93aW5kb3csCisgICAgICAgIDAsCisg
ICAgICAgIGZyYW1lLm9yaWdpbi54LAorICAgICAgICBmcmFtZS5vcmlnaW4ueSwKKyAgICAgICAg
ZnJhbWUuc2l6ZS53aWR0aCwKKyAgICAgICAgZnJhbWUuc2l6ZS5oZWlnaHQsCisgICAgICAgIFNX
UF9OT1pPUkRFUiB8IFNXUF9OT0FDVElWQVRFIHwgU1dQX05PQ09QWUJJVFMpOworfQorCit2b2lk
IFBsYXRmb3JtV2ViVmlldzo6ZGlkSW5pdGlhbGl6ZUNsaWVudHMoKQoreworfQorCit2b2lkIFBs
YXRmb3JtV2ViVmlldzo6YWRkQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKK3ZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKwordm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OmFkZFRvV2luZG93KCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJl
bW92ZUZyb21XaW5kb3coKQoreworfQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2V0V2luZG93
SXNLZXkoYm9vbCB3aW5kb3dJc0tleSkKK3sKKyAgICBtX3dpbmRvd0lzS2V5ID0gd2luZG93SXNL
ZXk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjptYWtlV2ViVmlld0ZpcnN0UmVzcG9uZGVy
KCkKK3sKK30KKworI2lmIFVTRShDQUlSTykKK3N0YXRpYyBjYWlyb19zdXJmYWNlX3QqIGdlbmVy
YXRlQ2Fpcm9TdXJmYWNlRnJvbUJpdG1hcChCSVRNQVAgYml0bWFwVGFnKQoreworICAgIGNhaXJv
X3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZSgKKyAgICAgICAg
Q0FJUk9fRk9STUFUX0FSR0IzMiwKKyAgICAgICAgYml0bWFwVGFnLmJtV2lkdGgsCisgICAgICAg
IGJpdG1hcFRhZy5ibUhlaWdodCk7CisKKyAgICB1bnNpZ25lZCBjaGFyKiBzcmMgPSAodW5zaWdu
ZWQgY2hhciopYml0bWFwVGFnLmJtQml0czsKKyAgICBpbnQgc3JjUGl0Y2ggPSBiaXRtYXBUYWcu
Ym1XaWR0aEJ5dGVzOworICAgIHVuc2lnbmVkIGNoYXIqIGRzdCA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2RhdGEoaW1hZ2UpOworICAgIGludCBkc3RQaXRjaCA9IGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3N0cmlkZShpbWFnZSk7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGJpdG1hcFRh
Zy5ibUhlaWdodDsgeSsrKSB7CisgICAgICAgIG1lbWNweShkc3QsIHNyYywgZHN0UGl0Y2gpOwor
ICAgICAgICBzcmMgKz0gc3JjUGl0Y2g7CisgICAgICAgIGRzdCArPSBkc3RQaXRjaDsKKyAgICB9
CisKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK2NhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1XZWJW
aWV3Ojp3aW5kb3dTbmFwc2hvdEltYWdlKCkKK3sKKyAgICBSRUNUIHdpbmRvd1JlY3Q7CisgICAg
OjpHZXRDbGllbnRSZWN0KG1fd2luZG93LCAmd2luZG93UmVjdCk7CisgICAgTE9ORyB3aWR0aCA9
IHdpbmRvd1JlY3QucmlnaHQgLSB3aW5kb3dSZWN0LmxlZnQ7CisgICAgTE9ORyBoZWlnaHQgPSB3
aW5kb3dSZWN0LmJvdHRvbSAtIHdpbmRvd1JlY3QudG9wOworCisgICAgV2ViQ29yZTo6SFduZERD
IHdpbmRvd0RDKG1fd2luZG93KTsKKyAgICBhdXRvIG1lbW9yeURDID0gYWRvcHRHRElPYmplY3Qo
OjpDcmVhdGVDb21wYXRpYmxlREMod2luZG93REMpKTsKKworICAgIEJJVE1BUElORk8gYml0bWFw
SW5mbyA9IHswfTsKKyAgICBXS1JlY3Qgd2tGcmFtZSA9IHdpbmRvd0ZyYW1lKCk7CisgICAgYml0
bWFwSW5mby5ibWlIZWFkZXIuYmlTaXplID0gc2l6ZW9mKEJJVE1BUElORk9IRUFERVIpOworICAg
IGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpV2lkdGggPSB3aWR0aDsKKyAgICBiaXRtYXBJbmZvLmJt
aUhlYWRlci5iaUhlaWdodCA9IC1oZWlnaHQ7CisgICAgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlQ
bGFuZXMgPSAxOworICAgIGJpdG1hcEluZm8uYm1pSGVhZGVyLmJpQml0Q291bnQgPSAzMjsKKyAg
ICBiaXRtYXBJbmZvLmJtaUhlYWRlci5iaUNvbXByZXNzaW9uID0gQklfUkdCOworICAgIGJpdG1h
cEluZm8uYm1pSGVhZGVyLmJpU2l6ZUltYWdlID0gd2lkdGggKiBoZWlnaHQgKiA0OworCisgICAg
dm9pZCogYml0c1BvaW50ZXIgPSAwOworICAgIGF1dG8gYml0bWFwID0gYWRvcHRHRElPYmplY3Qo
OjpDcmVhdGVESUJTZWN0aW9uKHdpbmRvd0RDLCAmYml0bWFwSW5mbywgRElCX1JHQl9DT0xPUlMs
ICZiaXRzUG9pbnRlciwgMCwgMCkpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIDo6U2VsZWN0T2JqZWN0KG1lbW9yeURDLmdldCgpLCBiaXRtYXAuZ2V0
KCkpOworICAgIDo6Qml0Qmx0KG1lbW9yeURDLmdldCgpLAorICAgICAgICAwLAorICAgICAgICAw
LAorICAgICAgICB3aWR0aCwKKyAgICAgICAgaGVpZ2h0LAorICAgICAgICB3aW5kb3dEQywKKyAg
ICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgU1JDQ09QWSk7CisKKyAgICBCSVRNQVAgYml0
bWFwVGFnID0gezB9OworICAgIEdldE9iamVjdChiaXRtYXAuZ2V0KCksIHNpemVvZihiaXRtYXBU
YWcpLCAmYml0bWFwVGFnKTsKKyAgICBBU1NFUlQoYml0bWFwVGFnLmJtQml0c1BpeGVsID09IDMy
KTsKKworICAgIHJldHVybiBnZW5lcmF0ZUNhaXJvU3VyZmFjZUZyb21CaXRtYXAoYml0bWFwVGFn
KTsKK30KKyNlbmRpZgorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6Y2hhbmdlV2luZG93U2NhbGVJ
Zk5lZWRlZChmbG9hdCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNldE5hdmlnYXRp
b25HZXN0dXJlc0VuYWJsZWQoYm9vbCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZv
cmNlV2luZG93RnJhbWVzQ2hhbmdlZCgpCit7Cit9CisKK2Jvb2wgUGxhdGZvcm1XZWJWaWV3Ojpk
cmF3c0JhY2tncm91bmQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBQ
bGF0Zm9ybVdlYlZpZXc6OnNldERyYXdzQmFja2dyb3VuZChib29sKQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RD
b250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RDb250cm9s
bGVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTdiNjdhNTI5MjkxYWMyOWVhY2IyMmRkYzI3Y2Q2ZmIz
MjQ1ZjZiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVz
dENvbnRyb2xsZXJXaW4uY3BwCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdENvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKyNpbmNsdWRlIDxXaW5CYXNlLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxp
by5oPgorI2luY2x1ZGUgPHNobHdhcGkuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8
d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKworI2RlZmluZSBJTkpFQ1RF
RF9CVU5ETEVfRExMX05BTUUgIlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5kbGwiCisKK25hbWVz
cGFjZSBXVFIgeworCitzdGF0aWMgSEFORExFIHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50Oworc3Rh
dGljIGNvbnN0IGNoYXIgd2ViUHJvY2Vzc0NyYXNoaW5nRXZlbnROYW1lW10gPSAiV2ViS2l0VGVz
dFJ1bm5lci5XZWJQcm9jZXNzQ3Jhc2hpbmciOworLy8gVGhpcyBpcyB0aGUgbG9uZ2VzdCB3ZSds
bCB3YWl0IChpbiBzZWNvbmRzKSBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGZpbmlzaCBjcmFzaGlu
ZyBhbmQgYSBjcmFzaAorLy8gbG9nIHRvIGJlIHNhdmVkLiBUaGlzIGludGVydmFsIHNob3VsZCBi
ZSBqdXN0IGEgdGlueSBiaXQgbG9uZ2VyIHRoYW4gaXQgd2lsbCBldmVyIHJlYXNvbmFibHkKKy8v
IHRha2UgdG8gc2F2ZSBhIGNyYXNoIGxvZy4KK3N0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bVdh
aXRGb3JXZWJQcm9jZXNzVG9DcmFzaCA9IDYwOworCisKK3N0YXRpYyBMT05HIFdJTkFQSSBleGNl
cHRpb25GaWx0ZXIoRVhDRVBUSU9OX1BPSU5URVJTKikKK3sKKyAgICBmcHV0cygiI0NSQVNIRURc
biIsIHN0ZGVycik7CisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgcmV0dXJuIEVYQ0VQVElPTl9D
T05USU5VRV9TRUFSQ0g7Cit9CisKK2VudW0gUnVuTG9vcFJlc3VsdCB7IFRpbWVkT3V0LCBPYmpl
Y3RTaWduYWxlZCwgQ29uZGl0aW9uU2F0aXNmaWVkIH07CisKK3N0YXRpYyBSdW5Mb29wUmVzdWx0
IHJ1blJ1bkxvb3BVbnRpbChib29sJiBjb25kaXRpb24sIEhBTkRMRSBvYmplY3QsIGRvdWJsZSB0
aW1lb3V0KQoreworICAgIERXT1JEIGVuZCA9IDo6R2V0VGlja0NvdW50KCkgKyB0aW1lb3V0ICog
MTAwMDsKKyAgICBpZiAodGltZW91dCA8IDApCisgICAgICAgIGVuZCA9IFVMT05HX01BWDsKKwor
ICAgIHdoaWxlICghY29uZGl0aW9uKSB7CisgICAgICAgIERXT1JEIG5vdyA9IDo6R2V0VGlja0Nv
dW50KCk7CisgICAgICAgIGlmIChub3cgPiBlbmQpCisgICAgICAgICAgICByZXR1cm4gVGltZWRP
dXQ7CisKKyAgICAgICAgRFdPUkQgd2FpdCA9IGVuZCAtIG5vdzsKKyAgICAgICAgRFdPUkQgb2Jq
ZWN0Q291bnQgPSBvYmplY3QgPyAxIDogMDsKKyAgICAgICAgY29uc3QgSEFORExFKiBvYmplY3Rz
ID0gb2JqZWN0ID8gJm9iamVjdCA6IDA7CisKKyAgICAgICAgRFdPUkQgcmVzdWx0ID0gOjpNc2dX
YWl0Rm9yTXVsdGlwbGVPYmplY3RzRXgob2JqZWN0Q291bnQsIG9iamVjdHMsIHdhaXQsIFFTX0FM
TElOUFVULCBNV01PX0lOUFVUQVZBSUxBQkxFKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBXQUlU
X1RJTUVPVVQpCisgICAgICAgICAgICByZXR1cm4gVGltZWRPdXQ7CisKKyAgICAgICAgaWYgKG9i
amVjdENvdW50ICYmIHJlc3VsdCA+PSBXQUlUX09CSkVDVF8wICYmIHJlc3VsdCA8IFdBSVRfT0JK
RUNUXzAgKyBvYmplY3RDb3VudCkKKyAgICAgICAgICAgIHJldHVybiBPYmplY3RTaWduYWxlZDsK
KworICAgICAgICBBU1NFUlQocmVzdWx0ID09IFdBSVRfT0JKRUNUXzAgKyBvYmplY3RDb3VudCk7
CisgICAgICAgIC8vIFRoZXJlIGFyZSBtZXNzYWdlcyBpbiB0aGUgcXVldWUuIFByb2Nlc3MgdGhl
bS4KKyAgICAgICAgTVNHIG1zZzsKKyAgICAgICAgd2hpbGUgKDo6UGVla01lc3NhZ2VXKCZtc2cs
IDAsIDAsIDAsIFBNX1JFTU9WRSkpIHsKKyAgICAgICAgICAgIDo6VHJhbnNsYXRlTWVzc2FnZSgm
bXNnKTsKKyAgICAgICAgICAgIDo6RGlzcGF0Y2hNZXNzYWdlVygmbXNnKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBDb25kaXRpb25TYXRpc2ZpZWQ7Cit9CisKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6Om5vdGlmeURvbmUoKQoreworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRI
aWRkZW4oYm9vbCkKK3sKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3sKKyAgICAvLyBDeWd3aW4gY2FsbHMgOjpTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklU
SUNBTEVSUk9SUyksIHdoaWNoIHdlIHdpbGwgaW5oZXJpdC4gVGhpcyBpcyBiYWQgZm9yCisgICAg
Ly8gdGVzdGluZy9kZWJ1Z2dpbmcsIGFzIGl0IGNhdXNlcyB0aGUgcG9zdC1tb3J0ZW0gZGVidWdn
ZXIgbm90IHRvIGJlIGludm9rZWQuIFdlIHJlc2V0IHRoZQorICAgIC8vIGVycm9yIG1vZGUgaGVy
ZSB0byB3b3JrIGFyb3VuZCBDeWd3aW4ncyBiZWhhdmlvci4gU2VlIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzU1MjIyPi4KKyAgICA6OlNldEVycm9yTW9kZSgwKTsKKworICAgIDo6U2V0VW5oYW5kbGVk
RXhjZXB0aW9uRmlsdGVyKGV4Y2VwdGlvbkZpbHRlcik7CisKKyAgICBfc2V0bW9kZSgxLCBfT19C
SU5BUlkpOworICAgIF9zZXRtb2RlKDIsIF9PX0JJTkFSWSk7CisKKyAgICB3ZWJQcm9jZXNzQ3Jh
c2hpbmdFdmVudCA9IDo6Q3JlYXRlRXZlbnRBKDAsIEZBTFNFLCBGQUxTRSwgd2ViUHJvY2Vzc0Ny
YXNoaW5nRXZlbnROYW1lKTsKK30KKworV0tQcmVmZXJlbmNlc1JlZiBUZXN0Q29udHJvbGxlcjo6
cGxhdGZvcm1QcmVmZXJlbmNlcygpCit7CisgICAgcmV0dXJuIFdLUGFnZUdyb3VwR2V0UHJlZmVy
ZW5jZXMobV9wYWdlR3JvdXAuZ2V0KCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybURlc3Ryb3koKQoreworfQorCitzdGF0aWMgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRv
V0soY29uc3QgY2hhciogc3RyaW5nKQoreworICAgIHJldHVybiBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4oQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoc3RyaW5nKSk7Cit9
CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKQorewor
ICAgIC8vIEZJWE1FOiBGSVhNRSEgTk8gV0tDb250ZXh0U2V0U2hvdWxkUGFpbnROYXRpdmVDb250
cm9scyBpbiBBUEkgbGlzdAorICAgIC8vIEZJWE1FOiBNYWtlIERSVCBwYXNzIHdpdGggV2luZG93
cyBuYXRpdmUgY29udHJvbHMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzI1NTkyPgorICAgIC8vIFdL
Q29udGV4dFNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMobV9jb250ZXh0LmdldCgpLCBmYWxz
ZSk7CisKKyAgICBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRC
dW5kbGUobV9jb250ZXh0LmdldCgpLCB0b1dLKHdlYlByb2Nlc3NDcmFzaGluZ0V2ZW50TmFtZSku
Z2V0KCkpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJvb2wm
IGNvbmRpdGlvbiwgV1RGOjpTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgUnVuTG9vcFJlc3VsdCBy
ZXN1bHQgPSBydW5SdW5Mb29wVW50aWwoY29uZGl0aW9uLCB3ZWJQcm9jZXNzQ3Jhc2hpbmdFdmVu
dCwgdGltZW91dC5zZWNvbmRzKCkpOworICAgIGlmIChyZXN1bHQgPT0gVGltZWRPdXQgfHwgcmVz
dWx0ID09IENvbmRpdGlvblNhdGlzZmllZCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChy
ZXN1bHQgPT0gT2JqZWN0U2lnbmFsZWQpOworCisgICAgLy8gVGhlIHdlYiBwcm9jZXNzIGlzIGNy
YXNoaW5nLiBBIGNyYXNoIGxvZyBtaWdodCBiZSBiZWluZyBzYXZlZCwgd2hpY2ggY2FuIHRha2Ug
YSBsb25nCisgICAgLy8gdGltZSwgYW5kIHdlIGRvbid0IHdhbnQgdG8gdGltZSBvdXQgd2hpbGUg
dGhhdCBoYXBwZW5zLgorCisgICAgLy8gRmlyc3QsIGxldCB0aGUgdGVzdCBoYXJuZXNzIGtub3cg
dGhpcyBoYXBwZW5lZCBzbyBpdCB3b24ndCB0aGluayB3ZSd2ZSBodW5nLiBCdXQKKyAgICAvLyBt
YWtlIHN1cmUgd2UgZG9uJ3QgZXhpdCBqdXN0IHlldCEKKyAgICBtX3Nob3VsZEV4aXRXaGVuV2Vi
UHJvY2Vzc0NyYXNoZXMgPSBmYWxzZTsKKyAgICBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICBtX3No
b3VsZEV4aXRXaGVuV2ViUHJvY2Vzc0NyYXNoZXMgPSB0cnVlOworCisgICAgLy8gVGhlbiBzcGlu
IGEgcnVuIGxvb3AgdW50aWwgaXQgZmluaXNoZXMgY3Jhc2hpbmcgdG8gZ2l2ZSB0aW1lIGZvciBh
IGNyYXNoIGxvZyB0byBiZSBzYXZlZC4gSWYKKyAgICAvLyBpdCB0YWtlcyB0b28gbG9uZyBmb3Ig
YSBjcmFzaCBsb2cgdG8gYmUgc2F2ZWQsIHdlJ2xsIGp1c3QgZ2l2ZSB1cC4KKyAgICBib29sIG5l
dmVyU2V0Q29uZGl0aW9uID0gZmFsc2U7CisgICAgcmVzdWx0ID0gcnVuUnVuTG9vcFVudGlsKG5l
dmVyU2V0Q29uZGl0aW9uLCAwLCBtYXhpbXVtV2FpdEZvcldlYlByb2Nlc3NUb0NyYXNoKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IFRpbWVkT3V0KTsKKyAgICBleGl0KDEp
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybURpZENvbW1pdExvYWRGb3JGcmFt
ZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUGF0aCgpCit7Cisg
ICAgbV9pbmplY3RlZEJ1bmRsZVBhdGguYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoSU5KRUNURURfQlVORExFX0RMTF9OQU1FKSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmluaXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KCkKK3sKKyAgICB3Y2hhcl90IGV4ZVBhdGhb
TUFYX1BBVEhdOworICAgIGlmICg6OkdldE1vZHVsZUZpbGVOYW1lKG51bGxwdHIsIGV4ZVBhdGgs
IE1BWF9QQVRIKSkgeworICAgICAgICB3Y2hhcl90IGRyaXZlW19NQVhfRFJJVkVdOworICAgICAg
ICB3Y2hhcl90IGRpcltfTUFYX0RJUl07CisgICAgICAgIF93c3BsaXRwYXRoKGV4ZVBhdGgsIGRy
aXZlLCBkaXIsIG51bGxwdHIsIG51bGxwdHIpOworCisgICAgICAgIHdjaGFyX3QgYnVuZGxlRGly
W01BWF9QQVRIXTsKKyAgICAgICAgd2NzbmNweShidW5kbGVEaXIsIGRyaXZlLCBNQVhfUEFUSCk7
CisgICAgICAgIHdjc25jYXQoYnVuZGxlRGlyLCBkaXIsIE1BWF9QQVRIIC0gX01BWF9EUklWRSk7
CisKKyAgICAgICAgY2hhciBidW5kbGVEaXJVVEY4W01BWF9QQVRIXTsKKyAgICAgICAgOjpXaWRl
Q2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIGJ1bmRsZURpciwgLTEsIGJ1bmRsZURpclVURjgs
IE1BWF9QQVRILCBudWxscHRyLCBudWxscHRyKTsKKworICAgICAgICBtX3Rlc3RQbHVnaW5EaXJl
Y3RvcnkuYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVuZGxlRGlyVVRGOCkp
OworICAgIH0KK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6cnVuTW9kYWwoUGxhdGZvcm1XZWJW
aWV3KikKK3sKKyAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGhpcyB0byB0ZXN0IHNo
b3dNb2RhbERpYWxvZy4KKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitXS0NvbnRleHRSZWYg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29udGV4dCgpCit7CisgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKK30KKworY29uc3QgY2hhciogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtTGlicmFy
eVBhdGhGb3JUZXN0aW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNvbmZpZ3VyZVZpZXdG
b3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNp
c3RlbnRWYWx1ZXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnVwZGF0ZVBsYXRmb3JtU3BlY2lmaWNUZXN0T3B0aW9uc0ZvclRlc3QoVGVzdE9w
dGlvbnMmLCBjb25zdCBzdGQ6OnN0cmluZyYpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvd2luL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0Yzc0Y2U5
NWNhMDk0YjU4ZmNlMDdlNDlhMTNmNjQ2YmEzYzhlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmNwcApAQCAtMCww
ICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisj
aW5jbHVkZSAiV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93aW4vbWFpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9t
YWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41ZmQ5ZjQ5MGZiZjE4OGM0OTcxZjc3OGVhM2ZlMzBiNjhlY2Ez
NThiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vbWFpbi5j
cHAKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCisKK2V4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxl
eHBvcnQpIGludCBXSU5BUEkgZGxsTGF1bmNoZXJFbnRyeVBvaW50KGludCBhcmdjLCBjb25zdCBj
aGFyKiBhcmd2W10pCit7CisgICAgV1RSOjpUZXN0Q29udHJvbGxlciBjb250cm9sbGVyKGFyZ2Ms
IGFyZ3YpOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IGMyZDJiMDcwYTUyZTRmZDNhMzE3MTA4Y2YyOGNiNWVmMWNhZWEyZTQuLjBjMzNm
MDFiOTJlZjJhNTAxNzRkZDc3YmQ0YTRkMDU2Y2E0NGQ4NDQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOC0xMS0xMSAgVGFrYXNoaSBL
b21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KKworICAgICAgICBSZXN1cnJlY3QgV2Vi
S2l0VGVzdFJ1bm5lciBmb3IgV2luZG93cyBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlOgor
CiAyMDE4LTExLTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbTGludXhdIFVzZSBtZW1mZF9jcmVhdGUgd2hlbiBhdmFpbGFibGUgaW4gU2hh
cmVkTWVtb3J5IGltcGxlbWVudGF0aW9uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>