<?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>159594</bug_id>
          
          <creation_ts>2016-07-08 19:05:52 -0700</creation_ts>
          <short_desc>Move breaking iterator code to WTF</short_desc>
          <delta_ts>2016-07-10 10:15:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159598</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209387</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-08 19:05:52 -0700</bug_when>
    <thetext>Move breaking iterator code to WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209388</commentid>
    <comment_count>1</comment_count>
      <attachid>283238</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-08 19:08:51 -0700</bug_when>
    <thetext>Created attachment 283238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209392</commentid>
    <comment_count>2</comment_count>
      <attachid>283239</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-08 19:17:34 -0700</bug_when>
    <thetext>Created attachment 283239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209394</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-08 19:19:27 -0700</bug_when>
    <thetext>Attachment 283239 did not pass style-queue:

ERROR: Source/WTF/icu/unicode/utext.h:17:  #ifndef header guard has wrong style, please use: utext_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/utext.h:138:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:143:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:182:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ci&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:406:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:422:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:450:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:464:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:486:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:507:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:529:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:549:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:564:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:590:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:609:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:634:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:673:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:672:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:675:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:705:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:721:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:737:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Missing spaces around &gt;=  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:771:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:772:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:804:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:816:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:848:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:849:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:847:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:889:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:887:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:891:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:916:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:930:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:937:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:944:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:950:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:958:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1011:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1039:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1071:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1069:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1072:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1104:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1141:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1138:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1158:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1176:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1197:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1224:  Extra space between int32_t and tableSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1231:  Extra space between int32_t and reserved1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1305:  Extra space between UTextClose and *close  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1311:  Extra space between UTextClose and *spare1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1317:  Extra space between UTextClose and *spare2  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1323:  Extra space between UTextClose and *spare3  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1356:  Extra space between uint32_t and magic  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1364:  Extra space between int32_t and flags  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1372:  Extra space between int32_t and providerProperties  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1380:  Extra space between int32_t and sizeOfStruct  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1390:  Extra space between int64_t and chunkNativeLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1396:  Extra space between int32_t and extraSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1405:  Extra space between int32_t and nativeIndexingLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1413:  Extra space between int64_t and chunkNativeStart  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1420:  Extra space between int32_t and chunkOffset  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1426:  Extra space between int32_t and chunkLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1450:  Extra space between void and *pExtra  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1486:  Extra space between void and *privP  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1497:  Extra space between int64_t and a  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1504:  Extra space between int32_t and b  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1511:  Extra space between int32_t and c  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1521:  Extra space between int64_t and privA  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1527:  Extra space between int32_t and privB  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1533:  Extra space between int32_t and privC  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1554:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1563:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1576:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1578:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1580:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1582:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1584:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Use nullptr instead of NULL.  [reada
bility/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1593:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 128 in 48 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>1209395</commentid>
    <comment_count>4</comment_count>
      <attachid>283241</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-08 19:22:05 -0700</bug_when>
    <thetext>Created attachment 283241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209399</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-08 19:25:17 -0700</bug_when>
    <thetext>Attachment 283241 did not pass style-queue:

ERROR: Source/WTF/icu/unicode/ubrk.h:8:  #ifndef header guard has wrong style, please use: ubrk_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:11:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:13:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:91:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:93:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:95:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:108:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:215:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:216:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:217:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:214:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:218:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Extra space between int32_t and rulesLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Extra space between UParseError and *parseErr  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  The parameter name &quot;parseErr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:285:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:315:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Extra space between UText* and text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:339:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:354:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:366:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:378:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:389:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:401:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:413:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:426:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:462:  Extra space between U_STABLE and UBool  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:463:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:474:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:475:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:494:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:495:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Extra space between UText and *text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:535:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:17:  #ifndef header guard has wrong style, please use: utext_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/utext.h:138:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:143:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:182:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ci&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:406:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:422:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:450:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:464:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:486:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:507:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:529:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:549:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:564:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:590:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:609:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:634:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:673:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:672:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:675:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:705:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:721:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:737:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Missing spaces around &gt;=  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:771:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:772:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:804:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:816:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:848:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:849:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:847:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:889:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:887:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:891:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:916:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:930:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enum
s.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:937:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:944:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:950:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:958:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1011:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1039:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1071:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1069:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1072:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1104:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1141:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1138:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1158:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1176:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1197:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1224:  Extra space between int32_t and tableSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1231:  Extra space between int32_t and reserved1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1305:  Extra space between UTextClose and *close  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1311:  Extra space between UTextClose and *spare1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1317:  Extra space between UTextClose and *spare2  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1323:  Extra space between UTextClose and *spare3  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1356:  Extra space between uint32_t and magic  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1364:  Extra space between int32_t and flags  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1372:  Extra space between int32_t and providerProperties  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1380:  Extra space between int32_t and sizeOfStruct  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1390:  Extra space between int64_t and chunkNativeLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1396:  Extra space between int32_t and extraSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1405:  Extra space between int32_t and nativeIndexingLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1413:  Extra space between int64_t and chunkNativeStart  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1420:  Extra space between int32_t and chunkOffset  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1426:  Extra space between int32_t and chunkLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1450:  Extra space between void and *pExtra  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1486:  Extra space between void and *privP  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1497:  Extra space between int64_t and a  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1504:  Extra space between int32_t and b  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1511:  Extra space between int32_t and c  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1521:  Extra space between int64_t and privA  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1527:  Extra space between int32_t and privB  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1533:  Extra space between int32_t and privC  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1554:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1563:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1576:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1578:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1580:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1582:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1584:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1593:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 193 in 49 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>1209416</commentid>
    <comment_count>6</comment_count>
      <attachid>283249</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 00:28:24 -0700</bug_when>
    <thetext>Created attachment 283249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209417</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-09 00:31:27 -0700</bug_when>
    <thetext>Attachment 283249 did not pass style-queue:

ERROR: Source/WTF/icu/unicode/ubrk.h:8:  #ifndef header guard has wrong style, please use: ubrk_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:11:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:13:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:91:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:93:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:95:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:108:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:215:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:216:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:217:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:214:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:218:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Extra space between int32_t and rulesLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Extra space between UParseError and *parseErr  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  The parameter name &quot;parseErr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:285:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:315:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Extra space between UText* and text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:339:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:354:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:366:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:378:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:389:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:401:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:413:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:426:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:462:  Extra space between U_STABLE and UBool  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:463:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:474:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:475:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:494:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:495:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Extra space between UText and *text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:535:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:17:  #ifndef header guard has wrong style, please use: utext_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/utext.h:138:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:143:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:182:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ci&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:406:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:422:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:450:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:464:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:486:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:507:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:529:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:549:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:564:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:590:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:609:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:634:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:673:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:672:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:675:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:705:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:721:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:737:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Missing spaces around &gt;=  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:771:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:772:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:804:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:816:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:848:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:849:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:847:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:889:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:887:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:891:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:916:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:930:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enum
s.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:937:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:944:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:950:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:958:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1011:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1039:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1071:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1069:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1072:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1104:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1141:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1138:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1158:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1176:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1197:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1224:  Extra space between int32_t and tableSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1231:  Extra space between int32_t and reserved1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1305:  Extra space between UTextClose and *close  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1311:  Extra space between UTextClose and *spare1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1317:  Extra space between UTextClose and *spare2  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1323:  Extra space between UTextClose and *spare3  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1356:  Extra space between uint32_t and magic  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1364:  Extra space between int32_t and flags  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1372:  Extra space between int32_t and providerProperties  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1380:  Extra space between int32_t and sizeOfStruct  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1390:  Extra space between int64_t and chunkNativeLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1396:  Extra space between int32_t and extraSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1405:  Extra space between int32_t and nativeIndexingLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1413:  Extra space between int64_t and chunkNativeStart  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1420:  Extra space between int32_t and chunkOffset  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1426:  Extra space between int32_t and chunkLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1450:  Extra space between void and *pExtra  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1486:  Extra space between void and *privP  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1497:  Extra space between int64_t and a  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1504:  Extra space between int32_t and b  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1511:  Extra space between int32_t and c  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1521:  Extra space between int64_t and privA  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1527:  Extra space between int32_t and privB  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1533:  Extra space between int32_t and privC  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1554:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1563:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1576:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1578:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1580:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1582:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1584:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1593:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 193 in 49 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>1209420</commentid>
    <comment_count>8</comment_count>
      <attachid>283250</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 00:50:38 -0700</bug_when>
    <thetext>Created attachment 283250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209421</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-09 00:52:54 -0700</bug_when>
    <thetext>Attachment 283250 did not pass style-queue:

ERROR: Source/WTF/icu/unicode/ubrk.h:8:  #ifndef header guard has wrong style, please use: ubrk_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:11:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:13:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:91:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:93:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:95:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:108:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:215:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:216:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:217:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:214:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:218:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Extra space between int32_t and rulesLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Extra space between UParseError and *parseErr  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  The parameter name &quot;parseErr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:285:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:315:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Extra space between UText* and text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:339:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:354:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:366:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:378:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:389:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:401:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:413:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:426:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:462:  Extra space between U_STABLE and UBool  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:463:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:474:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:475:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:494:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:495:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Extra space between UText and *text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:535:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:17:  #ifndef header guard has wrong style, please use: utext_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/utext.h:138:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:143:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:182:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ci&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:406:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:422:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:450:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:464:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:486:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:507:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:529:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:549:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:564:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:590:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:609:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:634:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:673:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:672:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:675:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:705:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:721:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:737:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Missing spaces around &gt;=  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:771:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:772:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:804:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:816:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:848:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:849:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:847:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:889:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:887:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:891:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:916:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:930:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enum
s.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:937:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:944:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:950:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:958:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1011:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1039:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1071:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1069:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1072:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1104:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1141:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1138:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1158:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1176:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1197:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1224:  Extra space between int32_t and tableSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1231:  Extra space between int32_t and reserved1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1305:  Extra space between UTextClose and *close  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1311:  Extra space between UTextClose and *spare1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1317:  Extra space between UTextClose and *spare2  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1323:  Extra space between UTextClose and *spare3  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1356:  Extra space between uint32_t and magic  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1364:  Extra space between int32_t and flags  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1372:  Extra space between int32_t and providerProperties  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1380:  Extra space between int32_t and sizeOfStruct  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1390:  Extra space between int64_t and chunkNativeLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1396:  Extra space between int32_t and extraSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1405:  Extra space between int32_t and nativeIndexingLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1413:  Extra space between int64_t and chunkNativeStart  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1420:  Extra space between int32_t and chunkOffset  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1426:  Extra space between int32_t and chunkLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1450:  Extra space between void and *pExtra  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1486:  Extra space between void and *privP  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1497:  Extra space between int64_t and a  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1504:  Extra space between int32_t and b  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1511:  Extra space between int32_t and c  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1521:  Extra space between int64_t and privA  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1527:  Extra space between int32_t and privB  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1533:  Extra space between int32_t and privC  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1554:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1563:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1576:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1578:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1580:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1582:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1584:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1593:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 193 in 50 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>1209422</commentid>
    <comment_count>10</comment_count>
      <attachid>283251</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 01:20:56 -0700</bug_when>
    <thetext>Created attachment 283251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209423</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-09 01:22:27 -0700</bug_when>
    <thetext>Attachment 283251 did not pass style-queue:

ERROR: Source/WTF/icu/unicode/ubrk.h:8:  #ifndef header guard has wrong style, please use: ubrk_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:11:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:13:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:91:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:93:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:95:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:108:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:215:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:216:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:217:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:214:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:218:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Extra space between int32_t and rulesLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Extra space between UParseError and *parseErr  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  The parameter name &quot;parseErr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:285:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:315:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Extra space between UText* and text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:339:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:354:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:366:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:378:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:389:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:401:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:413:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:426:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:462:  Extra space between U_STABLE and UBool  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:463:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:474:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:475:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:494:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:495:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Extra space between UText and *text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:535:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:17:  #ifndef header guard has wrong style, please use: utext_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/utext.h:138:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:143:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:182:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ci&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:406:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:422:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:450:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:464:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:486:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:507:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:529:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:549:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:564:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:590:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:609:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:634:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:673:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:672:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:675:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:705:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:721:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:737:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Missing spaces around &gt;=  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:771:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:772:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:804:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:816:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:848:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:849:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:847:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:889:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:887:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:891:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:916:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:930:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enum
s.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:937:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:944:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:950:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:958:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1011:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1039:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1071:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1069:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1072:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1104:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1141:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1138:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1158:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1176:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1197:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1224:  Extra space between int32_t and tableSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1231:  Extra space between int32_t and reserved1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1305:  Extra space between UTextClose and *close  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1311:  Extra space between UTextClose and *spare1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1317:  Extra space between UTextClose and *spare2  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1323:  Extra space between UTextClose and *spare3  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1356:  Extra space between uint32_t and magic  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1364:  Extra space between int32_t and flags  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1372:  Extra space between int32_t and providerProperties  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1380:  Extra space between int32_t and sizeOfStruct  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1390:  Extra space between int64_t and chunkNativeLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1396:  Extra space between int32_t and extraSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1405:  Extra space between int32_t and nativeIndexingLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1413:  Extra space between int64_t and chunkNativeStart  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1420:  Extra space between int32_t and chunkOffset  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1426:  Extra space between int32_t and chunkLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1450:  Extra space between void and *pExtra  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1486:  Extra space between void and *privP  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1497:  Extra space between int64_t and a  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1504:  Extra space between int32_t and b  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1511:  Extra space between int32_t and c  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1521:  Extra space between int64_t and privA  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1527:  Extra space between int32_t and privB  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1533:  Extra space between int32_t and privC  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1554:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1563:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1576:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1578:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1580:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1582:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1584:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1593:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 193 in 50 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>1209424</commentid>
    <comment_count>12</comment_count>
      <attachid>283252</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 01:55:56 -0700</bug_when>
    <thetext>Created attachment 283252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209425</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-09 02:00:02 -0700</bug_when>
    <thetext>Attachment 283252 did not pass style-queue:

ERROR: Source/WTF/icu/unicode/ubrk.h:8:  #ifndef header guard has wrong style, please use: ubrk_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:11:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:13:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/ubrk.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:91:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:93:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:95:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:108:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:215:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:216:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:217:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:214:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:218:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Extra space between int32_t and rulesLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:237:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:238:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Extra space between UParseError and *parseErr  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:240:  The parameter name &quot;parseErr&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:263:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:285:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:316:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Extra space between int32_t and textLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:317:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:315:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:318:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Extra space between UText* and text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:339:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:340:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Extra space between UErrorCode* and status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:341:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:354:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:366:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:378:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:389:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:401:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:413:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:426:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:427:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:462:  Extra space between U_STABLE and UBool  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:463:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:474:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:475:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:494:  Extra space between U_STABLE and int32_t  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:495:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:507:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Extra space between UText and *text  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:535:  The parameter name &quot;bi&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:536:  The parameter name &quot;text&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Extra space between UErrorCode and *status  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/ubrk.h:537:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:17:  #ifndef header guard has wrong style, please use: utext_h  [build/header_guard] [5]
ERROR: Source/WTF/icu/unicode/utext.h:138:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:143:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/icu/unicode/utext.h:182:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:225:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:243:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:260:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:276:  The parameter name &quot;s&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:292:  The parameter name &quot;rep&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:307:  The parameter name &quot;ci&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:406:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:422:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:450:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:464:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:486:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:507:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:529:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:549:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:564:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:590:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:609:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:634:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:673:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:674:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:672:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:675:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:705:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:721:  Missing spaces around &lt;  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:736:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:737:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Missing spaces around &gt;=  [whitespace/operators] [3]
ERROR: Source/WTF/icu/unicode/utext.h:769:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:770:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:771:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:772:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:804:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:816:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:848:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:849:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:847:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:850:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:888:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:889:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:890:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:887:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:891:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:916:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:930:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enum
s.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:937:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:944:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:950:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:958:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:958:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1011:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1039:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1071:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1069:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1072:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1104:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1141:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1138:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1158:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1176:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1197:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1224:  Extra space between int32_t and tableSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1231:  Extra space between int32_t and reserved1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1305:  Extra space between UTextClose and *close  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1311:  Extra space between UTextClose and *spare1  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1317:  Extra space between UTextClose and *spare2  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1323:  Extra space between UTextClose and *spare3  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1356:  Extra space between uint32_t and magic  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1364:  Extra space between int32_t and flags  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1372:  Extra space between int32_t and providerProperties  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1380:  Extra space between int32_t and sizeOfStruct  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1390:  Extra space between int64_t and chunkNativeLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1396:  Extra space between int32_t and extraSize  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1405:  Extra space between int32_t and nativeIndexingLimit  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1413:  Extra space between int64_t and chunkNativeStart  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1420:  Extra space between int32_t and chunkOffset  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1426:  Extra space between int32_t and chunkLength  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1450:  Extra space between void and *pExtra  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1486:  Extra space between void and *privP  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1497:  Extra space between int64_t and a  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1504:  Extra space between int32_t and b  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1511:  Extra space between int32_t and c  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1521:  Extra space between int64_t and privA  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1527:  Extra space between int32_t and privB  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1533:  Extra space between int32_t and privC  [whitespace/declaration] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1554:  The parameter name &quot;ut&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1563:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WTF/icu/unicode/utext.h:1575:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1576:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1577:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1578:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1579:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1580:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1581:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1582:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1583:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1584:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1585:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1586:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1587:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1588:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1589:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Use nullptr instead of NULL.  [readability/null] [5]
ERROR: Source/WTF/icu/unicode/utext.h:1590:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1591:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/icu/unicode/utext.h:1593:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 193 in 53 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>1209513</commentid>
    <comment_count>14</comment_count>
      <attachid>283252</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-09 23:40:11 -0700</bug_when>
    <thetext>Comment on attachment 283252
Patch

Move things.  r=me.
I don&apos;t see the error in the windows ews.  Watch the bots after you land and fix any breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209537</commentid>
    <comment_count>15</comment_count>
      <attachid>283252</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-10 10:15:49 -0700</bug_when>
    <thetext>Comment on attachment 283252
Patch

Clearing flags on attachment: 283252

Committed r203038: &lt;http://trac.webkit.org/changeset/203038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209538</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-10 10:15:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283238</attachid>
            <date>2016-07-08 19:08:51 -0700</date>
            <delta_ts>2016-07-08 19:17:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159594-20160708190815.patch</filename>
            <type>text/plain</type>
            <size>276972</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLjM0M2FmYWRlZDQwYTE4MDQ4MjRhM2ZiYTM2MTNhZWIzZWVmZWE5
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMwIEBACisyMDE2LTA3LTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2luZyBpdGVyYXRvciBj
b2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1ZpZXcgYSBHcmFwaGVt
ZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRvciBuZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9yCisgICAgICAgIGNv
ZGUuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BsYXRmb3JtRWZsLmNtYWtlOgor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0
Zi9UaW55TFJVQ2FjaGUuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmguCisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9v
bDo6TGluZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0
b3JQb29sOjpzaGFyZWRQb29sKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0b3JQb29s
OjptYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZCk6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0
ZXJhdG9yUG9vbDo6dGFrZSk6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6
cHV0KToKKyAgICAgICAgKiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcC4K
KyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0ZXJhdG9y
KToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5jZUJyZWFr
SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6cmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6bWFwTGluZUl0ZXJhdG9yTW9kZVRv
UnVsZXMpOgorICAgICAgICAoV1RGOjppc0NKS0xvY2FsZSk6CisgICAgICAgIChXVEY6Om9wZW5M
aW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjpjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtGaXJzdCk6CisgICAgICAgIChXVEY6OnRleHRCcmVh
a0xhc3QpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtOZXh0KToKKyAgICAgICAgKFdURjo6dGV4
dEJyZWFrUHJldmlvdXMpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtQcmVjZWRpbmcpOgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtGb2xsb3dpbmcpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtD
dXJyZW50KToKKyAgICAgICAgKFdURjo6aXNUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjppc1dv
cmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAg
ICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgICogd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaC4KKyAgICAgICAgKFdURjo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjpMYXp5TGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6On5MYXp5TGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnN0cmluZyk6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6aXNMb29zZUNKS01vZGUpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJy
ZWFrSXRlcmF0b3I6Omxhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFr
SXRlcmF0b3I6OnNlY29uZFRvTGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6c2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjp1cGRhdGVQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I6OnJlc2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxp
bmVCcmVha0l0ZXJhdG9yOjpwcmlvckNvbnRleHRMZW5ndGgpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OmdldCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6cmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciop
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVS5oLgorICAgICAgICAqIHd0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVRWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRCk6CisgICAgICAgICogd3RmL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VHdGsuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmNwcC4KKyAgICAgICAgKFdURjo6Zml4UG9pbnRlcik6CisgICAgICAgIChX
VEY6OnVUZXh0Q2xvbmVJbXBsKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQ
cm92aWRlci5oLgorICAgICAgICAoV1RGOjp1VGV4dFByb3ZpZGVyQ29udGV4dCk6CisgICAgICAg
IChXVEY6OmluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKToKKyAgICAgICAgKFdU
Rjo6dVRleHRBY2Nlc3NQaW5JbmRleCk6CisgICAgICAgIChXVEY6OnVUZXh0QWNjZXNzSW5DaHVu
a09yT3V0T2ZSYW5nZSk6CisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRp
bjEuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlckxhdGluMS5jcHAuCisgICAgICAgIChXVEY6OnVUZXh0TGF0aW4xQ2xvbmUpOgor
ICAgICAgICAoV1RGOjp1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCk6CisgICAgICAgIChXVEY6OnVU
ZXh0TGF0aW4xQWNjZXNzKToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFFeHRyYWN0KToKKyAg
ICAgICAgKFdURjo6dVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZSk6CisgICAgICAgIChXVEY6
OnVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KToKKyAgICAgICAgKFdURjo6dVRleHRM
YXRpbjFDbG9zZSk6CisgICAgICAgIChXVEY6Om9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKToKKyAg
ICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KToKKyAg
ICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KToK
KyAgICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRl
eHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250
ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JD
b250ZXh0KToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSk6Cisg
ICAgICAgIChXVEY6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKToKKyAgICAg
ICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MpOgorICAgICAgICAoV1RGOjp1
VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGlu
MUNvbnRleHRBd2FyZUNsb3NlKToKKyAgICAgICAgKFdURjo6b3BlbkxhdGluMUNvbnRleHRBd2Fy
ZVVUZXh0UHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0
aW4xLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyTGF0aW4xLmguCisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJV
VEYxNi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuY3BwLgorICAgICAgICAoV1RGOjp0ZXh0VVRGMTZDb250ZXh0QXdh
cmVHZXRDdXJyZW50Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW1hcnlDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2Q29udGV4dEF3
YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNv
bnRleHRBd2FyZUNsb25lKToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZU5h
dGl2ZUxlbmd0aCk6CisgICAgICAgIChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3Mp
OgorICAgICAgICAoV1RGOjp1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCk6CisgICAgICAg
IChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9zZSk6CisgICAgICAgIChXVEY6Om9wZW5V
VEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oLgorICAgICAgICAqIHd0Zi90ZXh0L21hYy9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5t
bS4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSk6CisgICAgICAgIChX
VEY6OnRvcExhbmd1YWdlUHJlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OmdldExvY2FsZSk6Cisg
ICAgICAgIChXVEY6OmdldFNlYXJjaExvY2FsZSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRTZWFy
Y2hMb2NhbGVJRCk6CisgICAgICAgIChXVEY6OmdldFRleHRCcmVha0xvY2FsZSk6CisgICAgICAg
IChXVEY6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6CisgICAgICAgICogd3RmL3RleHQvd2lu
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdp
bi5jcHAuCisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKwogMjAxNi0wNy0wOCAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIwMjc5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlM2EyMjBlOTkzNWZkMzc1ZjEx
MGFhZTg5YmE0ZWNiNTkxMGVjZjcwLi40MmZkZmEwMWEyMzAwNmNkMDQ5MTM1OWUyMTdlYTk0NjM4
MzA1M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU0IEBACisyMDE2LTA3LTA4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2lu
ZyBpdGVyYXRvciBjb2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1Zp
ZXcgYSBHcmFwaGVtZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRv
ciBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9y
CisgICAgICAgIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMg
bm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHA6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAqIGVk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKiBodG1sL1RleHRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHA6CisgICAgICAgIChXVEY6OlJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZhbHVlRm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZh
bHVlRm9yS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQ
b29sOjpMaW5lQnJlYWtJdGVyYXRvclBvb2wpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6bWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjp0YWtl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6cHV0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojppbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6c2V0VGV4dEZvckl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldENv
bnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3
b3JkQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZW50ZW5jZUJy
ZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3Vyc29yTW92ZW1lbnRJ
dGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphY3F1aXJlTGluZUJyZWFrSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZUxpbmVCcmVha0l0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1hcExpbmVJdGVyYXRvck1vZGVUb1J1
bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ0pLTG9jYWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5MaW5lQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6On5Ob25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVh
a0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVha0xhc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFrTmV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0QnJlYWtQcmVjZWRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJy
ZWFrRm9sbG93aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVha0N1cnJl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNUZXh0QnJlYWspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4dEJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxp
bmVCcmVha0l0ZXJhdG9yOjpMYXp5TGluZUJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjp+TGF6eUxpbmVCcmVha0l0ZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6
aXNMb29zZUNKS01vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpsYXN0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
enlMaW5lQnJlYWtJdGVyYXRvcjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c2V0UHJpb3JDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6dXBkYXRl
UHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpwcmlvckNvbnRleHRMZW5ndGgpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpnZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpyZXNldFN0cmluZ0FuZFJlbGVh
c2VJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Zml4UG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dENsb25lSW1w
bCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6dVRleHRQcm92aWRlckNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRBY2Nlc3NQaW5JbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dExhdGluMUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4
dExhdGluMUV4dHJhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFN
YXBPZmZzZXRUb05hdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGlu
MU1hcE5hdGl2ZUluZGV4VG9VVEYxNik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4
dExhdGluMUNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5MYXRpbjFVVGV4
dFByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRpbjFDb250ZXh0
QXdhcmVHZXRDdXJyZW50Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJ
blByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29u
dGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
cik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVU
RjE2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJl
bnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRB
d2FyZU1vdmVJblByaW1hcnlDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRl
eHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0VVRGMTZDb250
ZXh0QXdhcmVDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dFVURjE2Q29u
dGV4dEF3YXJlTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0
VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRl
eHRVVEYxNkNvbnRleHRBd2FyZUV4dHJhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
dVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvcExhbmd1YWdlUHJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpnZXRMb2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2VhcmNoTG9jYWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRUZXh0QnJlYWtMb2NhbGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9icmVha19saW5lcy5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L2JyZWFrX2xpbmVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaDoK
KwogMjAxNi0wNy0wOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAg
ICAgUHJldmVudCBmdWxsc2NyZWVuIHZpZGVvIGRpbWVuc2lvbiBzdGF0ZSBmcm9tIGJlaW5nIHJl
c2V0IGFmdGVyIGNvbmZpZ3VyaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDM0ZjY2ZTMzZTljY2Q4Yzk1MzdmNzU3MGVmMmE4MmIwN2VjM2QzMS4uNGJl
NGZjMWRhNDRjYzlhMThmMjEyZTgyMGRiMzU4MGJjNmIyOWVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSwxNSBAQAogCQkxQUNBREQ4NDE4
ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNBREQ4MjE4ODQ0ODAx
MDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi87IH07CiAJCTFB
RkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi87IH07CiAJCTFBRkRFNjUzMTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRp
b25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
REU2NTIxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmggKi87IH07CisJCTFDMTgxQzdGMUQz
MDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM3RDFEMzA3OERBMDBGNUZBMTYgLyog
VGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OworCQkxQzE4MUM4MDFEMzA3OERBMDBGNUZBMTYg
LyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMTgxQzdFMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5oICovOyB9OworCQkxQzE4MUM4RjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi87IH07CisJCTFDMTgxQzkw
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QTFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlci5oICovOyB9OworCQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQ
cm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5j
cHAgKi87IH07CisJCTFDMTgxQzkyMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4
MUM4QzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovOyB9OworCQkx
QzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTgxQzhEMUQzMDdBQjgw
MEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovOyB9OworCQkxQzE4MUM5NDFEMzA3
QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlclVURjE2LmggKi87IH07CisJCTFDMTgxQzk2MUQzMDgwMEEwMEY1RkExNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxODFDOTUxRDMwODAwQTAwRjVGQTE2IC8qIFRleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gKi87IH07CiAJCTFGQTQ3QzhBMTUyNTAyREEw
MDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg4MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmNwcCAqLzsgfTsKIAkJMUZBNDdDOEIxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJl
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3
Qzg5MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggKi87IH07CiAJCTI2MTQ3QjBB
MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBE
REI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovOyB9OwpAQCAtNDE0LDYgKzQy
MywxNyBAQAogCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNV
c2VkQnlTYWZhcmkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
ZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBRkRFNjUyMTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzE4MUM3RDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRl
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM3RTFEMzA3OERB
MDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODIxRDMwNzlBQzAwRjVGQTE2IC8qIFRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4OTFEMzA3QUI4
MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMxODFDOEExRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxh
dGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDOEMxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGluMS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzE4MUM4RDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJV
VEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMTgxQzhFMUQzMDdBQjgw
MEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgcGF0aCA9IG1hYy9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRkE0N0M4
ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVRocmVhZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02ODgsNiArNzA4LDE5IEBACiAJCQluYW1lID0gTGlicmFyaWVzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMxODFDODgxRDMwN0FCODAwRjVGQTE2IC8qIGljdSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMxODFDODkxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovLAorCQkJCTFDMTgxQzhBMUQzMDdB
QjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggKi8sCisJCQkJMUMxODFDOEIxRDMwN0FCODAw
RjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovLAorCQkJCTFDMTgxQzhDMUQzMDdB
QjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8sCisJCQkJMUMxODFDOEQxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8sCisJCQkJMUMxODFDOEUx
RDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxRkE0N0M4NzE1
MjUwMkRBMDA1NjhEMUIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTc1MSw2ICs3ODQsNyBAQAogCQlBNUJBMTVGMTE4MjQzMzlGMDBBODJFNjkg
LyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkx
QzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1h
Yy5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5t
bSAqLywKIAkJCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tICovLAog
CQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLywKQEAg
LTEwNDMsNiArMTA3Nyw3IEBACiAJCUE4QTQ3MzFCMTUxQTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzE4MUM4ODFE
MzA3QUI4MDBGNUZBMTYgLyogaWN1ICovLAogCQkJCUE1QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAv
KiBjZiAqLywKIAkJCQlBNUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogbWFjICovLAogCQkJCUE4
QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggKi8sCkBAIC0xMDc5LDYg
KzExMTQsMTAgQEAKIAkJCQk3MEVDQTYwQzFCMDI0MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmlu
Z0ltcGwuaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmNw
cCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggKi8sCisJ
CQkJMUMxODFDN0QxRDMwNzhEQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLywK
KwkJCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLywK
KwkJCQkxQzE4MUM4MTFEMzA3OTdDMDBGNUZBMTYgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggKi8sCisJCQkJMUMxODFDODIxRDMwNzlBQzAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xMjQ3LDYgKzEyODYsNyBAQAogCQkJCTJDMDUzODU0MTVCQzgxOTAw
MEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDcz
RDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQzE4MUM5MDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRDQxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hGdW5jdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0Q1MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoSXRlcmF0b3Jz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNENjE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaE1h
cC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjYzLDYgKzEzMDMsNyBAQAogCQkJCTdDREQ3RkZBMTg2
RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0FD
OTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MERB
MDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMx
ODFDOTQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUxNjQ2QjFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjcyLDYgKzEzMTMsNyBAQAogCQkJCUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNG
RiAvKiBNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0
MTIzRkYgLyogTUQ1LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJD
MzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4MUM4MDFEMzA3OERBMDBG
NUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VC
MTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzMyLDYgKzEzNzQsNyBAQAogCQkJCUE3NDg3NDUzMTdBMEJEQUUw
MEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQy
NjE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3
NDI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUMxODFDOTIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVCMDA0MTIzRkYgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyog
U3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MDIsNiArMTU0NSw3IEBACiAJCQkJ
QThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM5MTUxQTgy
NUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzk2MUQz
MDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAwNDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRhTG9n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0EwMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRl
TWF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MTUsNiArMTU1OSw3IEBACiAJCQkJQThBNDcz
QzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNG
RiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRDhCOUUxNzMxODc5ODAw
MTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0NE
ODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNTI5LDYgKzE1NzQsNyBAQAogCQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAv
KiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgy
NUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVy
UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQz
ODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTU4LDYgKzE2MDQsOCBA
QAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRv
ZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0
QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzE4MUM5MTFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEE5
OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NDgxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEExNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMjE1
NTk2Njc0ODQ2ODIxNGMwMzY1OGQwM2E1ZDc3NDZmZmU4MDhhNC4uNjZjZDdmNzAzODIwMDk3MWUx
NzY3MDJjYTI4ZGU5NDEwNmNlODNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTE0MCw2ICsx
NDAsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICB0ZXh0L0NTdHJpbmcuaAogICAgIHRleHQvSW50
ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCiAgICAgdGV4dC9MQ2hhci5oCisgICAgdGV4dC9MaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaAogICAgIHRleHQvU3RyaW5nQnVmZmVyLmgKICAgICB0ZXh0
L1N0cmluZ0NvbW1vbi5oCiAgICAgdGV4dC9TdHJpbmdIYXNoLmgKQEAgLTE0Nyw5ICsxNDgsMTUg
QEAgc2V0KFdURl9IRUFERVJTCiAgICAgdGV4dC9TdHJpbmdWaWV3LmgKICAgICB0ZXh0L1N5bWJv
bEltcGwuaAogICAgIHRleHQvU3ltYm9sUmVnaXN0cnkuaAorICAgIHRleHQvVGV4dEJyZWFrSXRl
cmF0b3IuaAorICAgIHRleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oCiAgICAgdGV4
dC9VbmlxdWVkU3RyaW5nSW1wbC5oCiAgICAgdGV4dC9XVEZTdHJpbmcuaAogCisgICAgdGV4dC9p
Y3UvVVRleHRQcm92aWRlci5oCisgICAgdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oCisg
ICAgdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKKwogICAgIHRocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmgKIAogICAgIHVuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaApAQCAtMjIxLDggKzIyOCwx
MyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICB0ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCiAgICAgdGV4
dC9TdHJpbmdWaWV3LmNwcAogICAgIHRleHQvU3ltYm9sUmVnaXN0cnkuY3BwCisgICAgdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5jcHAKICAgICB0ZXh0L1dURlN0cmluZy5jcHAKIAorICAgIHRleHQv
aWN1L1VUZXh0UHJvdmlkZXIuY3BwCisgICAgdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHAKKyAgICB0ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCisKICAgICB0aHJlYWRzL0Jp
bmFyeVNlbWFwaG9yZS5jcHAKIAogICAgIHVuaWNvZGUvVVRGOC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggNzFhNTJhZTVlMWUyN2E0Yzg4OTU2NTdjZDRlMDVmMzhiYzZhMGE5ZS4u
YmExNTQ3NDg3MDE5YjIxYzM3Y2Y5NmY5ZTA5MzcyYjhkZDFkYzg5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTEsNiArMSw4IEBACiBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1VuaXguY3BwCiAKKyAgICB0ZXh0L2VmbC9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcAorCiAgICAgZWZsL0Rpc3BhdGNoUXVl
dWVFZmwuY3BwCiAgICAgZWZsL01haW5UaHJlYWRFZmwuY3BwCiAgICAgZWZsL1J1bkxvb3BFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDIwYjliOTkzYTdhYTdmOGM1NjVjYjI4
MzI0NmNjYmZkNWIwNzU0MDIuLmY2MTlkZDU3Yzc3ODhkZTJjOTUzNzJkMmJhZWE5OTgwZjc2YjU3
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC04LDYgKzgsOCBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIGdsaWIvTWFpblRocmVhZEdMaWIuY3BwCiAgICAgZ2xpYi9SdW5M
b29wR0xpYi5jcHAKICAgICBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAor
CisgICAgdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKICkKIAog
bGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBj
ZTNkZGJjYjA4MWJmNzM3OWU1MzU3ZDE3YmI5YmJiZGFkMGE5M2U5Li40OTNiNzk4ZDYzNjY1MmYy
MzJlYTNmOTZkN2NmODlmODkzMjNiNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAt
MTgsNiArMTgsOCBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIFNjaGVkdWxlUGFpckNG
LmNwcAogICAgIFNjaGVkdWxlUGFpck1hYy5tbQogCisgICAgdGV4dC9tYWMvVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVU1hYy5tbQorCiAgICAgY2YvUnVuTG9vcENGLmNwcAogCiAgICAgY29j
b2EvV29ya1F1ZXVlQ29jb2EuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDNiM2Y5
OGJiY2NmZDkwMjk2OTRmZGUyNTI2MTEyN2E2MTJiZGMzMjMuLmEwYmQxMzJjM2U0YzE3MjNiODkx
NWQxMGJiOTQzNDRlZmRlMDI4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
V2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xLDUg
KzEsNyBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICBQTGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNXaW4uY3BwCisgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzV2lu
LmNwcAorCisgICAgdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAK
IAogICAgIHRleHQvY2YvQXRvbWljU3RyaW5nSW1wbENGLmNwcAogICAgIHRleHQvY2YvU3RyaW5n
Q0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaCBiL1NvdXJj
ZS9XVEYvd3RmL1RpbnlMUlVDYWNoZS5oCmluZGV4IDY3OGY4YmZkMTIwYTNhMzYxMWIzY2NlOGUx
Y2U5OGZlYzlhYWMwMmQuLjkxYjMxZjlkZGY5MDBhNjZmOTc4ODhiOWMzZjExZmJiNTY2MTI1NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbnlMUlVDYWNoZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RpbnlMUlVDYWNoZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlw
ZW5hbWUgVmFsdWVUeXBlPgogc3RydWN0IFRpbnlMUlVDYWNoZVBvbGljeSB7CkBAIC03OCw0ICs3
OCw3IEBAIHByaXZhdGU6CiAKIH0KIAordXNpbmcgV1RGOjpUaW55TFJVQ2FjaGU7Cit1c2luZyBX
VEY6OlRpbnlMUlVDYWNoZVBvbGljeTsKKwogI2VuZGlmIC8vIFRpbnlMUlVDYWNoZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNzY2MDdkMmE5M2Q1ZjhiMTA0NDcwZWQ4N2M0NGQ5Y2NmMDg5MzE5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApAQCAt
MCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVX2gKKyNkZWZpbmUgTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVX2gKKworI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorI2luY2x1ZGUgPHVuaWNvZGUv
dWJyay5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
TGluZUJyZWFrSXRlcmF0b3JQb29sIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMaW5lQnJl
YWtJdGVyYXRvclBvb2wpOworcHVibGljOgorICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsg
fQorCisgICAgc3RhdGljIExpbmVCcmVha0l0ZXJhdG9yUG9vbCYgc2hhcmVkUG9vbCgpCisgICAg
eworICAgICAgICBzdGF0aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBv
b2w+KiBwb29sID0gbmV3IFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29s
PjsKKyAgICAgICAgcmV0dXJuICoqcG9vbDsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RyaW5nIG1h
a2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgbG9j
YWxlV2l0aEtleXdvcmQ7CisgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZChsb2NhbGUp
OworICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJAYnJlYWs9Iik7Cisg
ICAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9k
ZVVBWDE0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgorICAg
ICAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgibG9vc2UiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0Tm9y
bWFsOgorICAgICAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgibm9ybWFs
Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNFN0cmljdDoKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVy
YWwoInN0cmljdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGxvY2FsZVdpdGhLZXl3b3JkLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgVGV4dEJyZWFr
SXRlcmF0b3IqIHRha2UoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJh
dG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQorICAgIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIGxv
Y2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZDsKKyAgICAgICAgaWYgKG1vZGUgPT0gTGluZUJy
ZWFrSXRlcmF0b3JNb2RlVUFYMTQpCisgICAgICAgICAgICBsb2NhbGVXaXRoT3B0aW9uYWxCcmVh
a0tleXdvcmQgPSBsb2NhbGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvY2FsZVdpdGhP
cHRpb25hbEJyZWFrS2V5d29yZCA9IG1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGxvY2FsZSwg
bW9kZSk7CisKKyAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gMDsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Bvb2wuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmIChtX3Bvb2xbaV0uZmlyc3QgPT0gbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3Jk
KSB7CisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBtX3Bvb2xbaV0uc2Vjb25kOworICAgICAg
ICAgICAgICAgIG1fcG9vbC5yZW1vdmUoaSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWl0ZXJhdG9yKSB7CisgICAgICAg
ICAgICBpdGVyYXRvciA9IG9wZW5MaW5lQnJlYWtJdGVyYXRvcihsb2NhbGVXaXRoT3B0aW9uYWxC
cmVha0tleXdvcmQsIG1vZGUsIGlzQ0pLKTsKKyAgICAgICAgICAgIGlmICghaXRlcmF0b3IpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoIW1f
dmVuZGVkSXRlcmF0b3JzLmNvbnRhaW5zKGl0ZXJhdG9yKSk7CisgICAgICAgIG1fdmVuZGVkSXRl
cmF0b3JzLnNldChpdGVyYXRvciwgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkKTsKKyAg
ICAgICAgcmV0dXJuIGl0ZXJhdG9yOworICAgIH0KKworICAgIHZvaWQgcHV0KFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvcikKKyAgICB7CisgICAgICAgIEFTU0VSVF9BUkcoaXRlcmF0b3IsIG1f
dmVuZGVkSXRlcmF0b3JzLmNvbnRhaW5zKGl0ZXJhdG9yKSk7CisKKyAgICAgICAgaWYgKG1fcG9v
bC5zaXplKCkgPT0gY2FwYWNpdHkpIHsKKyAgICAgICAgICAgIGNsb3NlTGluZUJyZWFrSXRlcmF0
b3IobV9wb29sWzBdLnNlY29uZCk7CisgICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKDApOworICAg
ICAgICB9CisKKyAgICAgICAgbV9wb29sLmFwcGVuZChFbnRyeShtX3ZlbmRlZEl0ZXJhdG9ycy50
YWtlKGl0ZXJhdG9yKSwgaXRlcmF0b3IpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBjYXBhY2l0eSA9IDQ7CisKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxBdG9t
aWNTdHJpbmcsIFRleHRCcmVha0l0ZXJhdG9yKj4gRW50cnk7CisgICAgdHlwZWRlZiBWZWN0b3I8
RW50cnksIGNhcGFjaXR5PiBQb29sOworICAgIFBvb2wgbV9wb29sOworICAgIEhhc2hNYXA8VGV4
dEJyZWFrSXRlcmF0b3IqLCBBdG9taWNTdHJpbmc+IG1fdmVuZGVkSXRlcmF0b3JzOworCisgICAg
ZnJpZW5kIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPjo6b3BlcmF0
b3IgTGluZUJyZWFrSXRlcmF0b3JQb29sKigpOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc4MjRlNjQxOGY0
MjgyYjNmOWQzNTFlNTUyMGM1ZGZjYzJiYTIxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsOTI5IEBACisvKgor
ICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisKKyNp
bmNsdWRlICJMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKKyNpbmNsdWRlICJVVGV4dFByb3Zp
ZGVyTGF0aW4xLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCisjaW5jbHVkZSA8
bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg+CisKKy8vIEZJWE1FOiBUaGlzIG5lZWRzIGEgYmV0dGVyIG5hbWUKKyNkZWZpbmUg
QURESVRJT05BTF9FTU9KSV9TVVBQT1JUIChQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKSkKKworbmFtZXNw
YWNlIFdURiB7CisKKy8vIEl0ZXJhdG9yIGluaXRpYWxpemF0aW9uCisKK3N0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSkKK3sKKyAgICBV
RXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtf
b3Blbih0eXBlLCBsb2NhbGUsIDAsIDAsICZvcGVuU3RhdHVzKSk7CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVh
ayBpdGVyYXRvcjogJXMgKCVkKSIsIHVfZXJyb3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVz
KTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9CisKKyNpZiAhUExBVEZPUk0oSU9TKQorCitzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyhjb25zdCBj
aGFyKiBicmVha1J1bGVzKQoreworICAgIFVQYXJzZUVycm9yIHBhcnNlU3RhdHVzOworICAgIFVF
cnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJsZW4oYnJlYWtSdWxlcyk7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBT
dHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihicmVha1J1bGVzKSwgbGVu
Z3RoKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRl
cmF0b3IgPSByZWludGVycHJldF9jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4odWJya19vcGVuUnVs
ZXModXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLCBsZW5ndGgsIDAsIDAsICZwYXJzZVN0YXR1cywgJm9w
ZW5TdGF0dXMpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVz
KSwgIklDVSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJv
ck5hbWUob3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOworICAgIHJldHVybiBpdGVyYXRvcjsKK30K
KworI2VuZGlmCisKKworLy8gSXRlcmF0b3IgdGV4dCBzZXR0aW5nCisKK3N0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRv
ciwgU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkgeworICAg
ICAgICBVVGV4dFdpdGhCdWZmZXIgdGV4dExvY2FsOworICAgICAgICB0ZXh0TG9jYWwudGV4dCA9
IFVURVhUX0lOSVRJQUxJWkVSOworICAgICAgICB0ZXh0TG9jYWwudGV4dC5leHRyYVNpemUgPSBz
aXplb2YodGV4dExvY2FsLmJ1ZmZlcik7CisgICAgICAgIHRleHRMb2NhbC50ZXh0LnBFeHRyYSA9
IHRleHRMb2NhbC5idWZmZXI7CisKKyAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOworICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVy
KCZ0ZXh0TG9jYWwsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksICZvcGVu
U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgeworICAgICAgICAg
ICAgTE9HX0VSUk9SKCJ1VGV4dE9wZW5MYXRpbjEgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgb3Bl
blN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAg
ICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdWJy
a19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwg
dGV4dCwgJnNldFRleHRTdGF0dXMpOworICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0
dXMpKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGgg
c3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgfQorCisgICAgICAgIHV0ZXh0X2Nsb3NlKHRleHQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAg
dWJya19zZXRUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3Ip
LCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgJnNldFRleHRTdGF0dXMp
OworICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuICZpdGVyYXRvcjsKK30KKworc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoVGV4dEJy
ZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgVUNoYXIqIHBy
aW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQoreworICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpIHsKKyAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKKyAgICAg
ICAgdGV4dExvY2FsLnRleHQgPSBVVEVYVF9JTklUSUFMSVpFUjsKKyAgICAgICAgdGV4dExvY2Fs
LnRleHQuZXh0cmFTaXplID0gc2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOworICAgICAgICB0ZXh0
TG9jYWwudGV4dC5wRXh0cmEgPSB0ZXh0TG9jYWwuYnVmZmVyOworCisgICAgICAgIFVFcnJvckNv
ZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgVVRleHQqIHRleHQgPSBvcGVu
TGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0
aCwgJm9wZW5TdGF0dXMpOworICAgICAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIm9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVy
IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMg
PSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAg
ICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9S
KCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICB1dGV4dF9j
bG9zZSh0ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBVVGV4dCB0ZXh0TG9jYWwgPSBVVEVY
VF9JTklUSUFMSVpFUjsKKworICAgICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9f
RVJST1I7CisgICAgICAgIFVUZXh0KiB0ZXh0ID0gb3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQ
cm92aWRlcigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgo
KSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsICZvcGVuU3RhdHVzKTsKKyAgICAg
ICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJv
cGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIs
IG9wZW5TdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAg
ICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVicmtf
c2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRl
eHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVz
KSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0
YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIH0KKworICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKKyAgICB9CisKKyAgICByZXR1
cm4gJml0ZXJhdG9yOworfQorCisKKy8vIFN0YXRpYyBpdGVyYXRvcnMKKworVGV4dEJyZWFrSXRl
cmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHN0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljV29yZEJyZWFrSXRlcmF0b3IgPSBpbml0aWFsaXpl
SXRlcmF0b3IoVUJSS19XT1JEKTsKKyAgICBpZiAoIXN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3Io
KnN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yLCBzdHJpbmcpOworfQorCitUZXh0QnJlYWtJdGVyYXRv
ciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHN0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yID0gaW5pdGlh
bGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOworICAgIGlmICghc3RhdGljU2VudGVuY2VCcmVh
a0l0ZXJhdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0
Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKK30KKwor
VGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICAvLyBUaGlzIHJ1bGUgc2V0IGlzIGJhc2Vk
IG9uIGNoYXJhY3Rlci1icmVhayBpdGVyYXRvciBydWxlcyBvZiBJQ1UgNC4wCisgICAgLy8gPGh0
dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9pY3UvdGFncy9yZWxlYXNlLTQt
MC9zb3VyY2UvZGF0YS9icmtpdHIvY2hhci50eHQ+LgorICAgIC8vIFRoZSBtYWpvciBkaWZmZXJl
bmNlcyBmcm9tIHRoZSBvcmlnaW5hbCBvbmVzIGFyZSBsaXN0ZWQgYmVsb3c6CisgICAgLy8gKiBS
ZXBsYWNlZCAnW1xwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBTcGFjaW5nTWFya31dJyB3aXRo
ICdbXHB7R2VuZXJhbF9DYXRlZ29yeSA9IFNwYWNpbmcgTWFya30gLSAkRXh0ZW5kXScgZm9yIElD
VSAzLjggb3IgZWFybGllcjsKKyAgICAvLyAqIFJlbW92ZWQgcnVsZXMgdGhhdCBwcmV2ZW50IGEg
Y3Vyc29yIGZyb20gbW92aW5nIGFmdGVyIHByZXBlbmQgY2hhcmFjdGVycyAoQnVnIDI0MzQyKTsK
KyAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBmcm9tIG1vdmluZyBh
ZnRlciB2aXJhbWEgc2lnbnMgb2YgSW5kaWMgbGFuZ3VhZ2VzIGV4Y2VwdCBUYW1pbCAoQnVnIDE1
NzkwKSwgYW5kOworICAgIC8vICogQWRkZWQgcnVsZXMgdGhhdCBwcmV2ZW50IGEgY3Vyc29yIGZy
b20gbW92aW5nIGJlZm9yZSBKYXBhbmVzZSBoYWxmLXdpZHRoIGthdGFrYXJhIHZvaWNlZCBtYXJr
cy4KKyAgICAvLyAqIEFkZGVkIHJ1bGVzIGZvciByZWdpb25hbCBpbmRpY2F0b3Igc3ltYm9scy4K
KyAgICBzdGF0aWMgY29uc3QgY2hhcioga1J1bGVzID0KKyAgICAgICAgIiRDUiAgICAgID0gW1xc
cHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ1J9XTsiCisgICAgICAgICIkTEYgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExGfV07IgorICAgICAgICAiJENvbnRyb2wgPSBb
XFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBDb250cm9sfV07IgorICAgICAgICAiJFZvaWNl
TWFya3MgPSBbXFx1RkY5RVxcdUZGOUZdOyIgLy8gSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2Fu
YSB2b2ljZWQgbWFya3MKKyAgICAgICAgIiRFeHRlbmQgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVy
X0JyZWFrID0gRXh0ZW5kfSAkVm9pY2VNYXJrcyAtIFtcXHUwRTMwIFxcdTBFMzIgXFx1MEU0NSBc
XHUwRUIwIFxcdTBFQjJdXTsiCisgICAgICAgICIkU3BhY2luZ01hcmsgPSBbW1xccHtHZW5lcmFs
X0NhdGVnb3J5ID0gU3BhY2luZyBNYXJrfV0gLSAkRXh0ZW5kXTsiCisgICAgICAgICIkTCAgICAg
ICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IEx9XTsiCisgICAgICAgICIkViAgICAg
ICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFZ9XTsiCisgICAgICAgICIkVCAgICAg
ICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFR9XTsiCisgICAgICAgICIkTFYgICAg
ICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWfV07IgorICAgICAgICAiJExWVCAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVlR9XTsiCisgICAgICAgICIkSGlu
MCAgICA9IFtcXHUwOTA1LVxcdTA5MzldOyIgLy8gRGV2YW5hZ2FyaSBMZXR0ZXIgQSwuLi4sSGEK
KyAgICAgICAgIiRIaW5WICAgID0gXFx1MDk0RDsiIC8vIERldmFuYWdhcmkgU2lnbiBWaXJhbWEK
KyAgICAgICAgIiRIaW4xICAgID0gW1xcdTA5MTUtXFx1MDkzOV07IiAvLyBEZXZhbmFnYXJpIExl
dHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRCZW4wICAgID0gW1xcdTA5ODUtXFx1MDlCOV07IiAv
LyBCZW5nYWxpIExldHRlciBBLC4uLixIYQorICAgICAgICAiJEJlblYgICAgPSBcXHUwOUNEOyIg
Ly8gQmVuZ2FsaSBTaWduIFZpcmFtYQorICAgICAgICAiJEJlbjEgICAgPSBbXFx1MDk5NS1cXHUw
OUI5XTsiIC8vIEJlbmdhbGkgTGV0dGVyIEthLC4uLixIYQorICAgICAgICAiJFBhbjAgICAgPSBb
XFx1MEEwNS1cXHUwQTM5XTsiIC8vIEd1cm11a2hpIExldHRlciBBLC4uLixIYQorICAgICAgICAi
JFBhblYgICAgPSBcXHUwQTREOyIgLy8gR3VybXVraGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRQ
YW4xICAgID0gW1xcdTBBMTUtXFx1MEEzOV07IiAvLyBHdXJtdWtoaSBMZXR0ZXIgS2EsLi4uLEhh
CisgICAgICAgICIkR3VqMCAgICA9IFtcXHUwQTg1LVxcdTBBQjldOyIgLy8gR3VqYXJhdGkgTGV0
dGVyIEEsLi4uLEhhCisgICAgICAgICIkR3VqViAgICA9IFxcdTBBQ0Q7IiAvLyBHdWphcmF0aSBT
aWduIFZpcmFtYQorICAgICAgICAiJEd1ajEgICAgPSBbXFx1MEE5NS1cXHUwQUI5XTsiIC8vIEd1
amFyYXRpIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRPcmkwICAgID0gW1xcdTBCMDUtXFx1
MEIzOV07IiAvLyBPcml5YSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRPcmlWICAgID0gXFx1
MEI0RDsiIC8vIE9yaXlhIFNpZ24gVmlyYW1hCisgICAgICAgICIkT3JpMSAgICA9IFtcXHUwQjE1
LVxcdTBCMzldOyIgLy8gT3JpeWEgTGV0dGVyIEthLC4uLixIYQorICAgICAgICAiJFRlbDAgICAg
PSBbXFx1MEMwNS1cXHUwQzM5XTsiIC8vIFRlbHVndSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAg
IiRUZWxWICAgID0gXFx1MEM0RDsiIC8vIFRlbHVndSBTaWduIFZpcmFtYQorICAgICAgICAiJFRl
bDEgICAgPSBbXFx1MEMxNC1cXHUwQzM5XTsiIC8vIFRlbHVndSBMZXR0ZXIgS2EsLi4uLEhhCisg
ICAgICAgICIkS2FuMCAgICA9IFtcXHUwQzg1LVxcdTBDQjldOyIgLy8gS2FubmFkYSBMZXR0ZXIg
QSwuLi4sSGEKKyAgICAgICAgIiRLYW5WICAgID0gXFx1MENDRDsiIC8vIEthbm5hZGEgU2lnbiBW
aXJhbWEKKyAgICAgICAgIiRLYW4xICAgID0gW1xcdTBDOTUtXFx1MENCOV07IiAvLyBLYW5uYWRh
IExldHRlciBBLC4uLixIYQorICAgICAgICAiJE1hbDAgICAgPSBbXFx1MEQwNS1cXHUwRDM5XTsi
IC8vIE1hbGF5YWxhbSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRNYWxWICAgID0gXFx1MEQ0
RDsiIC8vIE1hbGF5YWxhbSBTaWduIFZpcmFtYQorICAgICAgICAiJE1hbDEgICAgPSBbXFx1MEQx
NS1cXHUwRDM5XTsiIC8vIE1hbGF5YWxhbSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRSSSAg
ICAgID0gW1xcVTAwMDFGMUU2LVxcVTAwMDFGMUZGXTsiIC8vIEVtb2ppIHJlZ2lvbmFsIGluZGlj
YXRvcnMKKyAgICAgICAgIiRaV0ogICAgID0gXFx1MjAwRDsiIC8vIFplcm8gd2lkdGggam9pbmVy
CisgICAgICAgICIkRW1vamlWYXIgPSBbXFx1RkUwRl07IiAvLyBFbW9qaS1zdHlsZSB2YXJpYXRp
b24gc2VsZWN0b3IKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiRFbW9q
aUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ0MSBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBc
XFUwMDAxRjQ4QiBcXFUwMDAxRjVFOF07IiAvLyBFbW9qaSB0aGF0IHBhcnRpY2lwYXRlIGluIFpX
SiBzZXF1ZW5jZXMKKyAgICAgICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNkY5IFxc
dTI3MEEtXFx1MjcwRCBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAx
RjNDQSBcXFUwMDAxRjNDQiBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUw
MDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBc
XFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4
NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU3NSBcXFUwMDAxRjU5MCBcXFUwMDAxRjU5NSBcXFUwMDAx
RjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUw
MDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMCBcXFUwMDAxRjkxOF0g
OyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycworI2Vsc2UKKyAgICAg
ICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUw
MDAxRjQ4Ql07IiAvLyBFbW9qaSB0aGF0IHBhcnRpY2lwYXRlIGluIFpXSiBzZXF1ZW5jZXMKKyAg
ICAgICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNzBBLVxcdTI3MEMgXFxVMDAwMUYz
ODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQzcgXFxVMDAwMUYzQ0EgXFxVMDAw
MUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxV
MDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEt
XFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1
OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAw
MUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzBdIDsiIC8vIEVtb2ppIHRo
YXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKKyNlbmRpZgorICAgICAgICAiJEVtb2ppTW9k
cyA9IFtcXFUwMDAxRjNGQi1cXFUwMDAxRjNGRl07IiAvLyBGaXR6cGF0cmljayBtb2RpZmllcnMK
KyAgICAgICAgIiEhY2hhaW47IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICAg
ICAiISFSSU5vQ2hhaW47IgorI2VuZGlmCisgICAgICAgICIhIWZvcndhcmQ7IgorICAgICAgICAi
JENSICRMRjsiCisgICAgICAgICIkTCAoJEwgfCAkViB8ICRMViB8ICRMVlQpOyIKKyAgICAgICAg
IigkTFYgfCAkVikgKCRWIHwgJFQpOyIKKyAgICAgICAgIigkTFZUIHwgJFQpICRUOyIKKyNpZiBB
RERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCogLyAkUkk7
IgorICAgICAgICAiJFJJICRSSSAkRXh0ZW5kKjsiCisgICAgICAgICJbXiRDb250cm9sICRDUiAk
TEZdICRFeHRlbmQ7IgorICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7
IgorI2Vsc2UKKyAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJEV4dGVuZDsiCisgICAgICAg
ICJbXiRDb250cm9sICRDUiAkTEZdICRTcGFjaW5nTWFyazsiCisgICAgICAgICIkUkkgJFJJIC8g
JFJJOyIKKyAgICAgICAgIiRSSSAkUkk7IgorI2VuZGlmCisgICAgICAgICIkSGluMCAkSGluViAk
SGluMTsiIC8vIERldmFuYWdhcmkgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJEJlbjAgJEJl
blYgJEJlbjE7IiAvLyBCZW5nYWxpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRQYW4wICRQ
YW5WICRQYW4xOyIgLy8gR3VybXVraGkgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJEd1ajAg
JEd1alYgJEd1ajE7IiAvLyBHdWphcmF0aSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkT3Jp
MCAkT3JpViAkT3JpMTsiIC8vIE9yaXlhIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRUZWww
ICRUZWxWICRUZWwxOyIgLy8gVGVsdWd1IFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRLYW4w
ICRLYW5WICRLYW4xOyIgLy8gS2FubmFkYSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkTWFs
MCAkTWFsViAkTWFsMTsiIC8vIE1hbGF5YWxhbSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIk
WldKICRFbW9qaUZvclNlcXM7IiAvLyBEb24ndCBicmVhayBpbiBlbW9qaSBaV0ogc2VxdWVuY2Vz
CisgICAgICAgICIkRW1vamlGb3JNb2RzICRFbW9qaVZhcj8gJEVtb2ppTW9kczsiIC8vIERvbid0
IGJyZWFrIGJldHdlZW4gcmVsZXZhbnQgZW1vamkgKHBvc3NpYmx5IHdpdGggdmFyaWF0aW9uIHNl
bGVjdG9yKSBhbmQgRml0enBhdHJpY2sgbW9kaWZpZXIKKyAgICAgICAgIiEhcmV2ZXJzZTsiCisg
ICAgICAgICIkTEYgJENSOyIKKyAgICAgICAgIigkTCB8ICRWIHwgJExWIHwgJExWVCkgJEw7Igor
ICAgICAgICAiKCRWIHwgJFQpICgkTFYgfCAkVik7IgorICAgICAgICAiJFQgKCRMVlQgfCAkVCk7
IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICAgICAiJEV4dGVuZCogJFJJICRS
SSAvICRFeHRlbmQqICRSSSAkUkk7IgorICAgICAgICAiJEV4dGVuZCogJFJJICRSSTsiCisgICAg
ICAgICIkRXh0ZW5kICAgICAgW14kQ29udHJvbCAkQ1IgJExGXTsiCisgICAgICAgICIkU3BhY2lu
Z01hcmsgW14kQ29udHJvbCAkQ1IgJExGXTsiCisjZWxzZQorICAgICAgICAiJEV4dGVuZCAgICAg
IFteJENvbnRyb2wgJENSICRMRl07IgorICAgICAgICAiJFNwYWNpbmdNYXJrIFteJENvbnRyb2wg
JENSICRMRl07IgorICAgICAgICAiJFJJICRSSSAvICRSSSAkUkk7IgorICAgICAgICAiJFJJICRS
STsiCisjZW5kaWYKKyAgICAgICAgIiRIaW4xICRIaW5WICRIaW4wOyIgLy8gRGV2YW5hZ2FyaSBW
aXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEJlbjEgJEJlblYgJEJlbjA7IiAvLyBCZW5nYWxp
IFZpcmFtYSAoYmFja3dhcmQpCisgICAgICAgICIkUGFuMSAkUGFuViAkUGFuMDsiIC8vIEd1cm11
a2hpIFZpcmFtYSAoYmFja3dhcmQpCisgICAgICAgICIkR3VqMSAkR3VqViAkR3VqMDsiIC8vIEd1
amFyYXRpIFZpcmFtYSAoYmFja3dhcmQpCisgICAgICAgICIkT3JpMSAkT3JpViAkT3JpMDsiIC8v
IEd1amFyYXRpIFZpcmFtYSAoYmFja3dhcmQpCisgICAgICAgICIkVGVsMSAkVGVsViAkVGVsMDsi
IC8vIFRlbHVndSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEthbjEgJEthblYgJEthbjA7
IiAvLyBLYW5uYWRhIFZpcmFtYSAoYmFja3dhcmQpCisgICAgICAgICIkTWFsMSAkTWFsViAkTWFs
MDsiIC8vIE1hbGF5YWxhbSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEVtb2ppRm9yU2Vx
cyAkWldKOyIgLy8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNlcworICAgICAgICAi
JEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3
ZWVuIHJlbGV2YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5k
IEZpdHpwYXRyaWNrIG1vZGlmaWVyCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAg
ICAgICIhIXNhZmVfcmV2ZXJzZTsiCisgICAgICAgICIkUkkgJFJJKzsiCisgICAgICAgICJbJEVt
b2ppVmFyICRFbW9qaU1vZHNdKyAkRW1vamlGb3JNb2RzOyIKKyAgICAgICAgIiEhc2FmZV9mb3J3
YXJkOyIKKyAgICAgICAgIiRSSSAkUkkrOyIKKyAgICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9q
aVZhciAkRW1vamlNb2RzXSs7IjsKKyNlbHNlCisgICAgICAgICJbJEVtb2ppVmFyICRFbW9qaU1v
ZHNdKyAkRW1vamlGb3JNb2RzOyIKKyAgICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9qaVZhciAk
RW1vamlNb2RzXSs7IgorICAgICAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICAgICAiISFzYWZl
X2ZvcndhcmQ7IjsKKyNlbmRpZgorICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGlj
Q3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyhrUnVs
ZXMpOworI2Vsc2UgLy8gUExBVEZPUk0oSU9TKQorICAgIC8vIFVzZSB0aGUgc3BlY2lhbCBUaGFp
IGNoYXJhY3RlciBicmVhayBpdGVyYXRvciBmb3IgYWxsIGxvY2FsZXMKKyAgICBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXpl
SXRlcmF0b3IoVUJSS19DSEFSQUNURVIsICJ0aCIpOworI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
CisKKyAgICBpZiAoIXN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29y
TW92ZW1lbnRJdGVyYXRvciwgc3RyaW5nKTsKK30KKworVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVp
cmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4
dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAg
VGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gTGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFy
ZWRQb29sKCkudGFrZShsb2NhbGUsIG1vZGUsIGlzQ0pLKTsKKyAgICBpZiAoIWl0ZXJhdG9yKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRDb250ZXh0QXdhcmVUZXh0
Rm9ySXRlcmF0b3IoKml0ZXJhdG9yLCBzdHJpbmcsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0
TGVuZ3RoKTsKK30KKwordm9pZCByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yKQoreworICAgIEFTU0VSVF9BUkcoaXRlcmF0b3IsIGl0ZXJhdG9yKTsK
KworICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnB1dChpdGVyYXRvcik7
Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFByb2xvZ3VlID0KKyAgICAiISFjaGFpbjsi
CisgICAgIiEhTEJDTU5vQ2hhaW47IgorICAgICIhIWxvb2tBaGVhZEhhcmRCcmVhazsiOworCitz
dGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0JlZm9yZSA9CisgICAgLy8gZXhwbGlj
aXRseSBlbnVtZXJhdGUgJENKIHNpbmNlIElDVSB2ZXJzaW9ucyBwcmlvciB0byA0OSBkb24ndCBz
dXBwb3J0IDpMaW5lQnJlYWs9Q29uZGl0aW9uYWxfSmFwYW5lc2VfU3RhcnRlcjoKKyAgICAiJENK
ID0gWyIKKyNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJ
T05fTUlOT1JfTlVNID49IDkpCisgICAgIjpMaW5lQnJlYWs9Q29uZGl0aW9uYWxfSmFwYW5lc2Vf
U3RhcnRlcjoiCisjZWxzZQorICAgICJcXHUzMDQxXFx1MzA0M1xcdTMwNDVcXHUzMDQ3XFx1MzA0
OVxcdTMwNjNcXHUzMDgzXFx1MzA4NVxcdTMwODdcXHUzMDhFXFx1MzA5NVxcdTMwOTZcXHUzMEEx
XFx1MzBBM1xcdTMwQTVcXHUzMEE3IgorICAgICJcXHUzMEE5XFx1MzBDM1xcdTMwRTNcXHUzMEU1
XFx1MzBFN1xcdTMwRUVcXHUzMEY1XFx1MzBGNlxcdTMwRkMiCisgICAgIlxcdTMxRjBcXHUzMUYx
XFx1MzFGMlxcdTMxRjNcXHUzMUY0XFx1MzFGNVxcdTMxRjZcXHUzMUY3XFx1MzFGOFxcdTMxRjlc
XHUzMUZBXFx1MzFGQlxcdTMxRkNcXHUzMUZEXFx1MzFGRVxcdTMxRkYiCisgICAgIlxcdUZGNjdc
XHVGRjY4XFx1RkY2OVxcdUZGNkFcXHVGRjZCXFx1RkY2Q1xcdUZGNkRcXHVGRjZFXFx1RkY2Rlxc
dUZGNzAiCisjZW5kaWYKKyAgICAiXTsiOworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3Np
Z25tZW50c0N1c3RvbUxvb3NlQ0pLID0KKyAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAxM107
IgorICAgICIkRVhfU1VCID0gW1xcdTAwMjFcXHUwMDNGXFx1RkYwMVxcdUZGMUZdOyIKKyAgICAi
JElEX1NVQiA9ICcnOyIKKyAgICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1MjAyNl07IgorICAgICIk
SVNfU1VCID0gW1xcdTAwM0FcXHUwMDNCXTsiCisgICAgIiROU19TVUIgPSBbXFx1MjAzQ1xcdTIw
NDdcXHUyMDQ4XFx1MjA0OVxcdTMwMDVcXHUzMDFDXFx1MzAzQlxcdTMwOURcXHUzMDlFXFx1MzBB
MFxcdTMwRkJcXHUzMEZEXFx1MzBGRVxcdUZGMUFcXHVGRjFCXFx1RkY2NV07IgorICAgICIkUE9f
U1VCID0gW1xcdTAwMjVcXHUwMEEyXFx1MDBCMFxcdTIwMzBcXHUyMDMyXFx1MjAzM1xcdTIxMDNc
XHVGRjA1XFx1RkZFMF07IgorICAgICIkUFJfU1VCID0gW1xcdTAwMjRcXHUwMEEzXFx1MDBBNVxc
dTIwQUNcXHUyMTE2XFx1RkYwNFxcdUZGRTFcXHVGRkU1XTsiCisgICAgIiRJRF9BREQgPSBbJENK
ICRCQV9TVUIgJEVYX1NVQiAkSU5fU1VCICRJU19TVUIgJE5TX1NVQiAkUE9fU1VCICRQUl9TVUJd
OyIKKyAgICAiJE5TX0FERCA9ICcnOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tTG9vc2VOb25DSksgPQorICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhf
U1VCID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gW1xcdTIwMjVc
XHUyMDI2XTsiCisgICAgIiRJU19TVUIgPSAnJzsiCisgICAgIiROU19TVUIgPSBbXFx1MzAwNVxc
dTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMwRkRcXHUzMEZFXTsiCisgICAgIiRQT19TVUIgPSAnJzsi
CisgICAgIiRQUl9TVUIgPSAnJzsiCisgICAgIiRJRF9BREQgPSBbJENKICRJTl9TVUIgJE5TX1NV
Ql07IgorICAgICIkTlNfQUREID0gJyc7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNz
aWdubWVudHNDdXN0b21Ob3JtYWxDSksgPQorICAgICIkQkFfU1VCID0gW1xcdTIwMTBcXHUyMDEz
XTsiCisgICAgIiRFWF9TVUIgPSAnJzsiCisgICAgIiRJTl9TVUIgPSAnJzsiCisgICAgIiRJRF9T
VUIgPSAnJzsiCisgICAgIiRJU19TVUIgPSAnJzsiCisgICAgIiROU19TVUIgPSBbXFx1MzAxQ1xc
dTMwQTBdOyIKKyAgICAiJFBPX1NVQiA9ICcnOyIKKyAgICAiJFBSX1NVQiA9ICcnOyIKKyAgICAi
JElEX0FERCA9IFskQ0ogJEJBX1NVQiAkTlNfU1VCXTsiCisgICAgIiROU19BREQgPSAnJzsiOwor
CitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbE5vbkNKSyA9
CisgICAgIiRCQV9TVUIgPSAnJzsiCisgICAgIiRFWF9TVUIgPSAnJzsiCisgICAgIiRJRF9TVUIg
PSAnJzsiCisgICAgIiRJTl9TVUIgPSAnJzsiCisgICAgIiRJU19TVUIgPSAnJzsiCisgICAgIiRO
U19TVUIgPSAnJzsiCisgICAgIiRQT19TVUIgPSAnJzsiCisgICAgIiRQUl9TVUIgPSAnJzsiCisg
ICAgIiRJRF9BREQgPSBbJENKXTsiCisgICAgIiROU19BREQgPSAnJzsiOworCitzdGF0aWMgY29u
c3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSyA9CisgICAgIiRCQV9TVUIg
PSAnJzsiCisgICAgIiRFWF9TVUIgPSAnJzsiCisgICAgIiRJRF9TVUIgPSAnJzsiCisgICAgIiRJ
Tl9TVUIgPSAnJzsiCisgICAgIiRJU19TVUIgPSAnJzsiCisgICAgIiROU19TVUIgPSAnJzsiCisg
ICAgIiRQT19TVUIgPSAnJzsiCisgICAgIiRQUl9TVUIgPSAnJzsiCisgICAgIiRJRF9BREQgPSAn
JzsiCisgICAgIiROU19BREQgPSBbJENKXTsiOworCisjZGVmaW5lIHVheDE0QXNzaWdubWVudHND
dXN0b21TdHJpY3ROb25DSksgICAgICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Q0pLCisj
ZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Q0pLICAgICAgICB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tTm9ybWFsQ0pLCisjZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZh
dWx0Tm9uQ0pLICAgICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLCisKK3N0YXRp
YyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQWZ0ZXIgPQorICAgICIkQUkgPSBbOkxpbmVC
cmVhayA9IEFtYmlndW91czpdOyIKKyAgICAiJEFMID0gWzpMaW5lQnJlYWsgPSBBbHBoYWJldGlj
Ol07IgorICAgICIkQkEgPSBbWzpMaW5lQnJlYWsgPSBCcmVha19BZnRlcjpdIC0gJEJBX1NVQl07
IgorICAgICIkQkIgPSBbOkxpbmVCcmVhayA9IEJyZWFrX0JlZm9yZTpdOyIKKyAgICAiJEJLID0g
WzpMaW5lQnJlYWsgPSBNYW5kYXRvcnlfQnJlYWs6XTsiCisgICAgIiRCMiA9IFs6TGluZUJyZWFr
ID0gQnJlYWtfQm90aDpdOyIKKyAgICAiJENCID0gWzpMaW5lQnJlYWsgPSBDb250aW5nZW50X0Jy
ZWFrOl07IgorICAgICIkQ0wgPSBbOkxpbmVCcmVhayA9IENsb3NlX1B1bmN0dWF0aW9uOl07Igor
ICAgICIkQ00gPSBbOkxpbmVCcmVhayA9IENvbWJpbmluZ19NYXJrOl07IgorICAgICIkQ1AgPSBb
OkxpbmVCcmVhayA9IENsb3NlX1BhcmVudGhlc2lzOl07IgorICAgICIkQ1IgPSBbOkxpbmVCcmVh
ayA9IENhcnJpYWdlX1JldHVybjpdOyIKKyAgICAiJEVYID0gW1s6TGluZUJyZWFrID0gRXhjbGFt
YXRpb246XSAtICRFWF9TVUJdOyIKKyAgICAiJEdMID0gWzpMaW5lQnJlYWsgPSBHbHVlOl07Igor
I2lmIChVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA0KSAmJiAoVV9JQ1VfVkVSU0lPTl9NSU5P
Ul9OVU0gPj0gOSkKKyAgICAiJEhMID0gWzpMaW5lQnJlYWsgPSBIZWJyZXdfTGV0dGVyOl07Igor
I2Vsc2UKKyAgICAiJEhMID0gW1s6SGVicmV3Ol0gJiBbOkxldHRlcjpdXTsiCisjZW5kaWYKKyAg
ICAiJEhZID0gWzpMaW5lQnJlYWsgPSBIeXBoZW46XTsiCisgICAgIiRIMiA9IFs6TGluZUJyZWFr
ID0gSDI6XTsiCisgICAgIiRIMyA9IFs6TGluZUJyZWFrID0gSDM6XTsiCisgICAgIiRJRCA9IFtb
W1s6TGluZUJyZWFrID0gSWRlb2dyYXBoaWM6XSAtICRDSl0gJElEX0FERF0gLSAkSURfU1VCXTsi
CisgICAgIiRJTiA9IFtbOkxpbmVCcmVhayA9IEluc2VwYXJhYmxlOl0gLSAkSU5fU1VCXTsiCisg
ICAgIiRJUyA9IFtbOkxpbmVCcmVhayA9IEluZml4X051bWVyaWM6XSAtICRJU19TVUJdOyIKKyAg
ICAiJEpMID0gWzpMaW5lQnJlYWsgPSBKTDpdOyIKKyAgICAiJEpWID0gWzpMaW5lQnJlYWsgPSBK
VjpdOyIKKyAgICAiJEpUID0gWzpMaW5lQnJlYWsgPSBKVDpdOyIKKyAgICAiJExGID0gWzpMaW5l
QnJlYWsgPSBMaW5lX0ZlZWQ6XTsiCisgICAgIiROTCA9IFs6TGluZUJyZWFrID0gTmV4dF9MaW5l
Ol07IgorICAgICIkTlMgPSBbW1tbOkxpbmVCcmVhayA9IE5vbnN0YXJ0ZXI6XSAtICRDSl0gJE5T
X0FERF0gLSAkTlNfU1VCXTsiCisgICAgIiROVSA9IFs6TGluZUJyZWFrID0gTnVtZXJpYzpdOyIK
KyAgICAiJE9QID0gWzpMaW5lQnJlYWsgPSBPcGVuX1B1bmN0dWF0aW9uOl07IgorICAgICIkUE8g
PSBbWzpMaW5lQnJlYWsgPSBQb3N0Zml4X051bWVyaWM6XSAtICRQT19TVUJdOyIKKyAgICAiJFBS
ID0gW1s6TGluZUJyZWFrID0gUHJlZml4X051bWVyaWM6XSAtICRQUl9TVUJdOyIKKyAgICAiJFFV
ID0gWzpMaW5lQnJlYWsgPSBRdW90YXRpb246XTsiCisgICAgIiRSSSA9IFtcXFUwMDAxRjFFNi1c
XFUwMDAxRjFGRl07IgorICAgICIkU0EgPSBbOkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpd
OyIKKyAgICAiJFNHID0gWzpMaW5lQnJlYWsgPSBTdXJyb2dhdGU6XTsiCisgICAgIiRTUCA9IFs6
TGluZUJyZWFrID0gU3BhY2U6XTsiCisgICAgIiRTWSA9IFs6TGluZUJyZWFrID0gQnJlYWtfU3lt
Ym9sczpdOyIKKyAgICAiJFdKID0gWzpMaW5lQnJlYWsgPSBXb3JkX0pvaW5lcjpdOyIKKyAgICAi
JFhYID0gWzpMaW5lQnJlYWsgPSBVbmtub3duOl07IgorICAgICIkWlcgPSBbOkxpbmVCcmVhayA9
IFpXU3BhY2U6XTsiCisgICAgIiRaV0ogPSBcXHUyMDBEOyIKKyAgICAiJEVtb2ppVmFyID0gXFx1
RkUwRjsiCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgIiRFbW9qaUZvclNlcXMg
PSBbXFx1Mjc2NCBcXFUwMDAxRjQ0MSBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4
QiBcXFUwMDAxRjVFOF07IgorICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBc
XHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAw
MUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxV
MDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0Nzgg
XFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0
ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAw
MUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxV
MDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThd
IDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKKyNlbHNlCisgICAg
IiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAx
RjQ4Ql07IgorICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxc
VTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NB
IFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFG
NDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAw
MDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxc
VTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRG
IFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBF
bW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZW5kaWYKKyAgICAiJEVtb2pp
TW9kcyA9IFtcXFUwMDAxRjNGQi1cXFUwMDAxRjNGRl07IgorICAgICIkZGljdGlvbmFyeSA9IFs6
TGluZUJyZWFrID0gQ29tcGxleF9Db250ZXh0Ol07IgorICAgICIkQUxQbHVzID0gWyRBTCAkQUkg
JFNBICRTRyAkWFhdOyIKKyAgICAiJEFMY20gPSAkQUxQbHVzICRDTSo7IgorICAgICIkQkFjbSA9
ICRCQSAkQ00qOyIKKyAgICAiJEJCY20gPSAkQkIgJENNKjsiCisgICAgIiRCMmNtID0gJEIyICRD
TSo7IgorICAgICIkQ0xjbSA9ICRDTCAkQ00qOyIKKyAgICAiJENQY20gPSAkQ1AgJENNKjsiCisg
ICAgIiRFWGNtID0gJEVYICRDTSo7IgorICAgICIkR0xjbSA9ICRHTCAkQ00qOyIKKyAgICAiJEhM
Y20gPSAkSEwgJENNKjsiCisgICAgIiRIWWNtID0gJEhZICRDTSo7IgorICAgICIkSDJjbSA9ICRI
MiAkQ00qOyIKKyAgICAiJEgzY20gPSAkSDMgJENNKjsiCisgICAgIiRJRGNtID0gJElEICRDTSo7
IgorICAgICIkSU5jbSA9ICRJTiAkQ00qOyIKKyAgICAiJElTY20gPSAkSVMgJENNKjsiCisgICAg
IiRKTGNtID0gJEpMICRDTSo7IgorICAgICIkSlZjbSA9ICRKViAkQ00qOyIKKyAgICAiJEpUY20g
PSAkSlQgJENNKjsiCisgICAgIiROU2NtID0gJE5TICRDTSo7IgorICAgICIkTlVjbSA9ICROVSAk
Q00qOyIKKyAgICAiJE9QY20gPSAkT1AgJENNKjsiCisgICAgIiRQT2NtID0gJFBPICRDTSo7Igor
ICAgICIkUFJjbSA9ICRQUiAkQ00qOyIKKyAgICAiJFFVY20gPSAkUVUgJENNKjsiCisgICAgIiRS
SWNtID0gJFFVICRDTSo7IgorICAgICIkU1ljbSA9ICRTWSAkQ00qOyIKKyAgICAiJFdKY20gPSAk
V0ogJENNKjsiOworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRGb3J3YXJkID0KKyAgICAiISFm
b3J3YXJkOyIKKyAgICAiJENBTl9DTSA9IFteJFNQICRCSyAkQ1IgJExGICROTCAkWlcgJENNXTsi
CisgICAgIiRDQU5UX0NNID0gWyRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07IgorICAgICIk
QUxfRk9MTE9XX05PQ00gPSBbJEJLICRDUiAkTEYgJE5MICRaVyAkU1BdOyIKKyAgICAiJEFMX0ZP
TExPV19DTSA9IFskQ0wgJENQICRFWCAkSEwgJElTICRTWSAkV0ogJEdMICRPUCAkUVUgJEJBICRI
WSAkTlMgJElOICROVSAkQUxQbHVzXTsiCisgICAgIiRBTF9GT0xMT1cgPSBbJEFMX0ZPTExPV19O
T0NNICRBTF9GT0xMT1dfQ01dOyIKKyAgICAiJExCNEJyZWFrcyA9IFskQksgJENSICRMRiAkTkxd
OyIKKyAgICAiJExCNE5vbkJyZWFrcyA9IFteJEJLICRDUiAkTEYgJE5MXTsiCisgICAgIiRMQjhC
cmVha3MgPSBbJExCNEJyZWFrcyAkWlddOyIKKyAgICAiJExCOE5vbkJyZWFrcyA9IFtbJExCNE5v
bkJyZWFrc10gLSBbJFpXXV07IgorICAgICIkTEIxOE5vbkJyZWFrcyA9IFskTEI4Tm9uQnJlYWtz
IC0gWyRTUF1dOyIKKyAgICAiJExCMThCcmVha3MgPSBbJExCOEJyZWFrcyAkU1BdOyIKKyAgICAi
JExCMjBOb25CcmVha3MgPSBbJExCMThOb25CcmVha3MgLSAkQ0JdOyIKKyAgICAiJEFMUGx1cyAk
Q00rOyIKKyAgICAiJEJBICRDTSs7IgorICAgICIkQkIgJENNKzsiCisgICAgIiRCMiAkQ00rOyIK
KyAgICAiJENMICRDTSs7IgorICAgICIkQ1AgJENNKzsiCisgICAgIiRFWCAkQ00rOyIKKyAgICAi
JEdMICRDTSs7IgorICAgICIkSEwgJENNKzsiCisgICAgIiRIWSAkQ00rOyIKKyAgICAiJEgyICRD
TSs7IgorICAgICIkSDMgJENNKzsiCisgICAgIiRJRCAkQ00rOyIKKyAgICAiJElOICRDTSs7Igor
ICAgICIkSVMgJENNKzsiCisgICAgIiRKTCAkQ00rOyIKKyAgICAiJEpWICRDTSs7IgorICAgICIk
SlQgJENNKzsiCisgICAgIiROUyAkQ00rOyIKKyAgICAiJE5VICRDTSs7IgorICAgICIkT1AgJENN
KzsiCisgICAgIiRQTyAkQ00rOyIKKyAgICAiJFBSICRDTSs7IgorICAgICIkUVUgJENNKzsiCisg
ICAgIiRTWSAkQ00rOyIKKyAgICAiJFdKICRDTSs7IgorICAgICIkQ1IgJExGIHsxMDB9OyIKKyAg
ICAiJExCNE5vbkJyZWFrcz8gJExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRDQU5fQ00gJENNKiAk
TEI0QnJlYWtzIHsxMDB9OyIKKyAgICAiJENNKyAkTEI0QnJlYWtzIHsxMDB9OyIKKyAgICAiJExC
NE5vbkJyZWFrcyBbJFNQICRaV107IgorICAgICIkQ0FOX0NNICRDTSogWyRTUCAkWlddOyIKKyAg
ICAiJENNKyBbJFNQICRaV107IgorICAgICIkRW1vamlGb3JTZXFzICRFbW9qaVZhcj8gJEVtb2pp
TW9kcz8gJFpXSiAkRW1vamlGb3JTZXFzOyIKKyAgICAiJENBTl9DTSAkQ00rOyIKKyAgICAiJENN
KzsiCisgICAgIiRDQU5fQ00gJENNKiAkV0pjbTsiCisgICAgIiRMQjhOb25CcmVha3MgJFdKY207
IgorICAgICIkQ00rICRXSmNtOyIKKyAgICAiJFdKY20gJENBTlRfQ007IgorICAgICIkV0pjbSAk
Q0FOX0NNICRDTSo7IgorICAgICIkR0xjbSAkQ0FOX0NNICRDTSo7IgorICAgICIkR0xjbSAkQ0FO
VF9DTTsiCisgICAgIltbJExCOE5vbkJyZWFrc10gLSBbJFNQICRCQSAkSFldXSAkQ00qICRHTGNt
OyIKKyAgICAiJENNKyBHTGNtOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkQ0w7IgorICAgICIkQ0FO
X0NNICRDTSogJENMOyIKKyAgICAiJENNKyAkQ0w7IgorICAgICIkTEI4Tm9uQnJlYWtzICRDUDsi
CisgICAgIiRDQU5fQ00gJENNKiAkQ1A7IgorICAgICIkQ00rICRDUDsiCisgICAgIiRMQjhOb25C
cmVha3MgJEVYOyIKKyAgICAiJENBTl9DTSAkQ00qICRFWDsiCisgICAgIiRDTSsgJEVYOyIKKyAg
ICAiJExCOE5vbkJyZWFrcyAkSVM7IgorICAgICIkQ0FOX0NNICRDTSogJElTOyIKKyAgICAiJENN
KyAkSVM7IgorICAgICIkTEI4Tm9uQnJlYWtzICRTWTsiCisgICAgIiRDQU5fQ00gJENNKiAkU1k7
IgorICAgICIkQ00rICRTWTsiCisgICAgIiRPUGNtICRTUCogJENBTl9DTSAkQ00qOyIKKyAgICAi
JE9QY20gJFNQKiAkQ0FOVF9DTTsiCisgICAgIiRPUGNtICRTUCsgJENNKyAkQUxfRk9MTE9XPzsi
CisgICAgIiRRVWNtICRTUCogJE9QY207IgorICAgICIoJENMY20gfCAkQ1BjbSkgJFNQKiAkTlNj
bTsiCisgICAgIiRCMmNtICRTUCogJEIyY207IgorICAgICIkTEIxOE5vbkJyZWFrcyAkQ00qICRR
VWNtOyIKKyAgICAiJENNKyAkUVVjbTsiCisgICAgIiRRVWNtIC4/OyIKKyAgICAiJFFVY20gJExC
MThOb25CcmVha3MgJENNKjsiCisgICAgIiRMQjIwTm9uQnJlYWtzICRDTSogKCRCQWNtIHwgJEhZ
Y20gfCAkTlNjbSk7ICIKKyAgICAiJEJCY20gW14kQ0JdOyIKKyAgICAiJEJCY20gJExCMjBOb25C
cmVha3MgJENNKjsiCisgICAgIiRITGNtICgkSFljbSB8ICRCQWNtKSBbXiRDQl0/OyIKKyAgICAi
KCRBTGNtIHwgJEhMY20pICRJTmNtOyIKKyAgICAiJENNKyAkSU5jbTsiCisgICAgIiRJRGNtICRJ
TmNtOyIKKyAgICAiJElOY20gJElOY207IgorICAgICIkTlVjbSAkSU5jbTsiCisgICAgIiRJRGNt
ICRQT2NtOyIKKyAgICAiJEFMY20gJE5VY207IgorICAgICIkSExjbSAkTlVjbTsiCisgICAgIiRD
TSsgJE5VY207IgorICAgICIkTlVjbSAkQUxjbTsiCisgICAgIiROVWNtICRITGNtOyIKKyAgICAi
JFBSY20gJElEY207IgorICAgICIkUFJjbSAoJEFMY20gfCAkSExjbSk7IgorICAgICIkUE9jbSAo
JEFMY20gfCAkSExjbSk7IgorICAgICIoJFBSY20gfCAkUE9jbSk/ICgkT1BjbSB8ICRIWWNtKT8g
JE5VY20gKCROVWNtIHwgJFNZY20gfCAkSVNjbSkqICgkQ0xjbSB8ICRDUGNtKT8gKCRQUmNtIHwg
JFBPY20pPzsiCisgICAgIiRKTGNtICgkSkxjbSB8ICRKVmNtIHwgJEgyY20gfCAkSDNjbSk7Igor
ICAgICIoJEpWY20gfCAkSDJjbSkgKCRKVmNtIHwgJEpUY20pOyIKKyAgICAiKCRKVGNtIHwgJEgz
Y20pICRKVGNtOyIKKyAgICAiKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20p
ICRJTmNtOyIKKyAgICAiKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pICRQ
T2NtOyIKKyAgICAiJFBSY20gKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20p
OyIKKyAgICAiKCRBTGNtIHwgJEhMY20pICgkQUxjbSB8ICRITGNtKTsiCisgICAgIiRDTSsgKCRB
TGNtIHwgJEhMY20pOyIKKyAgICAiJElTY20gKCRBTGNtIHwgJEhMY20pOyIKKyAgICAiKCRBTGNt
IHwgJEhMY20gfCAkTlVjbSkgJE9QY207IgorICAgICIkQ00rICRPUGNtOyIKKyAgICAiJENQY20g
KCRBTGNtIHwgJEhMY20gfCAkTlVjbSk7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAor
ICAgICIkUkljbSAkUkljbTsiCisjZW5kaWYKKyAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/
ICRFbW9qaU1vZHM7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0UmV2ZXJzZSA9CisgICAg
IiEhcmV2ZXJzZTsiCisgICAgIiRDTSsgJEFMUGx1czsiCisgICAgIiRDTSsgJEJBOyIKKyAgICAi
JENNKyAkQkI7IgorICAgICIkQ00rICRCMjsiCisgICAgIiRDTSsgJENMOyIKKyAgICAiJENNKyAk
Q1A7IgorICAgICIkQ00rICRFWDsiCisgICAgIiRDTSsgJEdMOyIKKyAgICAiJENNKyAkSEw7Igor
ICAgICIkQ00rICRIWTsiCisgICAgIiRDTSsgJEgyOyIKKyAgICAiJENNKyAkSDM7IgorICAgICIk
Q00rICRJRDsiCisgICAgIiRDTSsgJElOOyIKKyAgICAiJENNKyAkSVM7IgorICAgICIkQ00rICRK
TDsiCisgICAgIiRDTSsgJEpWOyIKKyAgICAiJENNKyAkSlQ7IgorICAgICIkQ00rICROUzsiCisg
ICAgIiRDTSsgJE5VOyIKKyAgICAiJENNKyAkT1A7IgorICAgICIkQ00rICRQTzsiCisgICAgIiRD
TSsgJFBSOyIKKyAgICAiJENNKyAkUVU7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAor
ICAgICIkQ00rICRSSTsiCisjZW5kaWYKKyAgICAiJENNKyAkU1k7IgorICAgICIkQ00rICRXSjsi
CisgICAgIiRDTSs7IgorICAgICIkQUxfRk9MTE9XICRDTSsgLyAoWyRCSyAkQ1IgJExGICROTCAk
Wlcge2VvZn1dIHwgJFNQKyAkQ00rICRTUCB8ICRTUCsgJENNKiAoW14kT1AgJENNICRTUF0gfCBb
JEFMIHtlb2Z9XSkpOyIKKyAgICAiWyRQUl0gLyAkQ00rIFskQksgJENSICRMRiAkTkwgJFpXICRT
UCB7ZW9mfV07IgorICAgICIkTEI0QnJlYWtzIFskTEI0Tm9uQnJlYWtzLSRDTV07IgorICAgICIk
TEI0QnJlYWtzICRDTSsgJENBTl9DTTsiCisgICAgIiRMRiAkQ1I7IgorICAgICJbJFNQICRaV10g
WyRMQjROb25CcmVha3MtJENNXTsiCisgICAgIlskU1AgJFpXXSAkQ00rICRDQU5fQ007IgorICAg
ICIkRW1vamlGb3JTZXFzICRaV0ogJEVtb2ppTW9kcz8gJEVtb2ppVmFyPyAkRW1vamlGb3JTZXFz
OyIKKyAgICAiJENNKyAkQ0FOX0NNOyIKKyAgICAiJENNKiAkV0ogJENNKiAkQ0FOX0NNOyIKKyAg
ICAiJENNKiAkV0ogWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRDQU5UX0NNICRDTSogJFdK
OyIKKyAgICAiJENNKiAkQ0FOX0NNICRDTSogJFdKOyIKKyAgICAiJENNKiAkR0wgJENNKiBbJExC
OE5vbkJyZWFrcy1bJENNICRTUCAkQkEgJEhZXV07IgorICAgICIkQ0FOVF9DTSAkQ00qICRHTDsi
CisgICAgIiRDTSogJENBTl9DTSAkQ00qICRHTDsiCisgICAgIiRDTCAkQ00rICRDQU5fQ007Igor
ICAgICIkQ1AgJENNKyAkQ0FOX0NNOyIKKyAgICAiJEVYICRDTSsgJENBTl9DTTsiCisgICAgIiRJ
UyAkQ00rICRDQU5fQ007IgorICAgICIkU1kgJENNKyAkQ0FOX0NNOyIKKyAgICAiJENMIFskTEI4
Tm9uQnJlYWtzLSRDTV07IgorICAgICIkQ1AgWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRF
WCBbJExCOE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJElTIFskTEI4Tm9uQnJlYWtzLSRDTV07Igor
ICAgICIkU1kgWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIlskQ0wgJENQICRFWCAkSVMgJFNZ
XSAkQ00rICRTUCsgJENNKiAkT1A7ICIKKyAgICAiJENNKiAkQ0FOX0NNICRTUCogJENNKiAkT1A7
IgorICAgICIkQ0FOVF9DTSAkU1AqICRDTSogJE9QOyIKKyAgICAiJEFMX0ZPTExPVz8gJENNKyAk
U1AgJFNQKiAkQ00qICRPUDsiCisgICAgIiRBTF9GT0xMT1dfTk9DTSAkQ00rICRTUCsgJENNKiAk
T1A7IgorICAgICIkQ00qICRBTF9GT0xMT1dfQ00gJENNKyAkU1ArICRDTSogJE9QOyIKKyAgICAi
JFNZICRDTSAkU1ArICRPUDsiCisgICAgIiRDTSogJE9QICRTUCogJENNKiAkUVU7IgorICAgICIk
Q00qICROUyAkU1AqICRDTSogKCRDTCB8ICRDUCk7IgorICAgICIkQ00qICRCMiAkU1AqICRDTSog
JEIyOyIKKyAgICAiJENNKiAkUVUgJENNKiAkQ0FOX0NNOyIKKyAgICAiJENNKiAkUVUgJExCMThO
b25CcmVha3M7IgorICAgICIkQ00qICRDQU5fQ00gJENNKiAkUVU7IgorICAgICIkQ0FOVF9DTSAk
Q00qICRRVTsiCisgICAgIiRDTSogKCRCQSB8ICRIWSB8ICROUykgJENNKiBbJExCMjBOb25CcmVh
a3MtJENNXTsiCisgICAgIiRDTSogWyRMQjIwTm9uQnJlYWtzLSRDTV0gJENNKiAkQkI7IgorICAg
ICJbXiRDQl0gJENNKiAkQkI7IgorICAgICJbXiRDQl0gJENNKiAoJEhZIHwgJEJBKSAkQ00qICRI
TDsiCisgICAgIiRDTSogJElOICRDTSogKCRBTFBsdXMgfCAkSEwpOyIKKyAgICAiJENNKiAkSU4g
JENNKiAkSUQ7IgorICAgICIkQ00qICRJTiAkQ00qICRJTjsiCisgICAgIiRDTSogJElOICRDTSog
JE5VOyIKKyAgICAiJENNKiAkUE8gJENNKiAkSUQ7IgorICAgICIkQ00qICROVSAkQ00qICgkQUxQ
bHVzIHwgJEhMKTsiCisgICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSogJE5VOyIKKyAgICAi
JENNKiAkSUQgJENNKiAkUFI7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQUjsi
CisgICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSogJFBPOyIKKyAgICAiKCRDTSogKCRQUiB8
ICRQTykpPyAoJENNKiAoJENMIHwgJENQKSk/ICgkQ00qICgkTlUgfCAkSVMgfCAkU1kpKSogJENN
KiAkTlUgKCRDTSogKCRPUCB8ICRIWSkpPyAoJENNKiAoJFBSIHwgJFBPKSk/OyIKKyAgICAiJENN
KiAoJEgzIHwgJEgyIHwgJEpWIHwgJEpMKSAkQ00qICRKTDsiCisgICAgIiRDTSogKCRKVCB8ICRK
VikgJENNKiAoJEgyIHwgJEpWKTsiCisgICAgIiRDTSogJEpUICRDTSogKCRIMyB8ICRKVCk7Igor
ICAgICIkQ00qICRJTiAkQ00qICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpOyIKKyAgICAi
JENNKiAkUE8gJENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCisgICAgIiRDTSog
KCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCkgJENNKiAkUFI7IgorICAgICIkQ00qICgkQUxQ
bHVzIHwgJEhMKSAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCisgICAgIiRDTSogKCRBTFBsdXMgfCAk
SEwpICRDTSogJElTOyIKKyAgICAiJENNKiAkT1AgJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSk7
IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMIHwgJE5VKSAkQ00qICRDUDsiCisjaWYgQURESVRJ
T05BTF9FTU9KSV9TVVBQT1JUCisgICAgIiRDTSogJFJJICRDTSogJFJJOyIKKyNlbmRpZgorICAg
ICIkRW1vamlNb2RzICRFbW9qaVZhcj8gJEVtb2ppRm9yTW9kczsiOworCitzdGF0aWMgY29uc3Qg
Y2hhciogdWF4MTRTYWZlRm9yd2FyZCA9CisgICAgIiEhc2FmZV9mb3J3YXJkOyIKKyAgICAiWyRD
TSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRTUCAkZGljdGlvbmFyeV0rIFteJENN
ICRPUCAkUVUgJENMICRDUCAkQjIgJFBSICRIWSAkQkEgJGRpY3Rpb25hcnldOyIKKyAgICAiJGRp
Y3Rpb25hcnkgJGRpY3Rpb25hcnk7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0U2FmZVJl
dmVyc2UgPQorICAgICIhIXNhZmVfcmV2ZXJzZTsiCisgICAgIiRDTSsgW14kQ00gJEJLICRDUiAk
TEYgJE5MICRaVyAkU1BdOyIKKyAgICAiJENNKyAkU1AgLyAuOyIKKyAgICAiJFNQKyAkQ00qICRP
UDsiCisgICAgIiRTUCsgJENNKiAkUVU7IgorICAgICIkU1ArICRDTSogKCRDTCB8ICRDUCk7Igor
ICAgICIkU1ArICRDTSogJEIyOyIKKyAgICAiJENNKiAoJEhZIHwgJEJBKSAkQ00qICRITDsiCisg
ICAgIigkQ00qICgkSVMgfCAkU1kpKSsgJENNKiAkTlU7IgorICAgICIoJENMIHwgJENQKSAkQ00q
ICgkTlUgfCAkSVMgfCAkU1kpOyIKKyAgICAiJGRpY3Rpb25hcnkgJGRpY3Rpb25hcnk7IjsKKwor
c3RhdGljIFN0cmluZyBtYXBMaW5lSXRlcmF0b3JNb2RlVG9SdWxlcyhMaW5lQnJlYWtJdGVyYXRv
ck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJ1bGVzQnVpbGRl
cjsKKyAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0UHJvbG9ndWUpOworICAgIHJ1bGVzQnVp
bGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0JlZm9yZSk7CisgICAgc3dpdGNoIChtb2RlKSB7
CisgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNDoKKyAgICAgICAgcnVsZXNCdWls
ZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Q0pLIDogdWF4
MTRBc3NpZ25tZW50c0N1c3RvbURlZmF1bHROb25DSkspOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2U6CisgICAgICAgIHJ1bGVzQnVpbGRl
ci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTG9vc2VDSksgOiB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tTG9vc2VOb25DSkspOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExp
bmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0Tm9ybWFsOgorICAgICAgICBydWxlc0J1aWxkZXIuYXBw
ZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbENKSyA6IHVheDE0QXNzaWdu
bWVudHNDdXN0b21Ob3JtYWxOb25DSkspOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVC
cmVha0l0ZXJhdG9yTW9kZVVBWDE0U3RyaWN0OgorICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5k
KGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSyA6IHVheDE0QXNzaWdubWVu
dHNDdXN0b21TdHJpY3ROb25DSkspOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcnVsZXNC
dWlsZGVyLmFwcGVuZCh1YXgxNEFzc2lnbm1lbnRzQWZ0ZXIpOworICAgIHJ1bGVzQnVpbGRlci5h
cHBlbmQodWF4MTRGb3J3YXJkKTsKKyAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0UmV2ZXJz
ZSk7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVGb3J3YXJkKTsKKyAgICBydWxl
c0J1aWxkZXIuYXBwZW5kKHVheDE0U2FmZVJldmVyc2UpOworICAgIHJldHVybiBydWxlc0J1aWxk
ZXIudG9TdHJpbmcoKTsKK30KKworLy8gUmVjb2duaXplIEJDUDQ3IGNvbXBsaWFudCBwcmltYXJ5
IGxhbmd1YWdlIHZhbHVlcyBvZiAnemgnLCAnamEnLCAna28nCisvLyAoaW4gYW55IGNvbWJpbmF0
aW9uIG9mIGNhc2UpLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IHN1YnRhZ3MuIERvbid0CisvLyBy
ZWNvZ25pemUgMy1sZXR0ZXIgdmFyaWFudHMgJ2NoaScvJ3pobycsICdqcG4nLCBvciAna29yJyBz
aW5jZSBCQ1A0NworLy8gcmVxdWlyZXMgdXNlIG9mIHNob3J0ZXN0IGxhbmd1YWdlIHRhZy4KK2Jv
b2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCit7CisgICAgc2l6ZV90
IGxlbmd0aCA9IGxvY2FsZS5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoIDwgMikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGF1dG8gYzEgPSBsb2NhbGVbMF07CisgICAgYXV0byBjMiA9IGxv
Y2FsZVsxXTsKKyAgICBhdXRvIGMzID0gbGVuZ3RoID09IDIgPyAwIDogbG9jYWxlWzJdOworICAg
IGlmICghYzMgfHwgYzMgPT0gJy0nIHx8IGMzID09ICdfJyB8fCBjMyA9PSAnQCcpIHsKKyAgICAg
ICAgaWYgKGMxID09ICd6JyB8fCBjMSA9PSAnWicpCisgICAgICAgICAgICByZXR1cm4gYzIgPT0g
J2gnIHx8IGMyID09ICdIJzsKKyAgICAgICAgaWYgKGMxID09ICdqJyB8fCBjMSA9PSAnSicpCisg
ICAgICAgICAgICByZXR1cm4gYzIgPT0gJ2EnIHx8IGMyID09ICdBJzsKKyAgICAgICAgaWYgKGMx
ID09ICdrJyB8fCBjMSA9PSAnSycpCisgICAgICAgICAgICByZXR1cm4gYzIgPT0gJ28nIHx8IGMy
ID09ICdPJzsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitUZXh0QnJlYWtJdGVyYXRv
ciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKK3sKKyAgICBVQnJlYWtJdGVyYXRv
ciogdWJya0l0ZXI7CisgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwor
ICAgIGJvb2wgbG9jYWxlSXNFbXB0eSA9IGxvY2FsZS5pc0VtcHR5KCk7CisgICAgaWYgKG1vZGUg
PT0gTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQpCisgICAgICAgIHVicmtJdGVyID0gdWJya19v
cGVuKFVCUktfTElORSwgbG9jYWxlSXNFbXB0eSA/IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgp
IDogbG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7CisgICAgICAgIGF1dG8g
cnVsZXMgPSBtYXBMaW5lSXRlcmF0b3JNb2RlVG9SdWxlcyhtb2RlLCBpc0NKSyk7CisgICAgICAg
IHVicmtJdGVyID0gdWJya19vcGVuUnVsZXMoU3RyaW5nVmlldyhydWxlcykudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIHJ1bGVzLmxlbmd0aCgpLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3Rh
dHVzKTsKKyAgICB9CisgICAgLy8gbG9jYWxlIGNvbWVzIGZyb20gYSB3ZWIgcGFnZSBhbmQgaXQg
Y2FuIGJlIGludmFsaWQsIGxlYWRpbmcgSUNVCisgICAgLy8gdG8gZmFpbCwgaW4gd2hpY2ggY2Fz
ZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgIGlmICghbG9jYWxlSXNF
bXB0eSAmJiBVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgb3BlblN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICAgICAgdWJya0l0ZXIgPSB1YnJrX29wZW4oVUJSS19MSU5FLCBjdXJy
ZW50VGV4dEJyZWFrTG9jYWxlSUQoKSwgMCwgMCwgJm9wZW5TdGF0dXMpOworICAgIH0KKworICAg
IGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX29w
ZW4gZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRleHRCcmVha0l0
ZXJhdG9yKj4odWJya0l0ZXIpOworfQorCit2b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRvcikKK3sKKyAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0
ZXIgPSByZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpOworICAgIEFT
U0VSVCh1YnJrSXRlcik7CisgICAgdWJya19jbG9zZSh1YnJrSXRlcik7CisgICAgaXRlcmF0b3Ig
PSBudWxscHRyOworfQorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIG5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3I7CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQW5kU3dhcE5v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqIGV4cGVjdGVk
LCBUZXh0QnJlYWtJdGVyYXRvciogbmV3VmFsdWUpCit7CisgICAgcmV0dXJuIFdURjo6d2Vha0Nv
bXBhcmVBbmRTd2FwKCZub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLCBleHBlY3RlZCwg
bmV3VmFsdWUpOworfQorCitOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIG1faXRl
cmF0b3IgPSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOworCisgICAgYm9vbCBjcmVh
dGVkSXRlcmF0b3IgPSBtX2l0ZXJhdG9yICYmIGNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcihtX2l0ZXJhdG9yLCAwKTsKKyAgICBpZiAoIWNyZWF0ZWRJdGVyYXRv
cikKKyAgICAgICAgbV9pdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RF
Uik7CisgICAgaWYgKCFtX2l0ZXJhdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2l0ZXJh
dG9yID0gc2V0VGV4dEZvckl0ZXJhdG9yKCptX2l0ZXJhdG9yLCBzdHJpbmcpOworfQorCitOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcigpCit7CisgICAgaWYgKCFjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3IoMCwgbV9pdGVyYXRvcikpCisgICAgICAgIHVicmtfY2xvc2UocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KG1faXRlcmF0b3IpKTsKK30KKworCisvLyBJdGVyYXRvciBp
bXBsZW1lbmF0aW9uLgorCitpbnQgdGV4dEJyZWFrRmlyc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX2ZpcnN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFr
SXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitpbnQgdGV4dEJyZWFrTGFzdChUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IpCit7CisgICAgcmV0dXJuIHVicmtfbGFzdChyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKK30KKworaW50IHRleHRCcmVha05leHQo
VGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX25leHQocmVp
bnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9CisKK2ludCB0ZXh0
QnJlYWtQcmV2aW91cyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCit7CisgICAgcmV0dXJu
IHVicmtfcHJldmlvdXMocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9y
KSk7Cit9CisKK2ludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yLCBpbnQgcG9zKQoreworICAgIHJldHVybiB1YnJrX3ByZWNlZGluZyhyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3MpOworfQorCitpbnQgdGV4dEJyZWFr
Rm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvcykKK3sKKyAgICBy
ZXR1cm4gdWJya19mb2xsb3dpbmcocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0
ZXJhdG9yKSwgcG9zKTsKK30KKworaW50IHRleHRCcmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX2N1cnJlbnQocmVpbnRlcnByZXRfY2Fz
dDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9CisKK2Jvb2wgaXNUZXh0QnJlYWsoVGV4
dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zaXRpb24pCit7CisgICAgcmV0dXJuIHVi
cmtfaXNCb3VuZGFyeShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3Ip
LCBwb3NpdGlvbik7Cit9CisKK2Jvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKK3sKKyAgICBpbnQgcnVsZVN0YXR1cyA9IHVicmtfZ2V0UnVsZVN0YXR1cyhy
ZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKKyAgICByZXR1cm4g
cnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRfTk9ORTsKK30KKwordW5zaWduZWQgbnVtR3JhcGhlbWVD
bHVzdGVycyhjb25zdCBTdHJpbmcmIHMpCit7CisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0g
cy5sZW5ndGgoKTsKKyAgICAKKyAgICBpZiAoIXN0cmluZ0xlbmd0aCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAvLyBUaGUgb25seSBMYXRpbi0xIEV4dGVuZGVkIEdyYXBoZW1lIENsdXN0ZXIg
aXMgQ1IgTEYKKyAgICBpZiAocy5pczhCaXQoKSAmJiAhcy5jb250YWlucygnXHInKSkKKyAgICAg
ICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKKworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IgaXQocyk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsK
KworICAgIHVuc2lnbmVkIG51bSA9IDA7CisgICAgd2hpbGUgKHRleHRCcmVha05leHQoaXQpICE9
IFRleHRCcmVha0RvbmUpCisgICAgICAgICsrbnVtOworICAgIHJldHVybiBudW07Cit9CisKK3Vu
c2lnbmVkIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYg
cywgdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycykKK3sKKyAgICB1bnNpZ25lZCBzdHJpbmdM
ZW5ndGggPSBzLmxlbmd0aCgpOworCisgICAgaWYgKCFzdHJpbmdMZW5ndGgpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVz
dGVyIGlzIENSIExGCisgICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCisg
ICAgICAgIHJldHVybiBzdGQ6Om1pbihzdHJpbmdMZW5ndGgsIG51bUdyYXBoZW1lQ2x1c3RlcnMp
OworCisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChzKTsKKyAgICBpZiAo
IWl0KQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNs
dXN0ZXJzKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0
ZXJzOyArK2kpIHsKKyAgICAgICAgaWYgKHRleHRCcmVha05leHQoaXQpID09IFRleHRCcmVha0Rv
bmUpCisgICAgICAgICAgICByZXR1cm4gc3RyaW5nTGVuZ3RoOworICAgIH0KKyAgICByZXR1cm4g
dGV4dEJyZWFrQ3VycmVudChpdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNDUzNDY4ZmI4Y2MyM2Q2
M2ZhMmMzYTM0ODUxNjA0YjY2YjU4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTAsMCArMSwyMjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZm5kZWYgVGV4dEJyZWFrSXRlcmF0b3JfaAorI2RlZmluZSBUZXh0QnJlYWtJdGVyYXRv
cl9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBUZXh0QnJlYWtJ
dGVyYXRvcjsKKworLy8gTm90ZTogVGhlIHJldHVybmVkIGl0ZXJhdG9yIGlzIGdvb2Qgb25seSB1
bnRpbCB5b3UgZ2V0IGFub3RoZXIgaXRlcmF0b3IsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IuCisKK2VudW0gTGluZUJyZWFrSXRlcmF0b3JNb2RlIHsKKyAg
ICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVV
QVgxNExvb3NlLAorICAgIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0Tm9ybWFsLAorICAgIExp
bmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0U3RyaWN0LAorfTsKKworLy8gVGhpcyBpcyBzaW1pbGFy
IHRvIGNoYXJhY3RlciBicmVhayBpdGVyYXRvciBpbiBtb3N0IGNhc2VzLCBidXQgaXMgc3ViamVj
dCB0bworLy8gcGxhdGZvcm0gVUkgY29udmVudGlvbnMuIE9uZSBub3RhYmxlIGV4YW1wbGUgd2hl
cmUgdGhpcyBjYW4gYmUgZGlmZmVyZW50CisvLyBmcm9tIGNoYXJhY3RlciBicmVhayBpdGVyYXRv
ciBpcyBUaGFpIHByZXBlbmQgY2hhcmFjdGVycywgc2VlIGJ1ZyAyNDM0Mi4KKy8vIFVzZSB0aGlz
IGZvciBpbnNlcnRpb24gcG9pbnQgYW5kIHNlbGVjdGlvbiBtYW5pcHVsYXRpb25zLgorV1RGX0VY
UE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0
cmluZ1ZpZXcpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOworV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0
ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CisKK1dURl9FWFBPUlRf
UFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmlu
Z1ZpZXcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250
ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSwg
Ym9vbCBpc0NKSyk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWxlYXNlTGluZUJyZWFrSXRl
cmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqKTsKK1RleHRCcmVha0l0ZXJhdG9yKiBvcGVuTGluZUJy
ZWFrSXRlcmF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSwgYm9vbCBpc0NKSyk7Cit2b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFr
SXRlcmF0b3IqJik7CisKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrRmlyc3QoVGV4
dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrTGFzdChU
ZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtOZXh0
KFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha1By
ZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRC
cmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQg
dGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKK1dURl9FWFBPUlRf
UFJJVkFURSBpbnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiwg
aW50KTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJ
dGVyYXRvciopOworCitjb25zdCBpbnQgVGV4dEJyZWFrRG9uZSA9IC0xOworCitXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBpc0NKS0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKworY2xhc3Mg
TGF6eUxpbmVCcmVha0l0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0
b3IoKQorICAgICAgICA6IG1faXRlcmF0b3IobnVsbHB0cikKKyAgICAgICAgLCBtX2NhY2hlZFBy
aW9yQ29udGV4dChudWxscHRyKQorICAgICAgICAsIG1fbW9kZShMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNCkKKyAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCgwKQorICAgICAg
ICAsIG1faXNDSksoZmFsc2UpCisgICAgeworICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOwor
ICAgIH0KKworICAgIExhenlMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmcgc3RyaW5nLCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZSA9IEF0b21pY1N0cmluZygpLCBMaW5lQnJlYWtJdGVyYXRvck1v
ZGUgbW9kZSA9IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICA6IG1fc3RyaW5n
KHN0cmluZykKKyAgICAgICAgLCBtX2xvY2FsZShsb2NhbGUpCisgICAgICAgICwgbV9pdGVyYXRv
cihudWxscHRyKQorICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0KG51bGxwdHIpCisgICAg
ICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgo
MCkKKyAgICB7CisgICAgICAgIHJlc2V0UHJpb3JDb250ZXh0KCk7CisgICAgICAgIG1faXNDSksg
PSBpc0NKS0xvY2FsZShsb2NhbGUpOworICAgIH0KKworICAgIH5MYXp5TGluZUJyZWFrSXRlcmF0
b3IoKQorICAgIHsKKyAgICAgICAgaWYgKG1faXRlcmF0b3IpCisgICAgICAgICAgICByZWxlYXNl
TGluZUJyZWFrSXRlcmF0b3IobV9pdGVyYXRvcik7CisgICAgfQorCisgICAgU3RyaW5nIHN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgYm9vbCBpc0xvb3NlQ0pLTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDSksgJiYgbV9tb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9k
ZVVBWDE0TG9vc2U7IH0KKworICAgIFVDaGFyIGxhc3RDaGFyYWN0ZXIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkg
PT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7
CisgICAgICAgIHJldHVybiBtX3ByaW9yQ29udGV4dFsxXTsKKyAgICB9CisKKyAgICBVQ2hhciBz
ZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NF
UlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0
b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIHJldHVybiBtX3By
aW9yQ29udGV4dFswXTsKKyAgICB9CisKKyAgICB2b2lkIHNldFByaW9yQ29udGV4dChVQ2hhciBs
YXN0LCBVQ2hhciBzZWNvbmRUb0xhc3QpCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChX
VEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91
bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAgICAgICAgbV9wcmlvckNvbnRleHRb
MF0gPSBzZWNvbmRUb0xhc3Q7CisgICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKKyAg
ICB9CisKKyAgICB2b2lkIHVwZGF0ZVByaW9yQ29udGV4dChVQ2hhciBsYXN0KQorICAgIHsKKyAg
ICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0g
MiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Cisg
ICAgICAgIG1fcHJpb3JDb250ZXh0WzBdID0gbV9wcmlvckNvbnRleHRbMV07CisgICAgICAgIG1f
cHJpb3JDb250ZXh0WzFdID0gbGFzdDsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0UHJpb3JDb250
ZXh0KCkKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9w
cmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29u
dGV4dF9sZW5ndGgpOworICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IDA7CisgICAgICAgIG1f
cHJpb3JDb250ZXh0WzFdID0gMDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRM
ZW5ndGgoKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3Ro
ID0gMDsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29u
dGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xl
bmd0aCk7CisgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFsxXSkgeworICAgICAgICAgICAgKytw
cmlvckNvbnRleHRMZW5ndGg7CisgICAgICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMF0pCisg
ICAgICAgICAgICAgICAgKytwcmlvckNvbnRleHRMZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHByaW9yQ29udGV4dExlbmd0aDsKKyAgICB9CisKKyAgICAvLyBPYnRhaW4gdGV4dCBi
cmVhayBpdGVyYXRvciwgcG9zc2libHkgcHJldmlvdXNseSBjYWNoZWQsIHdoZXJlIHRoaXMgaXRl
cmF0b3IgaXMgKG9yIGhhcyBiZWVuKQorICAgIC8vIGluaXRpYWxpemVkIHRvIHVzZSB0aGUgcHJl
dmlvdXNseSBzdG9yZWQgc3RyaW5nIGFzIHRoZSBwcmltYXJ5IGJyZWFraW5nIGNvbnRleHQgYW5k
IHVzaW5nCisgICAgLy8gcHJldmlvdXNseSBzdG9yZWQgcHJpb3IgY29udGV4dCBpZiBub24tZW1w
dHkuCisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGdldCh1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5n
dGgpCisgICAgeworICAgICAgICBBU1NFUlQocHJpb3JDb250ZXh0TGVuZ3RoIDw9IHByaW9yQ29u
dGV4dENhcGFjaXR5KTsKKyAgICAgICAgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCA9IHByaW9y
Q29udGV4dExlbmd0aCA/ICZtX3ByaW9yQ29udGV4dFtwcmlvckNvbnRleHRDYXBhY2l0eSAtIHBy
aW9yQ29udGV4dExlbmd0aF0gOiAwOworICAgICAgICBpZiAoIW1faXRlcmF0b3IpIHsKKyAgICAg
ICAgICAgIG1faXRlcmF0b3IgPSBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IobV9zdHJpbmcsIG1f
bG9jYWxlLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgbV9tb2RlLCBtX2lzQ0pL
KTsKKyAgICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0ID0gcHJpb3JDb250ZXh0OworICAg
ICAgICAgICAgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGggPSBwcmlvckNvbnRleHRMZW5ndGg7
CisgICAgICAgIH0gZWxzZSBpZiAocHJpb3JDb250ZXh0ICE9IG1fY2FjaGVkUHJpb3JDb250ZXh0
IHx8IHByaW9yQ29udGV4dExlbmd0aCAhPSBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCkgewor
ICAgICAgICAgICAgcmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3IobV9zdHJpbmcsIG1fbG9j
YWxlLCBtX21vZGUpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmdldChwcmlvckNvbnRleHRM
ZW5ndGgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2l0ZXJhdG9yOworICAgIH0KKwor
ICAgIHZvaWQgcmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQorICAg
IHsKKyAgICAgICAgaWYgKG1faXRlcmF0b3IpCisgICAgICAgICAgICByZWxlYXNlTGluZUJyZWFr
SXRlcmF0b3IobV9pdGVyYXRvcik7CisgICAgICAgIG1fc3RyaW5nID0gc3RyaW5nOworICAgICAg
ICBtX2xvY2FsZSA9IGxvY2FsZTsKKyAgICAgICAgbV9pdGVyYXRvciA9IG51bGxwdHI7CisgICAg
ICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgbV9tb2RlID0gbW9k
ZTsKKyAgICAgICAgbV9pc0NKSyA9IGlzQ0pLTG9jYWxlKGxvY2FsZSk7CisgICAgICAgIG1fY2Fj
aGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHByaW9yQ29udGV4dENhcGFjaXR5ID0gMjsKKyAgICBTdHJpbmcgbV9z
dHJpbmc7CisgICAgQXRvbWljU3RyaW5nIG1fbG9jYWxlOworICAgIFRleHRCcmVha0l0ZXJhdG9y
KiBtX2l0ZXJhdG9yOworICAgIGNvbnN0IFVDaGFyKiBtX2NhY2hlZFByaW9yQ29udGV4dDsKKyAg
ICBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbV9tb2RlOworICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJp
b3JDb250ZXh0TGVuZ3RoOworICAgIFVDaGFyIG1fcHJpb3JDb250ZXh0W3ByaW9yQ29udGV4dENh
cGFjaXR5XTsKKyAgICBib29sIG1faXNDSks7Cit9OworCisvLyBJdGVyYXRlcyBvdmVyICJleHRl
bmRlZCBncmFwaGVtZSBjbHVzdGVycyIsIGFzIGRlZmluZWQgaW4gVUFYICMyOS4KKy8vIE5vdGUg
dGhhdCBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGxlc3Mgc29waGlzdGljYXRlZCAt
IGUuZy4gSUNVIHByaW9yIHRvCisvLyB2ZXJzaW9uIDQuMCBvbmx5IHN1cHBvcnRzICJsZWdhY3kg
Z3JhcGhlbWUgY2x1c3RlcnMiLgorLy8gVXNlIHRoaXMgZm9yIGdlbmVyYWwgdGV4dCBwcm9jZXNz
aW5nLCBlLmcuIHN0cmluZyB0cnVuY2F0aW9uLgorCitjbGFzcyBOb25TaGFyZWRDaGFyYWN0ZXJC
cmVha0l0ZXJhdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yKTsKK3B1YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgfk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKTsKKworICAgIG9wZXJhdG9y
IFRleHRCcmVha0l0ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KKworcHJp
dmF0ZToKKyAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKK307CisKKy8vIENvdW50
cyB0aGUgbnVtYmVyIG9mIGdyYXBoZW1lIGNsdXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWlyIG9yIGEg
c2VxdWVuY2UKKy8vIG9mIGEgbm9uLWNvbWJpbmluZyBjaGFyYWN0ZXIgYW5kIGZvbGxvd2luZyBj
b21iaW5pbmcgY2hhcmFjdGVycyBpcworLy8gY291bnRlZCBhcyAxIGdyYXBoZW1lIGNsdXN0ZXIu
CitXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyhjb25zdCBT
dHJpbmcmKTsKKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdoaWNoIHdpbGwg
YmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCisvLyB0aGUgc3BlY2lmaWVkIGdyYXBoZW1lIGNsdXN0
ZXIgbGVuZ3RoLgorV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bUNoYXJhY3RlcnNJbkdy
YXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkKTsKKworfQorCit1c2lu
ZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9yTW9kZTsKK3VzaW5nIFdURjo6TGluZUJyZWFrSXRlcmF0
b3JNb2RlVUFYMTQ7Cit1c2luZyBXVEY6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjsKK3VzaW5nIFdU
Rjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKK3VzaW5nIFdURjo6VGV4dEJyZWFr
RG9uZTsKK3VzaW5nIFdURjo6VGV4dEJyZWFrSXRlcmF0b3I7CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Y2Q0NTU5ZGQ2Y2I1ZTA5Y2I3Y2U0M2ZhOGE2YWQ2OTI5MTY3ZjAxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJu
YWxJQ1VfaAorI2RlZmluZSBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVX2gKKworLy8gRklY
TUU6IE5vdyB0aGF0IHRoaXMgaGFuZGxlcyBsb2NhbGVzIGZvciBJQ1UsIG5vdCBqdXN0IGZvciB0
ZXh0IGJyZWFraW5nLAorLy8gdGhpcyBmaWxlIGFuZCB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlv
biBmaWxlcyBzaG91bGQgYmUgcmVuYW1lZC4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9FWFBP
UlRfUFJJVkFURSBjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKTsKK2NvbnN0IGNo
YXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOworCit9CisKK3VzaW5nIFdURjo6Y3VycmVu
dFNlYXJjaExvY2FsZUlEOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDA1Njg2OWYxNDVkZDc2ODFkZmViYjY4ODg5NWJjMTk1NTFlMTNiYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VFZmwuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxw
IFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZV
U0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciog
Y3VycmVudFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0
ZW0gbG9jYWxlLgorICAgIHJldHVybiAiIjsKK30KKworY29uc3QgY2hhciogY3VycmVudFRleHRC
cmVha0xvY2FsZUlEKCkKK3sKKyAgICByZXR1cm4gImVuX3VzIjsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0
ay5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVR3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWU1YTA1ZmE0OTE5NWZiMzBiZjY5ZGVkNTYyZDU0M2I4
YjYxMDE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7
CisgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7
Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgLy8g
RklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2FsZS4KKyAgICByZXR1cm4gImVuX3VzIjsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43Mzg4ZmRiZjdjYTQ5YmE2NTk4OTQzNzdmMmIxYzU2YWRhZDBkZWNhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVVGV4
dFByb3ZpZGVyLmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8c3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBSZWxvY2F0ZSBwb2ludGVyIGZyb20gc291cmNlIGlu
dG8gZGVzdGluYXRpb24gYXMgcmVxdWlyZWQuCitzdGF0aWMgaW5saW5lIHZvaWQgZml4UG9pbnRl
cihjb25zdCBVVGV4dCogc291cmNlLCBVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqJiBw
b2ludGVyKQoreworICAgIGlmIChwb2ludGVyID49IHNvdXJjZS0+cEV4dHJhICYmIHBvaW50ZXIg
PCBzdGF0aWNfY2FzdDxjaGFyKj4oc291cmNlLT5wRXh0cmEpICsgc291cmNlLT5leHRyYVNpemUp
IHsKKyAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSBleHRyYSBidWZmZXIuCisg
ICAgICAgIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24tPnBFeHRyYSkg
KyAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KHNvdXJjZS0+cEV4dHJhKSk7CisgICAgfSBlbHNlIGlmIChwb2ludGVyID49IHNvdXJj
ZSAmJiBwb2ludGVyIDwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlKSArIHNv
dXJjZS0+c2l6ZU9mU3RydWN0KSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3Vy
Y2UgdGV4dCBzdHJ1Y3R1cmUsIGJ1dCBub3Qgc291cmNlIGV4dHJhIGJ1ZmZlci4KKyAgICAgICAg
cG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uKSArIChzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihzb3VyY2UpKTsKKyAgICB9Cit9CisKK1VUZXh0KiB1VGV4dENsb25lSW1wbChVVGV4dCogZGVz
dGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0
YXR1cykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFkZWVwKTsKKyAgICBpZiAoVV9GQUlM
VVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpbnQzMl90IGV4dHJh
U2l6ZSA9IHNvdXJjZS0+ZXh0cmFTaXplOworICAgIGRlc3RpbmF0aW9uID0gdXRleHRfc2V0dXAo
ZGVzdGluYXRpb24sIGV4dHJhU2l6ZSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0
dXMpKQorICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CisgICAgdm9pZCogZXh0cmFOZXcgPSBk
ZXN0aW5hdGlvbi0+cEV4dHJhOworICAgIGludDMyX3QgZmxhZ3MgPSBkZXN0aW5hdGlvbi0+Zmxh
Z3M7CisgICAgaW50IHNpemVUb0NvcHkgPSBzdGQ6Om1pbihzb3VyY2UtPnNpemVPZlN0cnVjdCwg
ZGVzdGluYXRpb24tPnNpemVPZlN0cnVjdCk7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIHNpemVUb0NvcHkpOworICAgIGRlc3RpbmF0aW9uLT5wRXh0cmEgPSBleHRyYU5ldzsKKyAg
ICBkZXN0aW5hdGlvbi0+ZmxhZ3MgPSBmbGFnczsKKyAgICBtZW1jcHkoZGVzdGluYXRpb24tPnBF
eHRyYSwgc291cmNlLT5wRXh0cmEsIGV4dHJhU2l6ZSk7CisgICAgZml4UG9pbnRlcihzb3VyY2Us
IGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+Y29udGV4dCk7CisgICAgZml4UG9pbnRlcihzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cCk7CisgICAgZml4UG9pbnRlcihzb3VyY2Us
IGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbi0+cSk7CisgICAgQVNTRVJUKCFkZXN0aW5hdGlvbi0+
cik7CisgICAgY29uc3Qgdm9pZCogY2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IHZv
aWQqPihkZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyk7CisgICAgZml4UG9pbnRlcihzb3VyY2Us
IGRlc3RpbmF0aW9uLCBjaHVua0NvbnRlbnRzKTsKKyAgICBkZXN0aW5hdGlvbi0+Y2h1bmtDb250
ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4oY2h1bmtDb250ZW50cyk7CisgICAgcmV0
dXJuIGRlc3RpbmF0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjBhZjk5NzIzOTBkZDAxYmMyM2Vi
MDJmNmFjZjkyYzU0ODkzNDc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9pY3UvVVRleHRQcm92aWRlci5oCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBVVGV4dFByb3ZpZGVyX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlcl9oCisKKyNpbmNsdWRl
IDx1bmljb2RlL3V0ZXh0Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitlbnVtIGNsYXNzIFVUZXh0
UHJvdmlkZXJDb250ZXh0IHsKKyAgICBOb0NvbnRleHQsCisgICAgUHJpb3JDb250ZXh0LAorICAg
IFByaW1hcnlDb250ZXh0Cit9OworCitpbmxpbmUgVVRleHRQcm92aWRlckNvbnRleHQgdVRleHRQ
cm92aWRlckNvbnRleHQoY29uc3QgVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVC
b29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0ZXh0LT5iIHx8IG5hdGl2ZUluZGV4ID4gdGV4dC0+
YikKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dDsK
KyAgICBpZiAobmF0aXZlSW5kZXggPT0gdGV4dC0+YikKKyAgICAgICAgcmV0dXJuIGZvcndhcmQg
PyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpb3JDb250ZXh0OworICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJp
b3JDb250ZXh0OworfQorCitpbmxpbmUgdm9pZCBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQ
cm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVVRleHRGdW5jcyogZnVuY3MsIGNvbnN0IHZvaWQq
IHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQg
cHJpb3JDb250ZXh0TGVuZ3RoKQoreworICAgIHRleHQtPnBGdW5jcyA9IGZ1bmNzOworICAgIHRl
eHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IDEgPDwgVVRFWFRfUFJPVklERVJfU1RBQkxFX0NIVU5L
UzsKKyAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOworICAgIHRleHQtPnAgPSBzdHJpbmc7Cisg
ICAgdGV4dC0+YSA9IGxlbmd0aDsKKyAgICB0ZXh0LT5xID0gcHJpb3JDb250ZXh0OworICAgIHRl
eHQtPmIgPSBwcmlvckNvbnRleHRMZW5ndGg7Cit9CisKKy8vIFNoYXJlZCBpbXBsZW1lbnRhdGlv
biBmb3IgdGhlIFVUZXh0Q2xvbmUgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4KKworVVRleHQqIHVU
ZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJv
b2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKTsKKworCisvLyBIZWxwZXJzIGZvciB0aGUgVVRl
eHRBY2Nlc3MgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4KKworaW5saW5lIGludDY0X3QgdVRleHRB
Y2Nlc3NQaW5JbmRleChpbnQ2NF90JiBpbmRleCwgaW50NjRfdCBsaW1pdCkKK3sKKyAgICBpZiAo
aW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7CisgICAgZWxzZSBpZiAoaW5kZXggPiBsaW1p
dCkKKyAgICAgICAgaW5kZXggPSBsaW1pdDsKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKK2lubGlu
ZSBib29sIHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZShVVGV4dCogdGV4dCwgaW50NjRf
dCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQsIFVCb29s
JiBpc0FjY2Vzc2libGUpCit7CisgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAgaWYgKG5hdGl2
ZUluZGV4ID49IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPCB0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUlu
ZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVu
ayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJf
dCByYW5nZS4KKyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNl
dCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50
MzJfdD4ob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4
ID49IG5hdGl2ZUxlbmd0aCAmJiB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID09IG5hdGl2ZUxlbmd0
aCkgeworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsK
KyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobmF0aXZlSW5kZXggPiB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDw9IHRleHQtPmNodW5rTmF0aXZl
TGltaXQpIHsKKyAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0OworICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBp
cyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgor
ICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpKTsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZz
ZXQpIDogMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmF0aXZlSW5kZXggPD0gMCAmJiAh
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVRleHRQcm92aWRlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YTBl
MWU4NjRiMjk3MTQ4MWUzMDljNDM1NGU0MzEwNjFiNDVjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApAQCAtMCwwICsx
LDM5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVVGV4
dFByb3ZpZGVyTGF0aW4xLmgiCisKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gTGF0aW4x
IHByb3ZpZGVyCisKK3N0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFDbG9uZShVVGV4dCosIGNvbnN0
IFVUZXh0KiwgVUJvb2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4x
TmF0aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFBY2Nlc3MoVVRl
eHQqLCBpbnQ2NF90LCBVQm9vbCk7CitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUV4dHJhY3Qo
VVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUqKTsK
K3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQq
KTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0
IFVUZXh0KiwgaW50NjRfdCk7CitzdGF0aWMgdm9pZCB1VGV4dExhdGluMUNsb3NlKFVUZXh0Kik7
CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB1VGV4dExhdGluMUZ1bmNzID0gewor
ICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICB1VGV4
dExhdGluMUNsb25lLAorICAgIHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoLAorICAgIHVUZXh0TGF0
aW4xQWNjZXNzLAorICAgIHVUZXh0TGF0aW4xRXh0cmFjdCwKKyAgICBudWxscHRyLAorICAgIG51
bGxwdHIsCisgICAgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZSwKKyAgICB1VGV4dExhdGlu
MU1hcE5hdGl2ZUluZGV4VG9VVEYxNiwKKyAgICB1VGV4dExhdGluMUNsb3NlLAorICAgIG51bGxw
dHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyCit9OworCitzdGF0aWMgVVRleHQqIHVUZXh0
TGF0aW4xQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9v
bCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgQVNTRVJUX1VOVVNFRChkZWVwLCAh
ZGVlcCk7CisKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIFVUZXh0KiByZXN1bHQgPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgc2l6ZW9mKFVD
aGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5LCBzdGF0dXMpOworICAgIGlmIChV
X0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKKyAgICAKKyAg
ICByZXN1bHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IHNvdXJjZS0+cHJvdmlkZXJQcm9wZXJ0aWVz
OworICAgIAorICAgIC8vIFBvaW50IGF0IHRoZSBzYW1lIHBvc2l0aW9uLCBidXQgd2l0aCBhbiBl
bXB0eSBidWZmZXIuCisgICAgcmVzdWx0LT5jaHVua05hdGl2ZVN0YXJ0ID0gc291cmNlLT5jaHVu
a05hdGl2ZVN0YXJ0OworICAgIHJlc3VsdC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHNvdXJjZS0+Y2h1
bmtOYXRpdmVTdGFydDsKKyAgICByZXN1bHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSBzdGF0aWNf
Y2FzdDxpbnQzMl90Pihzb3VyY2UtPmNodW5rTmF0aXZlU3RhcnQpOworICAgIHJlc3VsdC0+Y2h1
bmtPZmZzZXQgPSAwOworICAgIHJlc3VsdC0+Y29udGV4dCA9IHNvdXJjZS0+Y29udGV4dDsKKyAg
ICByZXN1bHQtPmEgPSBzb3VyY2UtPmE7CisgICAgcmVzdWx0LT5wRnVuY3MgPSAmdVRleHRMYXRp
bjFGdW5jczsKKyAgICByZXN1bHQtPmNodW5rQ29udGVudHMgPSAoVUNoYXIqKXJlc3VsdC0+cEV4
dHJhOworICAgIG1lbXNldChjb25zdF9jYXN0PFVDaGFyKj4ocmVzdWx0LT5jaHVua0NvbnRlbnRz
KSwgMCwgc2l6ZW9mKFVDaGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTmF0aXZl
TGVuZ3RoKFVUZXh0KiB1VGV4dCkKK3sKKyAgICByZXR1cm4gdVRleHQtPmE7Cit9CisKK3N0YXRp
YyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCogdVRleHQsIGludDY0X3QgaW5kZXgsIFVC
b29sIGZvcndhcmQpCit7CisgICAgaW50NjRfdCBsZW5ndGggPSB1VGV4dC0+YTsKKworICAgIGlm
IChmb3J3YXJkKSB7CisgICAgICAgIGlmIChpbmRleCA8IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0
ICYmIGluZGV4ID49IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7CisgICAgICAgICAgICAvLyBB
bHJlYWR5IGluc2lkZSB0aGUgYnVmZmVyLiBTZXQgdGhlIG5ldyBvZmZzZXQuCisgICAgICAgICAg
ICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0
LT5jaHVua05hdGl2ZVN0YXJ0KTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9
CisgICAgICAgIGlmIChpbmRleCA+PSBsZW5ndGggJiYgdVRleHQtPmNodW5rTmF0aXZlTGltaXQg
PT0gbGVuZ3RoKSB7CisgICAgICAgICAgICAvLyBPZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCBi
dXQgd2UgY2FuJ3QgZ2V0IGl0LgorICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAg
ICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoaW5kZXggPD0gdVRleHQtPmNodW5rTmF0aXZlTGltaXQgJiYgaW5kZXggPiB1VGV4dC0+Y2h1
bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgLy8gQWxyZWFkeSBpbnNpZGUgdGhlIGJ1ZmZl
ci4gU2V0IHRoZSBuZXcgb2Zmc2V0LgorICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7Cisg
ICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWluZGV4ICYm
ICF1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgLy8gQWxyZWFkeSBhdCB0
aGUgYmVnaW5uaW5nOyBjYW4ndCBnbyBhbnkgZmFydGhlci4KKyAgICAgICAgICAgIHVUZXh0LT5j
aHVua09mZnNldCA9IDA7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAgdVRleHQtPmNodW5rTmF0aXZl
U3RhcnQgPSBpbmRleDsKKyAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB1VGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCArIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5OworICAgICAg
ICBpZiAodVRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBsZW5ndGgpCisgICAgICAgICAgICB1VGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IGxlbmd0aDsKKworICAgICAgICB1VGV4dC0+Y2h1bmtPZmZz
ZXQgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0g
aW5kZXg7CisgICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKKyAg
ICAgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOworCisgICAgICAgIHVU
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdVRleHQtPmNodW5rTmF0aXZlTGltaXQgLSBVVGV4dFdp
dGhCdWZmZXJJbmxpbmVDYXBhY2l0eTsKKyAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZVN0
YXJ0IDwgMCkKKyAgICAgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKKworICAg
ICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVU
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKKyAgICB9CisgICAgdVRleHQtPmNodW5rTGVuZ3RoID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4odVRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB1VGV4dC0+Y2h1
bmtOYXRpdmVTdGFydCk7CisKKyAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2FzdDxV
Q2hhcio+KHVUZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih1
VGV4dC0+Y29udGV4dCkgKyB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHVUZXh0LT5jaHVua0xlbmd0aCkpOworCisgICAgdVRleHQtPm5hdGl2ZUluZGV4aW5n
TGltaXQgPSB1VGV4dC0+Y2h1bmtMZW5ndGg7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3Rh
dGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0KiB1VGV4dCwgaW50NjRfdCBzdGFy
dCwgaW50NjRfdCBsaW1pdCwgVUNoYXIqIGRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LCBVRXJy
b3JDb2RlKiBzdGF0dXMpCit7CisgICAgaW50NjRfdCBsZW5ndGggPSB1VGV4dC0+YTsKKyAgICBp
ZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChkZXN0
Q2FwYWNpdHkgPCAwIHx8ICghZGVzdCAmJiBkZXN0Q2FwYWNpdHkgPiAwKSkgeworICAgICAgICAq
c3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKKyAgICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID4gbGltaXQgfHwgKGxpbWl0IC0gc3Rh
cnQpID4gSU5UMzJfTUFYKSB7CisgICAgICAgICpzdGF0dXMgPSBVX0lOREVYX09VVE9GQk9VTkRT
X0VSUk9SOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoc3RhcnQgPiBsZW5n
dGgpCisgICAgICAgIHN0YXJ0ID0gbGVuZ3RoOworICAgIGlmIChsaW1pdCA+IGxlbmd0aCkKKyAg
ICAgICAgbGltaXQgPSBsZW5ndGg7CisKKyAgICBsZW5ndGggPSBsaW1pdCAtIHN0YXJ0OworICAg
IAorICAgIGlmICghbGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChkZXN0Q2Fw
YWNpdHkgPiAwICYmICFkZXN0KSB7CisgICAgICAgIGludDMyX3QgdHJpbW1lZExlbmd0aCA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCk7CisgICAgICAgIGlmICh0cmltbWVkTGVuZ3RoID4g
ZGVzdENhcGFjaXR5KQorICAgICAgICAgICAgdHJpbW1lZExlbmd0aCA9IGRlc3RDYXBhY2l0eTsK
KworICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
TENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRy
aW1tZWRMZW5ndGgpKTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoIDwgZGVzdENhcGFjaXR5KSB7
CisgICAgICAgIGRlc3RbbGVuZ3RoXSA9IDA7CisgICAgICAgIGlmICgqc3RhdHVzID09IFVfU1RS
SU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkcpCisgICAgICAgICAgICAqc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIH0gZWxzZSBpZiAobGVuZ3RoID09IGRlc3RDYXBhY2l0eSkKKyAgICAgICAg
KnN0YXR1cyA9IFVfU1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkc7CisgICAgZWxzZQorICAg
ICAgICAqc3RhdHVzID0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I7CisKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKK30KKworc3RhdGljIGludDY0X3QgdVRleHRMYXRp
bjFNYXBPZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4dCogdVRleHQpCit7CisgICAgcmV0dXJuIHVU
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICsgdVRleHQtPmNodW5rT2Zmc2V0OworfQorCitzdGF0aWMg
aW50MzJfdCB1VGV4dExhdGluMU1hcE5hdGl2ZUluZGV4VG9VVEYxNihjb25zdCBVVGV4dCogdVRl
eHQsIGludDY0X3QgbmF0aXZlSW5kZXgpCit7CisgICAgQVNTRVJUX1VOVVNFRCh1VGV4dCwgdVRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgPj0gbmF0aXZlSW5kZXgpOworICAgIEFTU0VSVF9VTlVTRUQo
dVRleHQsIG5hdGl2ZUluZGV4IDwgdVRleHQtPmNodW5rTmF0aXZlTGltaXQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQzMl90PihuYXRpdmVJbmRleCk7Cit9CisKK3N0YXRpYyB2b2lkIHVU
ZXh0TGF0aW4xQ2xvc2UoVVRleHQqIHVUZXh0KQoreworICAgIHVUZXh0LT5jb250ZXh0ID0gbnVs
bHB0cjsKK30KKworVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZl
ciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVF
cnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7CisgICAg
ICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICBVVGV4dCogdGV4dCA9IHV0ZXh0X3NldHVwKCZ1dFdpdGhCdWZm
ZXItPnRleHQsIHNpemVvZih1dFdpdGhCdWZmZXItPmJ1ZmZlciksIHN0YXR1cyk7CisgICAgaWYg
KFVfRkFJTFVSRSgqc3RhdHVzKSkgeworICAgICAgICBBU1NFUlQoIXRleHQpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOworICAg
IHRleHQtPmEgPSBsZW5ndGg7CisgICAgdGV4dC0+cEZ1bmNzID0gJnVUZXh0TGF0aW4xRnVuY3M7
CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciopdGV4dC0+cEV4dHJhOworICAgIG1l
bXNldChjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIDAsIHNpemVvZihV
Q2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSk7CisKKyAgICByZXR1cm4gdGV4
dDsKK30KKworCisvLyBMYXRpbjFDb250ZXh0QXdhcmUgcHJvdmlkZXIKKworc3RhdGljIFVUZXh0
KiB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9v
bCwgVUVycm9yQ29kZSopOworc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVO
YXRpdmVMZW5ndGgoVVRleHQqKTsKK3N0YXRpYyBVQm9vbCB1VGV4dExhdGluMUNvbnRleHRBd2Fy
ZUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0TGF0
aW4xQ29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwg
aW50MzJfdCwgVUVycm9yQ29kZSopOworc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVDbG9zZShVVGV4dCopOworCitzdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdGV4dExh
dGluMUNvbnRleHRBd2FyZUZ1bmNzID0geworICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKKyAgICAw
LAorICAgIDAsCisgICAgMCwKKyAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lLAorICAg
IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoLAorICAgIHVUZXh0TGF0aW4xQ29u
dGV4dEF3YXJlQWNjZXNzLAorICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCwKKyAg
ICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAg
IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRy
LAorICAgIG51bGxwdHIKK307CisKK3N0YXRpYyBpbmxpbmUgVVRleHRQcm92aWRlckNvbnRleHQg
dGV4dExhdGluMUNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0
KQoreworICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0
UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7CisgICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVu
dHMgPT0gdGV4dC0+cEV4dHJhID8gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0
IDogVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dDsKK30KKworc3RhdGljIHZvaWQg
dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBp
bnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkK
K3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOworICAg
IGlmIChmb3J3YXJkKSB7CisgICAgICAgIEFTU0VSVChuYXRpdmVJbmRleCA+PSB0ZXh0LT5iICYm
IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoKTsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVT
dGFydCA9IG5hdGl2ZUluZGV4OworICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0
aXZlSW5kZXggKyB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIpOworICAgICAgICBpZiAo
dGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IG5hdGl2ZUxlbmd0aCkKKyAgICAgICAgICAgIHRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKG5hdGl2ZUluZGV4ID4gdGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5n
dGgpOworICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlSW5kZXg7CisgICAg
ICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmV4dHJhU2l6
ZSAvIHNpemVvZihVQ2hhcik7CisgICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IDwg
dGV4dC0+YikKKyAgICAgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5iOwor
ICAgIH0KKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBk
ZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgQVNT
RVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0
ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CisgICAgdGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIHRleHQtPmNodW5rT2Zm
c2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBTdHJpbmdJbXBsOjpj
b3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNf
Y2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgLSB0
ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5rTGVuZ3RoKSk7Cit9CisK
K3N0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4
dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wRXh0cmEpOworICAgIHRleHRMYXRpbjFD
b250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZl
TGVuZ3RoLCBmb3J3YXJkKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2Fy
ZU1vdmVJblByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50
NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNo
dW5rQ29udGVudHMgPT0gdGV4dC0+cSk7CisgICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJbmRl
eCA8IHRleHQtPmIgOiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5VU0VE
KG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0
aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZv
cndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2
ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7CisgICAgdGV4dC0+Y2h1
bmtOYXRpdmVMaW1pdCA9IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0LT5i
OworICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAg
ICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsK
KyAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBv
ZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KKyAgICBBU1NFUlQo
b2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQt
PmNodW5rT2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1
bmtMZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNo
VG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3Qg
bmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtD
b250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7CisgICAgdGV4
dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cSk7Cisg
ICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJ
bmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworc3RhdGljIFVUZXh0KiB1VGV4dExh
dGluMUNvbnRleHRBd2FyZUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNv
dXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIHJldHVybiB1VGV4
dENsb25lSW1wbChkZXN0aW5hdGlvbiwgc291cmNlLCBkZWVwLCBzdGF0dXMpOworfQorCitzdGF0
aWMgaW50NjRfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCogdGV4
dCkKK3sKKyAgICByZXR1cm4gdGV4dC0+YSArIHRleHQtPmI7Cit9CisKK3N0YXRpYyBVQm9vbCB1
VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpZiAoIXRleHQtPmNvbnRleHQpCisgICAgICAg
IHJldHVybiBGQUxTRTsKKyAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHVUZXh0TGF0aW4xQ29u
dGV4dEF3YXJlTmF0aXZlTGVuZ3RoKHRleHQpOworICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKKyAg
ICBpZiAodVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiBpc0Fj
Y2Vzc2libGU7CisgICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgpOworICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250
ZXh0ID0gdGV4dExhdGluMUNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KHRleHQpOworICAg
IFVUZXh0UHJvdmlkZXJDb250ZXh0IG5ld0NvbnRleHQgPSB1VGV4dFByb3ZpZGVyQ29udGV4dCh0
ZXh0LCBuYXRpdmVJbmRleCwgZm9yd2FyZCk7CisgICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gVVRl
eHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dCk7CisgICAgaWYgKG5ld0NvbnRleHQgPT0gY3Vy
cmVudENvbnRleHQpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgICAgIHRleHRMYXRpbjFDb250ZXh0
QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3Ro
LCBmb3J3YXJkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGV4dExhdGluMUNvbnRleHRB
d2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBm
b3J3YXJkKTsKKyAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRl
eHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNo
VG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW9yQ29udGV4dCk7CisgICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVT
d2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbnQzMl90IHVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFy
KiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2RlKQoreworICAgIC8vIEluIHRoZSBwcmVz
ZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVu
Y3Rpb25zCisgICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRF
RF9FUlJPUjsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDb250
ZXh0QXdhcmVDbG9zZShVVGV4dCogdGV4dCkKK3sKKyAgICB0ZXh0LT5jb250ZXh0ID0gbnVsbHB0
cjsKK30KKworVVRleHQqIG9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0
V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgs
IFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7CisgICAgICAg
ICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICBVVGV4dCogdGV4dCA9IHV0ZXh0X3NldHVwKCZ1dFdpdGhCdWZmZXItPnRleHQs
IHNpemVvZih1dFdpdGhCdWZmZXItPmJ1ZmZlciksIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVS
RSgqc3RhdHVzKSkgeworICAgICAgICBBU1NFUlQoIXRleHQpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcih0ZXh0LCAm
dGV4dExhdGluMUNvbnRleHRBd2FyZUZ1bmNzLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0
LCBwcmlvckNvbnRleHRMZW5ndGgpOworICAgIHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlk
ZXJMYXRpbjEuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mMTdiMzRkNTY2NTNjYTRkN2E4Y2E0MTRlMTQ3OTAzZTBjYTcyODAwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxh
dGluMS5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVUZXh0UHJvdmlk
ZXJMYXRpbjFfaAorI2RlZmluZSBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKKworI2luY2x1ZGUgPHVu
aWNvZGUvdXRleHQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworY29uc3QgaW50IFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5ID0gMTY7CisK
K3N0cnVjdCBVVGV4dFdpdGhCdWZmZXIgeworICAgIFVUZXh0IHRleHQ7CisgICAgVUNoYXIgYnVm
ZmVyW1VUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5XTsKK307CisKK1VUZXh0KiBvcGVuTGF0
aW4xVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENo
YXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworVVRleHQq
IG9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRX
aXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVD
aGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0
YXR1cyk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVRleHRQcm92aWRlckxh
dGluMV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
VVRGMTYuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMWZjMmVhYjlhNDU3ZjE3NzQ5ZjcyM2Y1MjA3ZjM4MWRmMjlmYWFlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlclVU
RjE2LmNwcApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyVVRGMTYuaCIKKworI2luY2x1ZGUgIlVUZXh0UHJv
dmlkZXIuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBV
VEYxNkNvbnRleHRBd2FyZSBwcm92aWRlcgorCitzdGF0aWMgVVRleHQqIHVUZXh0VVRGMTZDb250
ZXh0QXdhcmVDbG9uZShVVGV4dCosIGNvbnN0IFVUZXh0KiwgVUJvb2wsIFVFcnJvckNvZGUqKTsK
K3N0YXRpYyBpbnQ2NF90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgoVVRleHQq
KTsKK3N0YXRpYyBVQm9vbCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiwgaW50
NjRfdCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRVVEYxNkNvbnRleHRBd2FyZUV4dHJh
Y3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUq
KTsKK3N0YXRpYyB2b2lkIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9zZShVVGV4dCopOworCitz
dGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3Mg
PSB7CisgICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAg
IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9uZSwKKyAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJl
TmF0aXZlTGVuZ3RoLAorICAgIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MsCisgICAgdVRl
eHRVVEYxNkNvbnRleHRBd2FyZUV4dHJhY3QsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAor
ICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xv
c2UsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIKK307CisKK3N0YXRp
YyBpbmxpbmUgVVRleHRQcm92aWRlckNvbnRleHQgdGV4dFVURjE2Q29udGV4dEF3YXJlR2V0Q3Vy
cmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQpCit7CisgICAgaWYgKCF0ZXh0LT5jaHVua0Nv
bnRlbnRzKQorICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dDsK
KyAgICByZXR1cm4gdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wID8gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW1hcnlDb250ZXh0IDogVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29u
dGV4dDsKK30KKworc3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFy
eUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZl
TGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRz
ID09IHRleHQtPnApOworICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2
ZUluZGV4ID49IHRleHQtPmIgOiBuYXRpdmVJbmRleCA+IHRleHQtPmIpOworICAgIEFTU0VSVF9V
TlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0
aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0g
dGV4dC0+YjsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOworICAg
IGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNodW5rTmF0
aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmluZWQgaWYg
Y29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KKyAgICBBU1NFUlQobGVuZ3Ro
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5r
TGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBz
dGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGlu
Z0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJ
bmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNl
dCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5n
ZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9m
ZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8
aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZv
aWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndh
cmQpCit7CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29u
dGVudHMgPT0gdGV4dC0+cSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0
PGNvbnN0IFVDaGFyKj4odGV4dC0+cCk7CisgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUlu
UHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7
Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4
dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4
dC0+cSk7CisgICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IHRleHQtPmIgOiBuYXRp
dmVJbmRleCA8PSB0ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5VU0VEKG5hdGl2ZUxlbmd0aCwgZm9y
d2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZl
TGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRl
eCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHRl
eHQtPmI7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0LT5iOworICAgIHRleHQtPm5hdGl2
ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2NF90IG9mZnNldCA9
IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1
bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQz
Ml90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3Rk
OjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0
aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOworfQorCitz
dGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4
dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29s
IGZvcndhcmQpCit7CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNo
dW5rQ29udGVudHMgPT0gdGV4dC0+cCk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRp
Y19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cSk7CisgICAgdGV4dFVURjE2Q29udGV4dEF3YXJl
TW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndh
cmQpOworfQorCitzdGF0aWMgVVRleHQqIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9uZShVVGV4
dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNv
ZGUqIHN0YXR1cykKK3sKKyAgICByZXR1cm4gdVRleHRDbG9uZUltcGwoZGVzdGluYXRpb24sIHNv
dXJjZSwgZGVlcCwgc3RhdHVzKTsKK30KKworc3RhdGljIGlubGluZSBpbnQ2NF90IHVUZXh0VVRG
MTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgoVVRleHQqIHRleHQpCit7CisgICAgcmV0dXJuIHRl
eHQtPmEgKyB0ZXh0LT5iOworfQorCitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZUFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkK
K3sKKyAgICBpZiAoIXRleHQtPmNvbnRleHQpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBp
bnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgo
dGV4dCk7CisgICAgVUJvb2wgaXNBY2Nlc3NpYmxlOworICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1
bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwg
aXNBY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKKyAgICBuYXRpdmVJ
bmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7Cisg
ICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0VVRGMTZDb250ZXh0
QXdhcmVHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKKyAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBu
ZXdDb250ZXh0ID0gdVRleHRQcm92aWRlckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIGZvcndh
cmQpOworICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0Nv
bnRleHQpOworICAgIGlmIChuZXdDb250ZXh0ID09IGN1cnJlbnRDb250ZXh0KSB7CisgICAgICAg
IGlmIChjdXJyZW50Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRl
eHQpCisgICAgICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4
dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0gZWxzZSBpZiAo
bmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAg
ICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgZWxzZSB7CisgICAgICAgIEFT
U0VSVChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQpOwor
ICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBu
YXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9CisgICAgcmV0dXJuIFRS
VUU7Cit9CisKK3N0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KFVU
ZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJv
ckNvZGUpCit7CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3Zp
ZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKKyAgICAvLyB0aGF0IGRvIG5vdCBw
ZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOworICAgIHJldHVybiAwOworfQor
CitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqIHRleHQpCit7
CisgICAgdGV4dC0+Y29udGV4dCA9IG51bGxwdHI7Cit9CisKK1VUZXh0KiBvcGVuVVRGMTZDb250
ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25zdCBVQ2hhciogc3RyaW5nLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRl
eHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0
dXMpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7
CisgICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICB0ZXh0ID0gdXRleHRfc2V0dXAodGV4dCwgMCwgc3RhdHVzKTsK
KyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4
dFByb3ZpZGVyKHRleHQsICZ0ZXh0VVRGMTZDb250ZXh0QXdhcmVGdW5jcywgc3RyaW5nLCBsZW5n
dGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICByZXR1cm4gdGV4dDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0
UHJvdmlkZXJVVEYxNi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjYzJjMmM4ZTZjNWZhZGE3NWI1ZDUxZjk2YmI4
YWNlMGE3MDRhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBVVGV4dFByb3ZpZGVyVVRGMTZfaAorI2RlZmluZSBVVGV4dFByb3ZpZGVyVVRGMTZfaAorCisj
aW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworVVRleHQqIG9w
ZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHQqLCBjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4
dExlbmd0aCwgVUVycm9yQ29kZSopOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8v
IFVUZXh0UHJvdmlkZXJVVEYxNl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L21h
Yy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGIvU291cmNlL1dURi93dGYvdGV4
dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWY1
ZGFhNjQyODg4MjFlMjBmMjYyOGM2ODU1ZWU4ZTg4YTM4OTJjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5t
bQpAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCisKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGF0aWMgY29uc3QgaW50IG1heExvY2Fs
ZVN0cmluZ0xlbmd0aCA9IDMyOworCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSgpCit7CisgICAgUmV0YWluUHRyPENGUHJvcGVy
dHlMaXN0UmVmPiBsb2NhbGUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5VmFsdWUoQ0ZTVFIo
IkFwcGxlVGV4dEJyZWFrTG9jYWxlIiksCisgICAgICAgIGtDRlByZWZlcmVuY2VzQW55QXBwbGlj
YXRpb24sIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9zdCkp
OworICAgIGlmICghbG9jYWxlIHx8IENGR2V0VHlwZUlEKGxvY2FsZS5nZXQoKSkgIT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihsb2NhbGUuZ2V0KCkpOworfQorCitzdGF0aWMgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB0b3BMYW5ndWFnZVByZWZlcmVuY2UoKQoreworICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBsYW5ndWFnZXNBcnJheSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5UHJlZmVycmVk
TGFuZ3VhZ2VzKCkpOworICAgIGlmICghbGFuZ3VhZ2VzQXJyYXkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIGlmICghQ0ZBcnJheUdldENvdW50KGxhbmd1YWdlc0FycmF5LmdldCgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlc0FycmF5LmdldCgpLCAwKSk7Cit9
CisKK3N0YXRpYyB2b2lkIGdldExvY2FsZShDRlN0cmluZ1JlZiBsb2NhbGUsIGNoYXIgbG9jYWxl
U3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0pCit7CisgICAgLy8gRW1wdHkgc3Ry
aW5nIG1lYW5zICJyb290IGxvY2FsZSIsIGFuZCB0aGF0IGlzIHdoYXQgd2UgdXNlIGlmIHdlIGNh
bid0IGdldCBhIHByZWZlcmVuY2UuCisgICAgbG9jYWxlU3RyaW5nQnVmZmVyWzBdID0gMDsKKyAg
ICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJuOworICAgIENGU3RyaW5nR2V0Q1N0cmluZyhs
b2NhbGUsIGxvY2FsZVN0cmluZ0J1ZmZlciwgbWF4TG9jYWxlU3RyaW5nTGVuZ3RoLCBrQ0ZTdHJp
bmdFbmNvZGluZ0FTQ0lJKTsKK30KKworc3RhdGljIHZvaWQgZ2V0U2VhcmNoTG9jYWxlKGNoYXIg
bG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0pCit7CisgICAgZ2V0TG9j
YWxlKHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpLmdldCgpLCBsb2NhbGVTdHJpbmdCdWZmZXIpOwor
fQorCitjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQoreworICAgIHN0YXRpYyBj
aGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdOworICAgIHN0YXRp
YyBib29sIGdvdFNlYXJjaExvY2FsZSA9IGZhbHNlOworICAgIGlmICghZ290U2VhcmNoTG9jYWxl
KSB7CisgICAgICAgIGdldFNlYXJjaExvY2FsZShsb2NhbGVTdHJpbmdCdWZmZXIpOworICAgICAg
ICBnb3RTZWFyY2hMb2NhbGUgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gbG9jYWxlU3RyaW5n
QnVmZmVyOworfQorCitzdGF0aWMgdm9pZCBnZXRUZXh0QnJlYWtMb2NhbGUoY2hhciBsb2NhbGVT
dHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKK3sKKyAgICAvLyBJZiB0aGVyZSBp
cyBubyB0ZXh0IGJyZWFrIGxvY2FsZSwgdXNlIHRoZSB0b3AgbGFuZ3VhZ2UgcHJlZmVyZW5jZS4K
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsZSA9IHRleHRCcmVha0xvY2FsZVByZWZl
cmVuY2UoKTsKKyAgICBpZiAobG9jYWxlKSB7CisgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNhbm9uaWNhbExvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxM
YW5ndWFnZUlkZW50aWZpZXJGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZS5n
ZXQoKSkpKQorICAgICAgICAgICAgbG9jYWxlID0gY2Fub25pY2FsTG9jYWxlOworICAgIH0gZWxz
ZQorICAgICAgICBsb2NhbGUgPSB0b3BMYW5ndWFnZVByZWZlcmVuY2UoKTsKKyAgICBnZXRMb2Nh
bGUobG9jYWxlLmdldCgpLCBsb2NhbGVTdHJpbmdCdWZmZXIpOworfQorCitjb25zdCBjaGFyKiBj
dXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQoreworICAgIHN0YXRpYyBjaGFyIGxvY2FsZVN0cmlu
Z0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdOworICAgIHN0YXRpYyBib29sIGdvdFRleHRC
cmVha0xvY2FsZSA9IGZhbHNlOworICAgIGlmICghZ290VGV4dEJyZWFrTG9jYWxlKSB7CisgICAg
ICAgIGdldFRleHRCcmVha0xvY2FsZShsb2NhbGVTdHJpbmdCdWZmZXIpOworICAgICAgICBnb3RU
ZXh0QnJlYWtMb2NhbGUgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gbG9jYWxlU3RyaW5nQnVm
ZmVyOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9UZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0MTdlMTcwNWVm
NTRiOTM5MjE0ZGExODQ4MGRiN2EzMmMzMmM5MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
Y2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHVz
ZSBzeXN0ZW0gbG9jYWxlLgorICAgIHJldHVybiAiIjsKK30KKworY29uc3QgY2hhciogY3VycmVu
dFRleHRCcmVha0xvY2FsZUlEKCkKK3sKKyAgICAvLyBVc2luZyBlbl9VU19QT1NJWCBub3cgc28g
d29yZCBzZWxlY3Rpb24gaW4gYWRkcmVzcyBmaWVsZCB3b3JrcyBhcyBleHBlY3RlZCBhcyBiZWZv
cmUgKGRvdWJsZS1jbGlja2luZworICAgIC8vIGluIGEgVVJMIHNlbGVjdHMgYSB3b3JkIGRlbGlt
aXRlZCBieSBwZXJpb2RzIHJhdGhlciB0aGFuIHNlbGVjdGluZyB0aGUgZW50aXJlIFVSTCkuCisg
ICAgLy8gSG93ZXZlciwgdGhpcyBpcyBub3QgZW50aXJlbHkgY29ycmVjdCAtIHdlIHNob3VsZCBo
b25vciB0aGUgc3lzdGVtIGxvY2FsZSBpbiB0aGUgbm9ybWFsIGNhc2UuCisgICAgLy8gRklYTUU6
IDxyZGFyOi8vcHJvYmxlbS82Nzg2NzAzPiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUgZm9yIHRl
eHQgYnJlYWtpbmcKKyAgICByZXR1cm4gImVuX1VTX1BPU0lYIjsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA5MDQzNzdmY2ViZGQ1NmU2MGU2NjJkZTUyNzQwNjE1NjY1NDI4NzZhLi5l
NzhiMDQyYjEwNDAxZTFmNGVlM2EyYWIxYTA1MmMyMThjM2ExMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjM3MCw3ICsyMzcwLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVk
U3RyaW5nLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCi0gICAgcGxh
dGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRD
b2RlYy5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKICAgICBwbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTIzODMsMTAgKzIzODIsNiBAQCBzZXQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAK
ICAgICBwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCiAKLSAgICBwbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyLmNwcAotICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuY3BwCi0gICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAot
CiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlQXJy
YXkuY3BwCiAgICAgcGx1Z2lucy9ET01QbHVnaW4uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IDNmZTYwMzc4YzI2Y2YwOGU0NWYzNzNlZDUzMzg3ZGVmNzg0NTZjYTMuLjUxNDUwNGU2
ZWMyNWFhNWU0M2I5OTM5OGQ1ZTM1Y2VlZWE3NjZhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0yMTIsOCArMjEyLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlD
VS5jcHAKIAotICAgIHBsYXRmb3JtL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VFZmwuY3BwCi0KICAgICBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50
LmNwcAogCiAgICAgcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGMyMjQwNWI3NGUxNWU3Yjc1Zjc0YWM4MGY4
MTU3Yzc3M2E5YzllYzAuLjY0NWFkZDFjZTM4ODg4YjA0ZDRhMmQ4OWFkYTBhN2M2ZGUxOTk4NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xODIsOCArMTgyLDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNr
ZXJFbmNoYW50LmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVUd0ay5jcHAKLQogICAgIHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcAogCiAgICAgcGxhdGZvcm0vdW5peC9Mb2dnaW5nVW5peC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMzk4OTZmOTg0MzUyNjEyYTllZWQ0OWIyNDAxMTRiNGMx
ZDg0OTU5OC4uOWY2ZjQ5NmI2Y2M0ZWY2ZTRiNzRkODRhYzBhYTlkZWE1NWEwMjM3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTU2Niw3ICs1NjYsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQogICAgIHBs
YXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCi0gICAgcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbQogICAgIHBsYXRmb3JtL3RleHQvbWFj
L1RleHRDb2RlY01hYy5jcHAKIAogICAgIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBjY2IxYTU3MWU5YTZkZTU2YWNkMDU0YTkzMzY1Mzlk
MDhlNjBmM2ZmLi44ZDc5MGZhNzA5MWZiNjEyZjE1MTg5NTY5YzU3ZDk2YTk1Y2NkNWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTA5LDggKzEwOSw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAog
Ci0gICAgcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5j
cHAKLQogICAgIHBsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcAogICAgIHBsYXRmb3JtL3dpbi9CaXRt
YXBJbmZvLmNwcAogICAgIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZmJhNTdmODQ5OWIxNmRiMGUwNjhmZDlkNzUzZWI5MTUyMmM5ZWI4NC4uYzExYmM0N2U1Y2Fk
NjMwYTM2NTdjZGUxYWQ5ZjdiNzZhMGE1NWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOCwxMSArMTUxOCwxMSBAQAog
CQkzN0Y1N0FCQTFBNTA3MjZGMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0E5
RTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgKi87IH07
CiAJCTM3RjU3QUJCMUE1MDcyNzMwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNB
OUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgKi87IH07
CiAJCTM3RjU3QUJDMUE1MDcyNzcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFD
QUEwMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcCAqLzsg
fTsKKwkJMzdGNTdBQkMxQTUwNzI4NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5
ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAg
Ki87IH07CiAJCTM3RjU3QUJEMUE1MDcyN0EwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FB
MTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwICovOyB9OwogCQkzN0Y1
N0FCRTFBNTA3MjdFMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBQTIxMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCAqLzsgfTsKIAkJMzdGNTdBQkYxQTUw
NzI4MTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQUEzMTMxODIyRUMwMEQx
MkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgKi87IH07CiAJCTM3RjU3QUMw
MUE1MDcyODQwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBNDEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwICovOyB9OwotCQkzN0Y1
N0FCQzFBNTA3Mjg0MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUFCQzQxMzE4
MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
MzdGNTdBQzExQTUwNzI4NzAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODU3MDkyMTVD
QzUzMkQwMDYzNTVDRCAvKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgKi87IH07CiAJCTM3
RjU3QUMyMUE1MDcyOEIwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQUE1MTMxODIyRUMw
MEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAqLzsgfTsKIAkJMzdGNTdBQzMxQTUw
NzI4RjAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNDA5Qzk4MjExNkQwRERE
MDA3MTk3QkQgLyogQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcCAqLzsgfTsKQEAg
LTE2OTMsMTAgKzE2OTMsOCBAQAogCQk0MzkwNDZERDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVy
TWF0aE1MTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzkwNDZDOTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5jcHAgKi87
IH07CiAJCTQzOTA0NkRFMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQTEyREEy
NUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5oICovOyB9OwogCQk0MzkwNDZERjEyREEy
NUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNCMTJEQTI1RTE3QkFGODBB
MiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwICovOyB9OwotCQk0MzkxNzZERjEyREEy
NUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0
eWxlLmNwcCAqLzsgfTsKIAkJNDM5MDQ2REYxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOTA0NkNCMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAg
Ki87IH07CiAJCTQzOTA0NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
OTA0NkNDMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaCAqLzsg
fTsKLQkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkxNzZDQzEyREEyNUUxN0JB
RjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLzsgfTsKIAkJNDM5MDQ2RTAxMkRBMjVFODAwQUY4MEEy
IC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQzEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1M
T3BlcmF0b3IuaCAqLzsgfTsKIAkJNDM5MDQ2RTExMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTFJvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM5MDQ2Q0QxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuY3BwICovOyB9
OwogCQk0MzkwNDZFMjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0UxMkRBMjVF
ODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCAqLzsgfTsKQEAgLTE3MTAsNiArMTcwOCw4
IEBACiAJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ2MTJEQTI1RTgx
MkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuaCAqLzsgfTsKIAkJNDM5MDQ2RUIxMkRBMjVFODAwQUY4
MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ3MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRo
TUxUb2tlbi5jcHAgKi87IH07CiAJCTQzOTA0NkVDMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJN
YXRoTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM5MDQ2RDgxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggKi87IH07
CisJCTQzOTE3NkRGMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkxNzZDQjEyREEyNUUxN0JB
RjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovOyB9OworCQk0MzkxNzZFMDEyREEyNUUxN0JBRjgw
QTIgLyogTWF0aE1MU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQzOTE3NkNDMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oICovOyB9
OwogCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzlEMzM0MDEzQTY5MTFD
MDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi87IH07CiAJCTQzOUQzMzQ0MTNBNjkxMUMw
MEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDExM0E2OTExQzAwQzIwRjRGIC8qIFNW
R0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi87IH07CiAJCTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZh
Y3RvcnkuaCAqLzsgfTsKQEAgLTI4MTQsMTIgKzI4MTQsNiBAQAogCQk3QzczRkIxMTE5MUVGNkY0
MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMEYxOTFFRjZGNDAwN0RFMDYxIC8qIEpT
VXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKIAkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYx
IC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzczRkIxMDE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2Fn
ZUhhbmRsZXIuaCAqLzsgfTsKIAkJN0M3M0ZCMTkxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzczRkIxNzE5MUVGODA4MDA3REUwNjEgLyogSlNVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCAqLzsgfTsKLQkJN0M3NEQ0MzMxODgy
M0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8q
IFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovOyB9OwotCQk3Qzc0RDQzNDE4ODIzQTkzMDBFNUVE
NTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlk
ZXJMYXRpbjEuaCAqLzsgfTsKLQkJN0M3NEQ0MzcxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJv
dmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovOyB9OwotCQk3
Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzYxODgyM0IxOTAwRTVFRDU3
IC8qIFVUZXh0UHJvdmlkZXIuaCAqLzsgfTsKLQkJN0M3NEQ0M0IxODgyNDAwNDAwRTVFRDU3IC8q
IFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Qzc0RDQzOTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVU
RjE2LmNwcCAqLzsgfTsKLQkJN0M3NEQ0M0MxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlk
ZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M3NEQ0M0ExODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovOyB9Owog
CQk3Qzc5NDFFNDFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUy
MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovOyB9Owog
CQk3Qzc5NDFFNTFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTMx
QzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLzsgfTsKIAkJ
N0M4M0RFODYxRDA0Q0M1RDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0Yz
IC8qIFNwcmluZ1NvbHZlci5oICovOyB9OwpAQCAtNDI3NSw3ICs0MjY5LDYgQEAKIAkJQTVBMkFG
MEIxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAv
KiBQYWdlRGVidWdnYWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAv
KiBQYWdlRGVidWdnYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87
IH07CiAJCUE1QTdBQTQzMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBN0FBNDIxMzJG
MEVDQzAwRDNBM0MyIC8qIFdlYkF1dG9jYXBpdGFsaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8q
IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0
ZXJhdG9yUG9vbElDVS5oICovOyB9OwogCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3Rl
cFJhbmdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1QUZCMzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovOyB9OwogCQlBNUFG
QjM1MDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3Rl
cFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTVERUJEQTMxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVERUJEOUYxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RXZlbnQuY3BwICovOyB9OwpAQCAtNTExMCw3ICs1MTAzLDYgQEAKIAkJQjJBRkZD
ODAwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYXNjYWRlQ29jb2EubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM3ODBEMDBBNUMxMDAzMDA3NEQg
LyogRm9udENhc2NhZGVDb2NvYS5tbSAqLzsgfTsKIAkJQjJBRkZDODMwRDAwQTVDMTAwMzAwNzRE
IC8qIEdseXBoUGFnZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMkFGRkM3QjBEMDBBNUMxMDAzMDA3NEQgLyogR2x5cGhQYWdlTWFjLmNwcCAq
LzsgfTsKIAkJQjJBRkZDOTcwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDOEMwRDAw
QTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tICovOyB9OwotCQlCMkFGRkM5ODBEMDBB
NURGMDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzhEMEQwMEE1REYw
MDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovOyB9OwogCQlC
MkFGRkM5OTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzhFMEQwMEE1REYwMDMwMDc0
RCAvKiBUZXh0Q29kZWNNYWMuY3BwICovOyB9OwogCQlCMkFGRkM5QTBEMDBBNURGMDAzMDA3NEQg
LyogVGV4dENvZGVjTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMkFGRkM4RjBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggKi87IH07
CiAJCUIyQjFGNzE2MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJCMUY3MTQw
RDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgKi87IH07CkBAIC01
MTIyLDggKzUxMTQsNiBAQAogCQlCMkMzREEyRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVk
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyQzNEOUZFMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwICovOyB9Owog
CQlCMkMzREEyRjBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzRDlGRjBEMDA2QzFEMDBF
RjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBMzQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3Vu
ZGFyaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkMzREEwNDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCMkMzREEzNjBEMDA2QzFEMDBF
RjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTA2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJ
dGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUIyQzNEQTM4MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMz
REEwODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTM5
MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBMDkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRD
b2RlYy5jcHAgKi87IH07CiAJCUIyQzNEQTNBMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTBB
MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREEzQjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dENvZGVjSUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyQzNEQTBCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNJQ1UuY3BwICovOyB9OwpA
QCAtNTgwNyw3ICs1Nzk3LDYgQEAKIAkJQkNEMEZDNEYwREJENzIwQjAwQjJGNjMwIC8qIERPTVJH
QkNvbG9ySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRDBGQzRFMERCRDcyMEIwMEIyRjYzMCAvKiBET01SR0JDb2xvckludGVybmFsLmgg
Ki87IH07CiAJCUJDRDQxQUJCMEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1l
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNENDFBQkEwQzA2MERFODAwQzBFNDQ2IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3Rv
bS5jcHAgKi87IH07CiAJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmggKi87IH07Ci0JCUJDRDhBNUYwMTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJdGVy
YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0Q4QTVFRjE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9Owog
CQlCQ0Q5QzI2MjBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEOUMyNUUwQzE3QUE2
NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQkNEOUMyNjMwQzE3
QUE2NzAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjVGMEMxN0FBNjcwMDVDOTBBMiAv
KiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgKi87IH07CiAJCUJDRDlDMjY0MEMxN0FBNjcwMDVD
OTBBMiAvKiBKU05vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNEOUMyNjAwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5j
cHAgKi87IH07CkBAIC04NjkxLDYgKzg2ODAsNyBAQAogCQkyOTQ4OUZDNTEyQzAwRjAzMDBEODNG
MEYgLyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk0OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFy
a3VwTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVu
ZG9JbnNlcnRpb25NYXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyOTgxQUJDNDEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOTgxQ0E5RDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlFMTMxODIyRUMwMEQxMkYyQSAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgx
Q0E5RjEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04Njk5LDcgKzg2ODksNiBAQAogCQkyOTgxQ0FBMjEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OTgxQ0FBMzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0FBNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOTgx
QUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0FBNTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VT
cGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQkyOTgxQ0FBNjEz
MTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTcxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MDM2LDggKzkwMjUsOCBAQAogCQkz
MUZCMUE2QjEyMEE1RDY5MDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRTkxMDg5MjA4
NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMzE0QUNFQTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMzFGRjY3REUxOTdCNTczOTNDNDZBQTcgLyogUmVuZGVy
TWF0aE1MU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0
aE1MU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxRkY2N0RFMTk3QjU3
MzkzQzQ2QTdGIC8qIFJlbmRlck1hdGhNTFBhZGRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJNYXRoTUxQYWRkZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzMxRkY2N0RFMTk3QjU3MzkzQzQ2QUE3IC8qIFJlbmRlck1hdGhNTFNwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFNwYWNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3Rp
ZmljYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5vdGlmaWNhdGlvbi5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzM0Y3MDRGMEZCNDlDQTIwMDhFMTJBNiAvKiBO
b3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90aWZpY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQzk5MTAxNzlBNzQwMDNC
NDdFMSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBh
dGggPSBOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTkzMTEsMTAgKzkzMDAsOCBAQAogCQk0MzkwNDZDOTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVy
TWF0aE1MTWF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJNYXRoTUxNYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0Ex
MkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MTWF0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzkwNDZDQjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzOTE3NkNC
MTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNYXRoTUxTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzOTA0NkNCMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNDMTJEQTI1RTE3
QkFGODBBMiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQzOTE3NkNDMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxTdHlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDQzEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0Qx
MkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MUm9vdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQzOTA0NkNFMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxS
b290LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzMjgsNiArOTMxNSw4IEBACiAJCTQz
OTA0NkQ2MTJEQTI1RTgxMkFGODBBQyAvKiBNYXRoT3BlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWF0aE9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzOTA0NkQ3MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxUb2tlbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkQ4MTJEQTI1RTgwMEFGODBB
OSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJNYXRoTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0Mzkx
NzZDQjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3R5bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDM5RDMzNDAxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVk
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5RDMzNDExM0E2OTExQzAwQzIwRjRG
IC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0b3JGYWN0b3J5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDU1NywxMiArMTA1NDYsNiBAQAogCQk3Qzcz
RkIwRjE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVc2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzczRkIxMDE5MUVGNkY0MDA3REUwNjEgLyog
SlNVc2VyTWVzc2FnZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNVc2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3
M0ZCMTcxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3Qzc0RDQzMTE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4x
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzIxODgyM0E5MzAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVRleHRQcm92aWRlckxhdGluMS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3Qzc0RDQzNTE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzYxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJv
dmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzc0RDQzOTE4ODI0MDA0MDBFNUVENTcg
LyogVVRleHRQcm92aWRlclVURjE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNzk0MUUyMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRh
RGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3Jl
U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURldGVjdG9y
c0NvcmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzgzREU4NTFE
MDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTIwNzUsNyArMTIwNTgsNiBAQAogCQlBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURl
YnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZURl
YnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUEyQUYwQTE4Mjk3
MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFnZURlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTVBN0FBNDIxMzJGMEVDQzAwRDNBM0MyIC8qIFdlYkF1dG9jYXBpdGFsaXplLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9jYXBpdGFsaXplLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZC
MzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RlcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdGVwUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5RXZlbnRDb2NvYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMxMDgsNyArMTMwOTAsNiBAQAogCQlCMkFGRkM4NjBEMDBB
NURGMDAzMDA3NEQgLyogbWFjLWVuY29kaW5ncy50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
ICJtYWMtZW5jb2RpbmdzLnR4dCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQUZG
Qzg3MEQwMEE1REYwMDMwMDc0RCAvKiBtYWtlLWNoYXJzZXQtdGFibGUucGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucGVybDsgcGF0aCA9ICJtYWtlLWNoYXJzZXQtdGFibGUucGwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4QzBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJv
dW5kYXJpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4
dEJvdW5kYXJpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyQUZGQzhEMEQw
MEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQUZGQzhFMEQw
MEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRleHRDb2RlY01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyQUZGQzhGMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNNYWMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDb2RlY01hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMkIxRjcxNDBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50
c0hpdFJ1bGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lu
dGVyRXZlbnRzSGl0UnVsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMx
MjAsOCArMTMxMDEsNiBAQAogCQlCMkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVk
U3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWdtZW50
ZWRTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzRDlGRjBEMDA2
QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZWdtZW50ZWRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJDM0RBMDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Qm91bmRhcmllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCMkMzREEwNjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRCcmVha0l0ZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyQzNEQTA4MEQwMDZDMUQwMEVG
NkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTA5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29k
ZWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDb2RlYy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTBBMEQwMDZDMUQwMEVGNkYy
NiAvKiBUZXh0Q29kZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRD
b2RlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwQjBEMDA2QzFEMDBF
RjZGMjYgLyogVGV4dENvZGVjSUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXh0Q29kZWNJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTM4MzEsNyArMTM4MTAsNiBAQAogCQlCQ0QwRkM0RTBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdC
Q29sb3JJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SR0JD
b2xvckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDQxQUJBMEMw
NjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDUzMzYzMEVENjg0ODkwMDg4
NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQ0Q4QTVFRjE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFr
SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q5QzI1RTBDMTdB
QTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV2luZG93Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNEOUMyNUYwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFw
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDlDMjYw
MEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xODQyNSwxOSArMTg0MDMsNiBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJN0M3NEQ0MzAxODgyM0E0MjAwRTVFRDU3IC8q
IGljdSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJN0M3
NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovLAotCQkJCTdDNzRE
NDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8sCi0JCQkJN0M3NEQ0MzEx
ODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovLAotCQkJCTdDNzRE
NDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8sCi0JCQkJN0M3
NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8sCi0JCQkJ
N0M3NEQ0M0ExODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovLAotCQkJ
KTsKLQkJCXBhdGggPSBpY3U7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk3
RTRERTEwQjE5OEIxMDgxMDA1MUNCMDIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjIzMzUsNyArMjIzMDAsNiBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCMkIyNjQ1OTBEMDBBNzdFMDAwQUNDMUQgLyog
Y2YgKi8sCi0JCQkJN0M3NEQ0MzAxODgyM0E0MjAwRTVFRDU3IC8qIGljdSAqLywKIAkJCQlBNTE2
RThCMjEzNkUwNEMwMDA3NkMzQzAgLyogaW9zICovLAogCQkJCUIyQzNEOUY5MEQwMDZDMUQwMEVG
NkYyNiAvKiBtYWMgKi8sCiAJCQkJQjJDM0Q5RjIwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250
ZXh0LmNwcCAqLywKQEAgLTIyMzQ3LDcgKzIyMzExLDYgQEAKIAkJCQk0NTNFQjYzNTE1OUM1NzA0
MDAwMDFCQjcgLyogRGF0ZVRpbWVGb3JtYXQuaCAqLywKIAkJCQlDRUNDRkMzQTE0MTk3M0Q1MDAy
QTBBQzEgLyogRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmggKi8sCiAJCQkJMzc1Q0QyMzExMTlENDND
ODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8sCi0JCQkJQTVBQkI3ODYxM0I5MDRCQzAwRjE5
N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovLAogCQkJCTg5QjVFQTlGMTFFODAw
M0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywKIAkJCQk4OUI1RUFBMDExRTgwMDNEMDBG
MjM2N0UgLyogTGluZUVuZGluZy5oICovLAogCQkJCTc2MzNBNzI0MTNEOEIzM0EwMDg1MDFCNiAv
KiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLywKQEAgLTIyMzYzLDkgKzIyMzI2LDYgQEAKIAkJ
CQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovLAogCQkJCTM3MkMw
MEMzMTI5NjExRjEwMDVDOTU3NSAvKiBUZXh0Qm91bmRhcmllcy5jcHAgKi8sCiAJCQkJQjJDM0RB
MDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggKi8sCi0JCQkJQkNEOEE1RUYx
NUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLywKLQkJCQlCMkMzREEw
NjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLywKLQkJCQlCMkMzREEw
ODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oICovLAog
CQkJCUE3MTUxQkQ3MTJGMTU1OEYwMDVBMEY2NCAvKiBUZXh0Q2hlY2tlckNsaWVudC5oICovLAog
CQkJCUE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCAqLywKIAkJCQlC
MkMzREEwOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCAqLywKQEAgLTIyNDA5LDcg
KzIyMzY5LDYgQEAKIAkJCQlCMkFGRkM4NjBEMDBBNURGMDAzMDA3NEQgLyogbWFjLWVuY29kaW5n
cy50eHQgKi8sCiAJCQkJQjJBRkZDODcwRDAwQTVERjAwMzAwNzREIC8qIG1ha2UtY2hhcnNldC10
YWJsZS5wbCAqLywKIAkJCQlCMkFGRkM4QzBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJvdW5kYXJp
ZXMubW0gKi8sCi0JCQkJQjJBRkZDOEQwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VNYWMubW0gKi8sCiAJCQkJQjJBRkZDOEUwRDAwQTVERjAwMzAwNzREIC8q
IFRleHRDb2RlY01hYy5jcHAgKi8sCiAJCQkJQjJBRkZDOEYwRDAwQTVERjAwMzAwNzREIC8qIFRl
eHRDb2RlY01hYy5oICovLAogCQkJKTsKQEAgLTI3NDAwLDcgKzI3MzU5LDYgQEAKIAkJCQlCQ0ZG
NjQ5MjBFQUQxNUMyMDBDMUQ2RjcgLyogTGVuZ3RoU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODQ3MzBEOTExMjQ4RjBCMzAwRDNBOUM5IC8qIExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVz
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhF
MDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5QjVFQUEy
MTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRkVG
QUIyQTE4MzgwREEwMDA1MTQ1MzQgLyogTGluZUxheW91dFN0YXRlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI4NjIyLDggKzI4NTgwLDYgQEAKIAkJCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyog
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENFNjE4
ODEwNTFEMDAzRUVEQkIgLyogVGV4dEF1dG9TaXppbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
QzNEQTM0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQjJDM0RBMzYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKLQkJCQlCMkMzREEzODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcxNTFCRDgxMkYxNTU4RjAw
NUEwRjY0IC8qIFRleHRDaGVja2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdEMDAx
MjEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0RCRjhERTEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVscGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4NzY2LDkgKzI4NzIyLDYgQEAKIAkJCQlCQzhCRjE1MTEwNTgxM0JGMDBBNDBB
MDcgLyogVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEJGMTVBMTA1ODE0
MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0RGMzE3QzExRjhENjgzMDAzQzVCRjggLyogVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTdDNzRENDM4MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Qzc0RDQzNDE4ODIzQTkzMDBFNUVENTcgLyogVVRl
eHRQcm92aWRlckxhdGluMS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M3NEQ0M0MxODgyNDAwNDAw
RTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUZBRkJG
MTkxNUE1RkE3NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkUzQkJGMDgxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1
QTE1NDI4MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMjE4Myw4ICszMjEzNiw2IEBACiAJCQkJMEY1NERDRTUxODgxMDUxRDAwM0VFREJC
IC8qIFRleHRBdXRvU2l6aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3MkMwMEM0MTI5NjEx
RjEwMDVDOTU3NSAvKiBUZXh0Qm91bmRhcmllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFG
RkM5NzBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJvdW5kYXJpZXMubW0gaW4gU291cmNlcyAqLywK
LQkJCQlCQ0Q4QTVGMDE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQjJBRkZDOTgwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0RCRjhERDEyNzY5
MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVscGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyQzNEQTM5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjJDM0RBM0IwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0lDVS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMyMzAzLDkgKzMyMjU0LDYgQEAKIAkJCQk3Q0U2ODM0NDE5MjE0M0E4MDBG
NEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzczRkIwNzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVz
cGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0RGMzE3QjExRjhENjgzMDAzQzVCRjggLyog
VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M3NEQ0
MzcxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJN0M3NEQ0MzMxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJN0M3NEQ0M0IxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlk
ZXJVVEYxNi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkFGQkYxODE1QTVGQTZFMDAwODNBMjAg
LyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzQkJGMDcxMTYyREExMTAw
Qjk0MDlBIC8qIFVVSUQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjVBMTU0MjcxMjc5NTM0RDAw
RDBCMEMwIC8qIFZhbGlkYXRpb25NZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IGQ1MzNjMzcwY2U2NzVmZmE1ODY0YzY0NjZhODQx
NDczYmY0MWUxNjcuLmIyZDdkYWU3Mjk1ZDBhMjQ4MDhkMDBkZDM0YmI0MzM1MDJiOTMzNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTMzLDggKzMzLDggQEAKICNpbmNs
dWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAj
aW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0
b3IuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggYjY5NTJlMmI4NmYxOWNlYzY2ZGNi
YWZjZTk2NjIxYjZkNTExOTliOS4uZjE4NjU0OTY3ZGRlNTc3NTZlNWQzNTk3ODczZDUyYjkyYWM0
NzdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVT
ZWxlY3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0
ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNs
dWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IGNiNzRhZjk2MzBkYjRlMjU4ODUwNmU3NTcyNmVkM2EwMGZlMTFjZjYuLjA3
YWFiNjE2Y2I2N2Y5NmY4N2VmZjFjNDY3ZmRiZGY5NTMwNjE0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKICNpbmNsdWRlICJTaW1w
bGVMaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgiCiAj
aW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAj
aW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCkBAIC02Myw4ICs2Myw4IEBACiAjaW5jbHVkZSA8d3Rm
L3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmICFVQ09ORklHX05PX0NPTExBVElPTgot
I2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKICNpbmNsdWRlIDx1bmlj
b2RlL3VzZWFyY2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVLmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCBlZDZhNjhhMWFhNjY0NjAwYTk2
M2M2OTJlMmNiODhjMDM4NTNlNGJlLi5lMGRjNDA1NWVhZWRmOGIzODhiMzRlYjJiZTgyNmIxZDQ1
MmY2ZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0zNyw3
ICszNyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJh
dG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiaHRtbGVkaXRpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IDAyM2FjMzM5MGYyYmRhMmI3NTNmN2FiYjgzMDY5MzlhNGQzNmYwNTIuLjM0YjRjY2Nh
ZWQ3YjlmMzU4YTk3MzY4OWUzYjA3NmFiNTdhZTU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNjAsOSArNjAsOSBAQAogI2luY2x1ZGUgIlNjb3BlZEV2
ZW50UXVldWUuaCIKICNpbmNsdWRlICJTZWFyY2hJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJTdHls
ZVJlc29sdmVyLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICNpbmNs
dWRlICJUb3VjaEV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAppbmRleCBmOTIxMDhhY2E2ZjFkOGEzZDljZWRhY2RiMGI4MDgyZGRmMzgyYzhkLi5j
ZjJhOGE4ODcwNjE4ZDAwZTNmNTZlZTEyYTJiYjc2Y2ZmNGM1MmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNs
dWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IlRleHROb2RlVHJhdmVyc2FsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggM2Fh
ZjQxNDVlZDE4Y2RkMDdjNWI0OTg3ZmU3Nzc5MGM0MDMyNjAxOS4uODkxYjZiYmZhOWNhNjNiYzU1
ZDEzMGNmYmJmMDk1MTI5ODhjMDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAt
NzAsNyArNzAsNyBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdWJtaXRJ
bnB1dFR5cGUuaCIKICNpbmNsdWRlICJUZWxlcGhvbmVJbnB1dFR5cGUuaCIKLSNpbmNsdWRlICJU
ZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
Lmg+CiAjaW5jbHVkZSAiVGV4dElucHV0VHlwZS5oIgogI2luY2x1ZGUgIlRpbWVJbnB1dFR5cGUu
aCIKICNpbmNsdWRlICJVUkxJbnB1dFR5cGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAppbmRleCBhZDFkNGUzNDgwMDY5ZjdhYTBkMTc0MWQxMWIzOGQwNzQ4
NDRjMjRkLi4yNjY4ODEzOTE4ZGY2ZTFkZTdkNTkzODczNjhhMTI4YzNiMTkyZDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC01MSw3ICs1MSw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2lu
Y2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5o
IgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlw
ZS5jcHAKaW5kZXggYjU0ZTliMmU3ZDlkMTI4YjFjYzk1MzM2MTRkOGYwNGE3NzVjZTY4OC4uZjZm
MDI3NmQxOGQ4NjgwNDBkYmZiNjI1ODgyYjcwOGMzMzY1OGU1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRJbnB1dFR5cGUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKLSNpbmNsdWRlICJUZXh0
QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmNwcAppbmRleCBmZTVlYmZlYWZmNjhjZDcxNTdhNTU1MWY0NTFmNTkxNWUx
NzAxNTBmLi41YjE4OTRlOTEyZTg0ZmM3OTczZTg5NDFlZmY0ODQwNmU0ODViYjNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtMjksOSArMjks
OSBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
Ci0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KIAogI2lmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IGNlZGVkNzMwZjQ1N2ZhZGYwZTgyMjA0
ODJlMmRkZTcyODcyZjhkNDYuLmFmYThlMTJkODFiZDg1YmQ5NjNmOGRjYjJjOGJlYzU0Nzk3NGMw
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1Ry
dW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5n
VHJ1bmNhdG9yLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRv
ci5oIgogCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcAppbmRleCBiM2RkZDhjM2RmODA3OGRkY2M3N2FiNjNkNDQyMThhNjI2YmNhNDE4Li42
ZDg4Yzg4ZGQ0YWE2ZDJkMGFjMzRkMzE0YWY2ZGYyYmFlMjdkNTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApAQCAtNDAsNiArNDAsMjAg
QEAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitzdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYpOworfQorCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8PgorUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBv
bGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVG
b3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIHJldHVybiBhZG9wdENG
KFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShJT1MpCiBzdGF0aWMgQ0dDb2xv
clJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVJHQkEoQ0dDb2xvclJlZiBzb3VyY2VDb2xvcikK
QEAgLTEwOCwxMiArMTIyLDYgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQogICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVm
KCksIGNvbXBvbmVudHMpOwogfQogCi10ZW1wbGF0ZTw+Ci1SZXRhaW5QdHI8Q0dDb2xvclJlZj4g
VGlueUxSVUNhY2hlUG9saWN5PENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4+OjpjcmVhdGVW
YWx1ZUZvcktleShjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YobGVh
a0NHQ29sb3IoY29sb3IpKTsKLX0KLQogQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKICAgICBzd2l0Y2ggKGNvbG9yLnJnYigpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCmluZGV4IGZmMGJmODE5NzUwODE3Y2JlMmM3YmZjYmViODFmYjQxYTkxYTdh
ODMuLjE3Nzc5OWVhYWM3YzFmN2IyMjZkOGVkMGU0YWNkMDcwMDRiODk4OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRm9udENhc2Nh
ZGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIK
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2Y1MGE1ZDY1ODY1YTM0MWJmZWNmMzdjYjVjYmRj
OTY2ZjM4MTg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVX2gK
LSNkZWZpbmUgTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVX2gKLQotI2luY2x1ZGUgIlRleHRCcmVh
a0l0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgot
I2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTGluZUJyZWFrSXRlcmF0b3JQb29sKTsKLXB1YmxpYzoKLSAgICBMaW5l
QnJlYWtJdGVyYXRvclBvb2woKSB7IH0KLQotICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBv
b2wmIHNoYXJlZFBvb2woKQotICAgIHsKLSAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lm
aWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmlj
PExpbmVCcmVha0l0ZXJhdG9yUG9vbD47Ci0gICAgICAgIHJldHVybiAqKnBvb2w7Ci0gICAgfQot
Ci0gICAgc3RhdGljIFN0cmluZyBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCi0gICAgewotICAg
ICAgICBTdHJpbmdCdWlsZGVyIGxvY2FsZVdpdGhLZXl3b3JkOwotICAgICAgICBsb2NhbGVXaXRo
S2V5d29yZC5hcHBlbmQobG9jYWxlKTsKLSAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5k
TGl0ZXJhbCgiQGJyZWFrPSIpOwotICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICAgICAgY2Fz
ZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0
b3JNb2RlVUFYMTRMb29zZToKLSAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExp
dGVyYWwoImxvb3NlIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQnJl
YWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKLSAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3Jk
LmFwcGVuZExpdGVyYWwoIm5vcm1hbCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRTdHJpY3Q6Ci0gICAgICAgICAgICBsb2NhbGVX
aXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJzdHJpY3QiKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBsb2NhbGVXaXRoS2V5d29yZC50b1N0cmluZygpOwot
ICAgIH0KLQotICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKLSAgICB7Ci0g
ICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7Ci0gICAg
ICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQotICAgICAgICAgICAg
bG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbG9jYWxlOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9jYWxlV2l0
aEJyZWFrS2V5d29yZChsb2NhbGUsIG1vZGUpOwotCi0gICAgICAgIFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvciA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobV9wb29sW2ldLmZpcnN0ID09IGxvY2FsZVdp
dGhPcHRpb25hbEJyZWFrS2V5d29yZCkgewotICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbV9w
b29sW2ldLnNlY29uZDsKLSAgICAgICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKGkpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFpdGVyYXRvcikgewotICAgICAgICAgICAgaXRlcmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0
b3IobG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkLCBtb2RlLCBpc0NKSyk7Ci0gICAgICAg
ICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
Ci0KLSAgICAgICAgQVNTRVJUKCFtX3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikp
OwotICAgICAgICBtX3ZlbmRlZEl0ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhPcHRp
b25hbEJyZWFrS2V5d29yZCk7Ci0gICAgICAgIHJldHVybiBpdGVyYXRvcjsKLSAgICB9Ci0KLSAg
ICB2b2lkIHB1dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi0gICAgewotICAgICAgICBB
U1NFUlRfQVJHKGl0ZXJhdG9yLCBtX3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikp
OwotCi0gICAgICAgIGlmIChtX3Bvb2wuc2l6ZSgpID09IGNhcGFjaXR5KSB7Ci0gICAgICAgICAg
ICBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKG1fcG9vbFswXS5zZWNvbmQpOwotICAgICAgICAgICAg
bV9wb29sLnJlbW92ZSgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fcG9vbC5hcHBlbmQoRW50
cnkobV92ZW5kZWRJdGVyYXRvcnMudGFrZShpdGVyYXRvciksIGl0ZXJhdG9yKSk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OwotCi0gICAg
dHlwZWRlZiBzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5
OwotICAgIHR5cGVkZWYgVmVjdG9yPEVudHJ5LCBjYXBhY2l0eT4gUG9vbDsKLSAgICBQb29sIG1f
cG9vbDsKLSAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3Zl
bmRlZEl0ZXJhdG9yczsKLQotICAgIGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVh
a0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKLX07Ci0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCb3VuZGFyaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5k
YXJpZXMuY3BwCmluZGV4IGRmY2Y5YTM0NjJkNWIxYjI4NGQxOTU5OGFmZTAzMmIzZTRjZGNlMWIu
LjQ3ZDI0NDc1YWMwOTg5NGUwMzg4NTFhNDhiYjljMDVlZGRlZjM3YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCkBAIC0yNyw4ICsyNyw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKIAot
I2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBhNjZj
ZTBiN2VkMTQ3YWU3YzZiM2Q3Yjk3MDk4MjNlN2ZlMzI1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyOSArMCwwIEBACi0vKgot
ICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCi0KLSNp
bmNsdWRlICJMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKLSNpbmNsdWRlICJVVGV4dFByb3Zp
ZGVyTGF0aW4xLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCi0jaW5jbHVkZSA8
bXV0ZXg+Ci0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg+Ci0KLS8vIEZJWE1FOiBUaGlzIG5lZWRzIGEgYmV0dGVyIG5hbWUKLSNkZWZpbmUg
QURESVRJT05BTF9FTU9KSV9TVVBQT1JUIChQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKSkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi0vLyBJdGVyYXRvciBpbml0aWFsaXphdGlvbgotCi1zdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJdGVyYXRvclR5cGUgdHlw
ZSwgY29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkpCi17Ci0g
ICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1
YnJrX29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykpOwotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEg
YnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0
YXR1cyk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yOwotfQotCi0jaWYgIVBMQVRGT1JNKElPUykKLQot
c3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29u
c3QgY2hhciogYnJlYWtSdWxlcykKLXsKLSAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKLSAg
ICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RybGVuKGJyZWFrUnVsZXMpOwotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
ID0gU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnJlYWtSdWxlcyks
IGxlbmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3Bl
blJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMs
ICZvcGVuU3RhdHVzKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0
YXR1cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjogJXMgKCVkKSIsIHVf
ZXJyb3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKLSAgICByZXR1cm4gaXRlcmF0b3I7
Ci19Ci0KLSNlbmRpZgotCi0KLS8vIEl0ZXJhdG9yIHRleHQgc2V0dGluZwotCi1zdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRl
cmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsK
LSAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKLSAgICAgICAgdGV4dExvY2FsLnRl
eHQgPSBVVEVYVF9JTklUSUFMSVpFUjsKLSAgICAgICAgdGV4dExvY2FsLnRleHQuZXh0cmFTaXpl
ID0gc2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOwotICAgICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0
cmEgPSB0ZXh0TG9jYWwuYnVmZmVyOwotCi0gICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0aW4xVVRleHRQcm92
aWRlcigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCAm
b3BlblN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIs
IG9wZW5TdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAg
IHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRv
ciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0
U3RhdHVzKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3
aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIH0KLQotICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
ICAgIHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJh
dG9yKSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksICZzZXRUZXh0U3Rh
dHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiAmaXRlcmF0b3I7Ci19Ci0KLXN0
YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkKLXsKLSAgICBpZiAo
c3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7Ci0g
ICAgICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7Ci0gICAgICAgIHRleHRM
b2NhbC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKLSAgICAgICAg
dGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKLQotICAgICAgICBVRXJy
b3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVUZXh0KiB0ZXh0ID0g
b3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNo
YXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRM
ZW5ndGgsICZvcGVuU3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92
aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7Ci0g
ICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKLSAgICAgICAgICAgIExPR19F
UlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVz
KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgdXRl
eHRfY2xvc2UodGV4dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVRleHQgdGV4dExvY2FsID0g
VVRFWFRfSU5JVElBTElaRVI7Ci0KLSAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYxNkNvbnRleHRBd2FyZVVU
ZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVu
Z3RoKCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7Ci0g
ICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJP
Uigib3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMg
JWQiLCBvcGVuU3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAg
ICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1
YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3Ip
LCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0
YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0
aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICB9Ci0KLSAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuICZpdGVyYXRvcjsKLX0KLQotCi0vLyBTdGF0aWMgaXRlcmF0b3JzCi0KLVRleHRCcmVh
a0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBz
dGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlh
bGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7Ci0gICAgaWYgKCFzdGF0aWNXb3JkQnJlYWtJdGVyYXRv
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJh
dG9yKCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKLX0KLQotVGV4dEJyZWFrSXRl
cmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBz
dGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciA9IGlu
aXRpYWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKLSAgICBpZiAoIXN0YXRpY1NlbnRlbmNl
QnJlYWtJdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gc2V0
VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Ci19
Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcg
c3RyaW5nKQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgLy8gVGhpcyBydWxlIHNldCBpcyBi
YXNlZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2YgSUNVIDQuMAotICAgIC8v
IDxodHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3MvcmVsZWFz
ZS00LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KLSAgICAvLyBUaGUgbWFqb3IgZGlm
ZmVyZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVkIGJlbG93OgotICAgIC8v
ICogUmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gU3BhY2luZ01hcmt9XScg
d2l0aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9IC0gJEV4dGVuZF0nIGZv
ciBJQ1UgMy44IG9yIGVhcmxpZXI7Ci0gICAgLy8gKiBSZW1vdmVkIHJ1bGVzIHRoYXQgcHJldmVu
dCBhIGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJhY3RlcnMgKEJ1ZyAyNDM0
Mik7Ci0gICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3Zp
bmcgYWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBleGNlcHQgVGFtaWwgKEJ1
ZyAxNTc5MCksIGFuZDsKLSAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNv
ciBmcm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2FyYSB2b2ljZWQg
bWFya3MuCi0gICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwgaW5kaWNhdG9yIHN5bWJv
bHMuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9Ci0gICAgICAgICIkQ1IgICAgICA9
IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgotICAgICAgICAiJExGICAgICAg
PSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKLSAgICAgICAgIiRDb250cm9s
ID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1dOyIKLSAgICAgICAgIiRW
b2ljZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiICAvLyBKYXBhbmVzZSBoYWxmLXdpZHRoIGth
dGFrYW5hIHZvaWNlZCBtYXJrcwotICAgICAgICAiJEV4dGVuZCAgPSBbXFxwe0dyYXBoZW1lX0Ns
dXN0ZXJfQnJlYWsgPSBFeHRlbmR9ICRWb2ljZU1hcmtzIC0gW1xcdTBFMzAgXFx1MEUzMiBcXHUw
RTQ1IFxcdTBFQjAgXFx1MEVCMl1dOyIKLSAgICAgICAgIiRTcGFjaW5nTWFyayA9IFtbXFxwe0dl
bmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9XSAtICRFeHRlbmRdOyIKLSAgICAgICAgIiRM
ICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTH1dOyIKLSAgICAgICAgIiRW
ICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gVn1dOyIKLSAgICAgICAgIiRU
ICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gVH1dOyIKLSAgICAgICAgIiRM
ViAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZ9XTsiCi0gICAgICAgICIk
TFZUICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWVH1dOyIKLSAgICAgICAg
IiRIaW4wICAgID0gW1xcdTA5MDUtXFx1MDkzOV07IiAgICAvLyBEZXZhbmFnYXJpIExldHRlciBB
LC4uLixIYQotICAgICAgICAiJEhpblYgICAgPSBcXHUwOTREOyIgICAgICAgICAgICAgIC8vIERl
dmFuYWdhcmkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRIaW4xICAgID0gW1xcdTA5MTUtXFx1MDkz
OV07IiAgICAvLyBEZXZhbmFnYXJpIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRCZW4wICAg
ID0gW1xcdTA5ODUtXFx1MDlCOV07IiAgICAvLyBCZW5nYWxpIExldHRlciBBLC4uLixIYQotICAg
ICAgICAiJEJlblYgICAgPSBcXHUwOUNEOyIgICAgICAgICAgICAgIC8vIEJlbmdhbGkgU2lnbiBW
aXJhbWEKLSAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1MDlCOV07IiAgICAvLyBCZW5n
YWxpIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRQYW4wICAgID0gW1xcdTBBMDUtXFx1MEEz
OV07IiAgICAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRQYW5WICAgID0g
XFx1MEE0RDsiICAgICAgICAgICAgICAvLyBHdXJtdWtoaSBTaWduIFZpcmFtYQotICAgICAgICAi
JFBhbjEgICAgPSBbXFx1MEExNS1cXHUwQTM5XTsiICAgIC8vIEd1cm11a2hpIExldHRlciBLYSwu
Li4sSGEKLSAgICAgICAgIiRHdWowICAgID0gW1xcdTBBODUtXFx1MEFCOV07IiAgICAvLyBHdWph
cmF0aSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRHdWpWICAgID0gXFx1MEFDRDsiICAgICAg
ICAgICAgICAvLyBHdWphcmF0aSBTaWduIFZpcmFtYQotICAgICAgICAiJEd1ajEgICAgPSBbXFx1
MEE5NS1cXHUwQUI5XTsiICAgIC8vIEd1amFyYXRpIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAg
IiRPcmkwICAgID0gW1xcdTBCMDUtXFx1MEIzOV07IiAgICAvLyBPcml5YSBMZXR0ZXIgQSwuLi4s
SGEKLSAgICAgICAgIiRPcmlWICAgID0gXFx1MEI0RDsiICAgICAgICAgICAgICAvLyBPcml5YSBT
aWduIFZpcmFtYQotICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIxNS1cXHUwQjM5XTsiICAgIC8v
IE9yaXlhIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRUZWwwICAgID0gW1xcdTBDMDUtXFx1
MEMzOV07IiAgICAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkVGVsViAgICA9
IFxcdTBDNEQ7IiAgICAgICAgICAgICAgLy8gVGVsdWd1IFNpZ24gVmlyYW1hCi0gICAgICAgICIk
VGVsMSAgICA9IFtcXHUwQzE0LVxcdTBDMzldOyIgICAgLy8gVGVsdWd1IExldHRlciBLYSwuLi4s
SGEKLSAgICAgICAgIiRLYW4wICAgID0gW1xcdTBDODUtXFx1MENCOV07IiAgICAvLyBLYW5uYWRh
IExldHRlciBBLC4uLixIYQotICAgICAgICAiJEthblYgICAgPSBcXHUwQ0NEOyIgICAgICAgICAg
ICAgIC8vIEthbm5hZGEgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRLYW4xICAgID0gW1xcdTBDOTUt
XFx1MENCOV07IiAgICAvLyBLYW5uYWRhIExldHRlciBBLC4uLixIYQotICAgICAgICAiJE1hbDAg
ICAgPSBbXFx1MEQwNS1cXHUwRDM5XTsiICAgIC8vIE1hbGF5YWxhbSBMZXR0ZXIgQSwuLi4sSGEK
LSAgICAgICAgIiRNYWxWICAgID0gXFx1MEQ0RDsiICAgICAgICAgICAgICAvLyBNYWxheWFsYW0g
U2lnbiBWaXJhbWEKLSAgICAgICAgIiRNYWwxICAgID0gW1xcdTBEMTUtXFx1MEQzOV07IiAgICAv
LyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkUkkgICAgICA9IFtcXFUwMDAx
RjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRpY2F0b3JzCi0gICAgICAg
ICIkWldKICAgICA9IFxcdTIwMEQ7IiAgICAgICAgICAgICAgIC8vIFplcm8gd2lkdGggam9pbmVy
Ci0gICAgICAgICIkRW1vamlWYXIgPSBbXFx1RkUwRl07IiAgICAgICAgICAgIC8vIEVtb2ppLXN0
eWxlIHZhcmlhdGlvbiBzZWxlY3RvcgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAg
ICAgICAiJEVtb2ppRm9yU2VxcyA9IFtcXHUyNzY0IFxcVTAwMDFGNDQxIFxcVTAwMDFGNDY2LVxc
VTAwMDFGNDY5IFxcVTAwMDFGNDhCIFxcVTAwMDFGNUU4XTsiIC8vIEVtb2ppIHRoYXQgcGFydGlj
aXBhdGUgaW4gWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFE
IFxcdTI2RjkgXFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFG
M0M0IFxcVTAwMDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAw
MDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxc
VTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1
LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFG
NTk1IFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAw
MDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxc
VTAwMDFGOTE4XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCi0j
ZWxzZQotICAgICAgICAiJEVtb2ppRm9yU2VxcyA9IFtcXHUyNzY0IFxcVTAwMDFGNDY2LVxcVTAw
MDFGNDY5IFxcVTAwMDFGNDhCXTsiIC8vIEVtb2ppIHRoYXQgcGFydGljaXBhdGUgaW4gWldKIHNl
cXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1Mjcw
QyBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAx
RjNDQSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUw
MDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBc
XFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRB
QSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAx
RjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIg
Ly8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycwotI2VuZGlmCi0gICAgICAg
ICIkRW1vamlNb2RzID0gW1xcVTAwMDFGM0ZCLVxcVTAwMDFGM0ZGXTsiIC8vIEZpdHpwYXRyaWNr
IG1vZGlmaWVycwotICAgICAgICAiISFjaGFpbjsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQ
T1JUCi0gICAgICAgICIhIVJJTm9DaGFpbjsiCi0jZW5kaWYKLSAgICAgICAgIiEhZm9yd2FyZDsi
Ci0gICAgICAgICIkQ1IgJExGOyIKLSAgICAgICAgIiRMICgkTCB8ICRWIHwgJExWIHwgJExWVCk7
IgotICAgICAgICAiKCRMViB8ICRWKSAoJFYgfCAkVCk7IgotICAgICAgICAiKCRMVlQgfCAkVCkg
JFQ7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICAgICAiJFJJICRSSSAkRXh0
ZW5kKiAvICRSSTsiCi0gICAgICAgICIkUkkgJFJJICRFeHRlbmQqOyIKLSAgICAgICAgIlteJENv
bnRyb2wgJENSICRMRl0gJEV4dGVuZDsiCi0gICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRT
cGFjaW5nTWFyazsiCi0jZWxzZQotICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAkRXh0ZW5k
OyIKLSAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJrOyIKLSAgICAgICAg
IiRSSSAkUkkgLyAkUkk7IgotICAgICAgICAiJFJJICRSSTsiCi0jZW5kaWYKLSAgICAgICAgIiRI
aW4wICRIaW5WICRIaW4xOyIgICAgICAgICAgICAgICAvLyBEZXZhbmFnYXJpIFZpcmFtYSAoZm9y
d2FyZCkKLSAgICAgICAgIiRCZW4wICRCZW5WICRCZW4xOyIgICAgICAgICAgICAgICAvLyBCZW5n
YWxpIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRQYW4wICRQYW5WICRQYW4xOyIgICAgICAg
ICAgICAgICAvLyBHdXJtdWtoaSBWaXJhbWEgKGZvcndhcmQpCi0gICAgICAgICIkR3VqMCAkR3Vq
ViAkR3VqMTsiICAgICAgICAgICAgICAgLy8gR3VqYXJhdGkgVmlyYW1hIChmb3J3YXJkKQotICAg
ICAgICAiJE9yaTAgJE9yaVYgJE9yaTE7IiAgICAgICAgICAgICAgIC8vIE9yaXlhIFZpcmFtYSAo
Zm9yd2FyZCkKLSAgICAgICAgIiRUZWwwICRUZWxWICRUZWwxOyIgICAgICAgICAgICAgICAvLyBU
ZWx1Z3UgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJEthbjAgJEthblYgJEthbjE7IiAgICAg
ICAgICAgICAgIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJE1hbDAgJE1h
bFYgJE1hbDE7IiAgICAgICAgICAgICAgIC8vIE1hbGF5YWxhbSBWaXJhbWEgKGZvcndhcmQpCi0g
ICAgICAgICIkWldKICRFbW9qaUZvclNlcXM7IiAgICAgICAgICAgICAgLy8gRG9uJ3QgYnJlYWsg
aW4gZW1vamkgWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/
ICRFbW9qaU1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3Nz
aWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCi0g
ICAgICAgICIhIXJldmVyc2U7IgotICAgICAgICAiJExGICRDUjsiCi0gICAgICAgICIoJEwgfCAk
ViB8ICRMViB8ICRMVlQpICRMOyIKLSAgICAgICAgIigkViB8ICRUKSAoJExWIHwgJFYpOyIKLSAg
ICAgICAgIiRUICgkTFZUIHwgJFQpOyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAg
ICAgICAgIiRFeHRlbmQqICRSSSAkUkkgLyAkRXh0ZW5kKiAkUkkgJFJJOyIKLSAgICAgICAgIiRF
eHRlbmQqICRSSSAkUkk7IgotICAgICAgICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENSICRM
Rl07IgotICAgICAgICAiJFNwYWNpbmdNYXJrIFteJENvbnRyb2wgJENSICRMRl07IgotI2Vsc2UK
LSAgICAgICAgIiRFeHRlbmQgICAgICBbXiRDb250cm9sICRDUiAkTEZdOyIKLSAgICAgICAgIiRT
cGFjaW5nTWFyayBbXiRDb250cm9sICRDUiAkTEZdOyIKLSAgICAgICAgIiRSSSAkUkkgLyAkUkkg
JFJJOyIKLSAgICAgICAgIiRSSSAkUkk7IgotI2VuZGlmCi0gICAgICAgICIkSGluMSAkSGluViAk
SGluMDsiICAgICAgICAgICAgICAgLy8gRGV2YW5hZ2FyaSBWaXJhbWEgKGJhY2t3YXJkKQotICAg
ICAgICAiJEJlbjEgJEJlblYgJEJlbjA7IiAgICAgICAgICAgICAgIC8vIEJlbmdhbGkgVmlyYW1h
IChiYWNrd2FyZCkKLSAgICAgICAgIiRQYW4xICRQYW5WICRQYW4wOyIgICAgICAgICAgICAgICAv
LyBHdXJtdWtoaSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJEd1ajEgJEd1alYgJEd1ajA7
IiAgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAgICIk
T3JpMSAkT3JpViAkT3JpMDsiICAgICAgICAgICAgICAgLy8gR3VqYXJhdGkgVmlyYW1hIChiYWNr
d2FyZCkKLSAgICAgICAgIiRUZWwxICRUZWxWICRUZWwwOyIgICAgICAgICAgICAgICAvLyBUZWx1
Z3UgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRLYW4xICRLYW5WICRLYW4wOyIgICAgICAg
ICAgICAgICAvLyBLYW5uYWRhIFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAgICIkTWFsMSAkTWFs
ViAkTWFsMDsiICAgICAgICAgICAgICAgLy8gTWFsYXlhbGFtIFZpcmFtYSAoYmFja3dhcmQpCi0g
ICAgICAgICIkRW1vamlGb3JTZXFzICRaV0o7IiAgICAgICAgICAgICAgLy8gRG9uJ3QgYnJlYWsg
aW4gZW1vamkgWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/ICRF
bW9qaUZvck1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3Nz
aWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCi0j
aWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIhIXNhZmVfcmV2ZXJzZTsiCi0g
ICAgICAgICIkUkkgJFJJKzsiCi0gICAgICAgICJbJEVtb2ppVmFyICRFbW9qaU1vZHNdKyAkRW1v
amlGb3JNb2RzOyIKLSAgICAgICAgIiEhc2FmZV9mb3J3YXJkOyIKLSAgICAgICAgIiRSSSAkUkkr
OyIKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9qaVZhciAkRW1vamlNb2RzXSs7IjsKLSNl
bHNlCi0gICAgICAgICJbJEVtb2ppVmFyICRFbW9qaU1vZHNdKyAkRW1vamlGb3JNb2RzOyIKLSAg
ICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9qaVZhciAkRW1vamlNb2RzXSs7IgotICAgICAgICAi
ISFzYWZlX3JldmVyc2U7IgotICAgICAgICAiISFzYWZlX2ZvcndhcmQ7IjsKLSNlbmRpZgotICAg
IHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9
IGluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyhrUnVsZXMpOwotI2Vsc2UgLy8gUExBVEZPUk0o
SU9TKQotICAgIC8vIFVzZSB0aGUgc3BlY2lhbCBUaGFpIGNoYXJhY3RlciBicmVhayBpdGVyYXRv
ciBmb3IgYWxsIGxvY2FsZXMKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY0N1
cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIs
ICJ0aCIpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0KLSAgICBpZiAoIXN0YXRpY0N1cnNv
ck1vdmVtZW50SXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJu
IHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciwgc3RyaW5n
KTsKLX0KLQotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRlcmF0
b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCi17Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yID0gTGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKCkudGFrZShsb2NhbGUsIG1v
ZGUsIGlzQ0pLKTsKLSAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIHJldHVybiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IoKml0ZXJhdG9yLCBz
dHJpbmcsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKLX0KLQotdm9pZCByZWxl
YXNlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotewotICAg
IEFTU0VSVF9BUkcoaXRlcmF0b3IsIGl0ZXJhdG9yKTsKLQotICAgIExpbmVCcmVha0l0ZXJhdG9y
UG9vbDo6c2hhcmVkUG9vbCgpLnB1dChpdGVyYXRvcik7Ci19Ci0KLXN0YXRpYyBjb25zdCBjaGFy
KiB1YXgxNFByb2xvZ3VlID0KLSAgICAiISFjaGFpbjsiCi0gICAgIiEhTEJDTU5vQ2hhaW47Igot
ICAgICIhIWxvb2tBaGVhZEhhcmRCcmVhazsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRB
c3NpZ25tZW50c0JlZm9yZSA9Ci0gICAgLy8gZXhwbGljaXRseSBlbnVtZXJhdGUgJENKIHNpbmNl
IElDVSB2ZXJzaW9ucyBwcmlvciB0byA0OSBkb24ndCBzdXBwb3J0IDpMaW5lQnJlYWs9Q29uZGl0
aW9uYWxfSmFwYW5lc2VfU3RhcnRlcjoKLSAgICAiJENKID0gWyIKLSNpZiAoVV9JQ1VfVkVSU0lP
Tl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVNID49IDkpCi0gICAg
IjpMaW5lQnJlYWs9Q29uZGl0aW9uYWxfSmFwYW5lc2VfU3RhcnRlcjoiCi0jZWxzZQotICAgICJc
XHUzMDQxXFx1MzA0M1xcdTMwNDVcXHUzMDQ3XFx1MzA0OVxcdTMwNjNcXHUzMDgzXFx1MzA4NVxc
dTMwODdcXHUzMDhFXFx1MzA5NVxcdTMwOTZcXHUzMEExXFx1MzBBM1xcdTMwQTVcXHUzMEE3Igot
ICAgICJcXHUzMEE5XFx1MzBDM1xcdTMwRTNcXHUzMEU1XFx1MzBFN1xcdTMwRUVcXHUzMEY1XFx1
MzBGNlxcdTMwRkMiCi0gICAgIlxcdTMxRjBcXHUzMUYxXFx1MzFGMlxcdTMxRjNcXHUzMUY0XFx1
MzFGNVxcdTMxRjZcXHUzMUY3XFx1MzFGOFxcdTMxRjlcXHUzMUZBXFx1MzFGQlxcdTMxRkNcXHUz
MUZEXFx1MzFGRVxcdTMxRkYiCi0gICAgIlxcdUZGNjdcXHVGRjY4XFx1RkY2OVxcdUZGNkFcXHVG
RjZCXFx1RkY2Q1xcdUZGNkRcXHVGRjZFXFx1RkY2RlxcdUZGNzAiCi0jZW5kaWYKLSAgICAiXTsi
OwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLID0K
LSAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAxM107IgotICAgICIkRVhfU1VCID0gW1xcdTAw
MjFcXHUwMDNGXFx1RkYwMVxcdUZGMUZdOyIKLSAgICAiJElEX1NVQiA9ICcnOyIKLSAgICAiJElO
X1NVQiA9IFtcXHUyMDI1XFx1MjAyNl07IgotICAgICIkSVNfU1VCID0gW1xcdTAwM0FcXHUwMDNC
XTsiCi0gICAgIiROU19TVUIgPSBbXFx1MjAzQ1xcdTIwNDdcXHUyMDQ4XFx1MjA0OVxcdTMwMDVc
XHUzMDFDXFx1MzAzQlxcdTMwOURcXHUzMDlFXFx1MzBBMFxcdTMwRkJcXHUzMEZEXFx1MzBGRVxc
dUZGMUFcXHVGRjFCXFx1RkY2NV07IgotICAgICIkUE9fU1VCID0gW1xcdTAwMjVcXHUwMEEyXFx1
MDBCMFxcdTIwMzBcXHUyMDMyXFx1MjAzM1xcdTIxMDNcXHVGRjA1XFx1RkZFMF07IgotICAgICIk
UFJfU1VCID0gW1xcdTAwMjRcXHUwMEEzXFx1MDBBNVxcdTIwQUNcXHUyMTE2XFx1RkYwNFxcdUZG
RTFcXHVGRkU1XTsiCi0gICAgIiRJRF9BREQgPSBbJENKICRCQV9TVUIgJEVYX1NVQiAkSU5fU1VC
ICRJU19TVUIgJE5TX1NVQiAkUE9fU1VCICRQUl9TVUJdOyIKLSAgICAiJE5TX0FERCA9ICcnOyI7
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTG9vc2VOb25DSksg
PQotICAgICIkQkFfU1VCID0gJyc7IgotICAgICIkRVhfU1VCID0gJyc7IgotICAgICIkSURfU1VC
ID0gJyc7IgotICAgICIkSU5fU1VCID0gW1xcdTIwMjVcXHUyMDI2XTsiCi0gICAgIiRJU19TVUIg
PSAnJzsiCi0gICAgIiROU19TVUIgPSBbXFx1MzAwNVxcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMw
RkRcXHUzMEZFXTsiCi0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0g
ICAgIiRJRF9BREQgPSBbJENKICRJTl9TVUIgJE5TX1NVQl07IgotICAgICIkTlNfQUREID0gJyc7
IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxDSksg
PQotICAgICIkQkFfU1VCID0gW1xcdTIwMTBcXHUyMDEzXTsiCi0gICAgIiRFWF9TVUIgPSAnJzsi
Ci0gICAgIiRJTl9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJU19TVUIg
PSAnJzsiCi0gICAgIiROU19TVUIgPSBbXFx1MzAxQ1xcdTMwQTBdOyIKLSAgICAiJFBPX1NVQiA9
ICcnOyIKLSAgICAiJFBSX1NVQiA9ICcnOyIKLSAgICAiJElEX0FERCA9IFskQ0ogJEJBX1NVQiAk
TlNfU1VCXTsiCi0gICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4
MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbE5vbkNKSyA9Ci0gICAgIiRCQV9TVUIgPSAnJzsiCi0g
ICAgIiRFWF9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSAn
JzsiCi0gICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSAnJzsiCi0gICAgIiRQT19T
VUIgPSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSBbJENKXTsiCi0g
ICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50
c0N1c3RvbVN0cmljdENKSyA9Ci0gICAgIiRCQV9TVUIgPSAnJzsiCi0gICAgIiRFWF9TVUIgPSAn
JzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSAnJzsiCi0gICAgIiRJU19T
VUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSAnJzsiCi0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAg
IiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSAnJzsiCi0gICAgIiROU19BREQgPSBbJENK
XTsiOwotCi0jZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3ROb25DSksgICAgICB1
YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Q0pLCi0jZGVmaW5lIHVheDE0QXNzaWdubWVudHND
dXN0b21EZWZhdWx0Q0pLICAgICAgICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLCi0j
ZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLICAgICB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLCi0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2ln
bm1lbnRzQWZ0ZXIgPQotICAgICIkQUkgPSBbOkxpbmVCcmVhayA9IEFtYmlndW91czpdOyIKLSAg
ICAiJEFMID0gWzpMaW5lQnJlYWsgPSBBbHBoYWJldGljOl07IgotICAgICIkQkEgPSBbWzpMaW5l
QnJlYWsgPSBCcmVha19BZnRlcjpdIC0gJEJBX1NVQl07IgotICAgICIkQkIgPSBbOkxpbmVCcmVh
ayA9IEJyZWFrX0JlZm9yZTpdOyIKLSAgICAiJEJLID0gWzpMaW5lQnJlYWsgPSBNYW5kYXRvcnlf
QnJlYWs6XTsiCi0gICAgIiRCMiA9IFs6TGluZUJyZWFrID0gQnJlYWtfQm90aDpdOyIKLSAgICAi
JENCID0gWzpMaW5lQnJlYWsgPSBDb250aW5nZW50X0JyZWFrOl07IgotICAgICIkQ0wgPSBbOkxp
bmVCcmVhayA9IENsb3NlX1B1bmN0dWF0aW9uOl07IgotICAgICIkQ00gPSBbOkxpbmVCcmVhayA9
IENvbWJpbmluZ19NYXJrOl07IgotICAgICIkQ1AgPSBbOkxpbmVCcmVhayA9IENsb3NlX1BhcmVu
dGhlc2lzOl07IgotICAgICIkQ1IgPSBbOkxpbmVCcmVhayA9IENhcnJpYWdlX1JldHVybjpdOyIK
LSAgICAiJEVYID0gW1s6TGluZUJyZWFrID0gRXhjbGFtYXRpb246XSAtICRFWF9TVUJdOyIKLSAg
ICAiJEdMID0gWzpMaW5lQnJlYWsgPSBHbHVlOl07IgotI2lmIChVX0lDVV9WRVJTSU9OX01BSk9S
X05VTSA+PSA0KSAmJiAoVV9JQ1VfVkVSU0lPTl9NSU5PUl9OVU0gPj0gOSkKLSAgICAiJEhMID0g
WzpMaW5lQnJlYWsgPSBIZWJyZXdfTGV0dGVyOl07IgotI2Vsc2UKLSAgICAiJEhMID0gW1s6SGVi
cmV3Ol0gJiBbOkxldHRlcjpdXTsiCi0jZW5kaWYKLSAgICAiJEhZID0gWzpMaW5lQnJlYWsgPSBI
eXBoZW46XTsiCi0gICAgIiRIMiA9IFs6TGluZUJyZWFrID0gSDI6XTsiCi0gICAgIiRIMyA9IFs6
TGluZUJyZWFrID0gSDM6XTsiCi0gICAgIiRJRCA9IFtbW1s6TGluZUJyZWFrID0gSWRlb2dyYXBo
aWM6XSAtICRDSl0gJElEX0FERF0gLSAkSURfU1VCXTsiCi0gICAgIiRJTiA9IFtbOkxpbmVCcmVh
ayA9IEluc2VwYXJhYmxlOl0gLSAkSU5fU1VCXTsiCi0gICAgIiRJUyA9IFtbOkxpbmVCcmVhayA9
IEluZml4X051bWVyaWM6XSAtICRJU19TVUJdOyIKLSAgICAiJEpMID0gWzpMaW5lQnJlYWsgPSBK
TDpdOyIKLSAgICAiJEpWID0gWzpMaW5lQnJlYWsgPSBKVjpdOyIKLSAgICAiJEpUID0gWzpMaW5l
QnJlYWsgPSBKVDpdOyIKLSAgICAiJExGID0gWzpMaW5lQnJlYWsgPSBMaW5lX0ZlZWQ6XTsiCi0g
ICAgIiROTCA9IFs6TGluZUJyZWFrID0gTmV4dF9MaW5lOl07IgotICAgICIkTlMgPSBbW1tbOkxp
bmVCcmVhayA9IE5vbnN0YXJ0ZXI6XSAtICRDSl0gJE5TX0FERF0gLSAkTlNfU1VCXTsiCi0gICAg
IiROVSA9IFs6TGluZUJyZWFrID0gTnVtZXJpYzpdOyIKLSAgICAiJE9QID0gWzpMaW5lQnJlYWsg
PSBPcGVuX1B1bmN0dWF0aW9uOl07IgotICAgICIkUE8gPSBbWzpMaW5lQnJlYWsgPSBQb3N0Zml4
X051bWVyaWM6XSAtICRQT19TVUJdOyIKLSAgICAiJFBSID0gW1s6TGluZUJyZWFrID0gUHJlZml4
X051bWVyaWM6XSAtICRQUl9TVUJdOyIKLSAgICAiJFFVID0gWzpMaW5lQnJlYWsgPSBRdW90YXRp
b246XTsiCi0gICAgIiRSSSA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IgotICAgICIkU0Eg
PSBbOkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKLSAgICAiJFNHID0gWzpMaW5lQnJl
YWsgPSBTdXJyb2dhdGU6XTsiCi0gICAgIiRTUCA9IFs6TGluZUJyZWFrID0gU3BhY2U6XTsiCi0g
ICAgIiRTWSA9IFs6TGluZUJyZWFrID0gQnJlYWtfU3ltYm9sczpdOyIKLSAgICAiJFdKID0gWzpM
aW5lQnJlYWsgPSBXb3JkX0pvaW5lcjpdOyIKLSAgICAiJFhYID0gWzpMaW5lQnJlYWsgPSBVbmtu
b3duOl07IgotICAgICIkWlcgPSBbOkxpbmVCcmVhayA9IFpXU3BhY2U6XTsiCi0gICAgIiRaV0og
PSBcXHUyMDBEOyIKLSAgICAiJEVtb2ppVmFyID0gXFx1RkUwRjsiCi0jaWYgQURESVRJT05BTF9F
TU9KSV9TVVBQT1JUCi0gICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ0MSBc
XFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4QiBcXFUwMDAxRjVFOF07IgotICAgICIk
RW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBcXHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYz
ODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAw
MUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxV
MDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEt
XFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1
NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAwMUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAw
MUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxV
MDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThdIDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBG
aXR6cGF0cmljayBtb2RpZmllcnMKLSNlbHNlCi0gICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2
NCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4Ql07IgotICAgICIkRW1vamlGb3JN
b2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxc
VTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQz
IFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFG
NDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAw
MDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxc
VTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0
LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJp
Y2sgbW9kaWZpZXJzCi0jZW5kaWYKLSAgICAiJEVtb2ppTW9kcyA9IFtcXFUwMDAxRjNGQi1cXFUw
MDAxRjNGRl07IgotICAgICIkZGljdGlvbmFyeSA9IFs6TGluZUJyZWFrID0gQ29tcGxleF9Db250
ZXh0Ol07IgotICAgICIkQUxQbHVzID0gWyRBTCAkQUkgJFNBICRTRyAkWFhdOyIKLSAgICAiJEFM
Y20gPSAkQUxQbHVzICRDTSo7IgotICAgICIkQkFjbSA9ICRCQSAkQ00qOyIKLSAgICAiJEJCY20g
PSAkQkIgJENNKjsiCi0gICAgIiRCMmNtID0gJEIyICRDTSo7IgotICAgICIkQ0xjbSA9ICRDTCAk
Q00qOyIKLSAgICAiJENQY20gPSAkQ1AgJENNKjsiCi0gICAgIiRFWGNtID0gJEVYICRDTSo7Igot
ICAgICIkR0xjbSA9ICRHTCAkQ00qOyIKLSAgICAiJEhMY20gPSAkSEwgJENNKjsiCi0gICAgIiRI
WWNtID0gJEhZICRDTSo7IgotICAgICIkSDJjbSA9ICRIMiAkQ00qOyIKLSAgICAiJEgzY20gPSAk
SDMgJENNKjsiCi0gICAgIiRJRGNtID0gJElEICRDTSo7IgotICAgICIkSU5jbSA9ICRJTiAkQ00q
OyIKLSAgICAiJElTY20gPSAkSVMgJENNKjsiCi0gICAgIiRKTGNtID0gJEpMICRDTSo7IgotICAg
ICIkSlZjbSA9ICRKViAkQ00qOyIKLSAgICAiJEpUY20gPSAkSlQgJENNKjsiCi0gICAgIiROU2Nt
ID0gJE5TICRDTSo7IgotICAgICIkTlVjbSA9ICROVSAkQ00qOyIKLSAgICAiJE9QY20gPSAkT1Ag
JENNKjsiCi0gICAgIiRQT2NtID0gJFBPICRDTSo7IgotICAgICIkUFJjbSA9ICRQUiAkQ00qOyIK
LSAgICAiJFFVY20gPSAkUVUgJENNKjsiCi0gICAgIiRSSWNtID0gJFFVICRDTSo7IgotICAgICIk
U1ljbSA9ICRTWSAkQ00qOyIKLSAgICAiJFdKY20gPSAkV0ogJENNKjsiOwotCi1zdGF0aWMgY29u
c3QgY2hhciogdWF4MTRGb3J3YXJkID0KLSAgICAiISFmb3J3YXJkOyIKLSAgICAiJENBTl9DTSA9
IFteJFNQICRCSyAkQ1IgJExGICROTCAkWlcgJENNXTsiCi0gICAgIiRDQU5UX0NNID0gWyRTUCAk
QksgJENSICRMRiAkTkwgJFpXICRDTV07IgotICAgICIkQUxfRk9MTE9XX05PQ00gPSBbJEJLICRD
UiAkTEYgJE5MICRaVyAkU1BdOyIKLSAgICAiJEFMX0ZPTExPV19DTSA9IFskQ0wgJENQICRFWCAk
SEwgJElTICRTWSAkV0ogJEdMICRPUCAkUVUgJEJBICRIWSAkTlMgJElOICROVSAkQUxQbHVzXTsi
Ci0gICAgIiRBTF9GT0xMT1cgPSBbJEFMX0ZPTExPV19OT0NNICRBTF9GT0xMT1dfQ01dOyIKLSAg
ICAiJExCNEJyZWFrcyA9IFskQksgJENSICRMRiAkTkxdOyIKLSAgICAiJExCNE5vbkJyZWFrcyA9
IFteJEJLICRDUiAkTEYgJE5MXTsiCi0gICAgIiRMQjhCcmVha3MgPSBbJExCNEJyZWFrcyAkWldd
OyIKLSAgICAiJExCOE5vbkJyZWFrcyA9IFtbJExCNE5vbkJyZWFrc10gLSBbJFpXXV07IgotICAg
ICIkTEIxOE5vbkJyZWFrcyA9IFskTEI4Tm9uQnJlYWtzIC0gWyRTUF1dOyIKLSAgICAiJExCMThC
cmVha3MgPSBbJExCOEJyZWFrcyAkU1BdOyIKLSAgICAiJExCMjBOb25CcmVha3MgPSBbJExCMThO
b25CcmVha3MgLSAkQ0JdOyIKLSAgICAiJEFMUGx1cyAkQ00rOyIKLSAgICAiJEJBICRDTSs7Igot
ICAgICIkQkIgJENNKzsiCi0gICAgIiRCMiAkQ00rOyIKLSAgICAiJENMICRDTSs7IgotICAgICIk
Q1AgJENNKzsiCi0gICAgIiRFWCAkQ00rOyIKLSAgICAiJEdMICRDTSs7IgotICAgICIkSEwgJENN
KzsiCi0gICAgIiRIWSAkQ00rOyIKLSAgICAiJEgyICRDTSs7IgotICAgICIkSDMgJENNKzsiCi0g
ICAgIiRJRCAkQ00rOyIKLSAgICAiJElOICRDTSs7IgotICAgICIkSVMgJENNKzsiCi0gICAgIiRK
TCAkQ00rOyIKLSAgICAiJEpWICRDTSs7IgotICAgICIkSlQgJENNKzsiCi0gICAgIiROUyAkQ00r
OyIKLSAgICAiJE5VICRDTSs7IgotICAgICIkT1AgJENNKzsiCi0gICAgIiRQTyAkQ00rOyIKLSAg
ICAiJFBSICRDTSs7IgotICAgICIkUVUgJENNKzsiCi0gICAgIiRTWSAkQ00rOyIKLSAgICAiJFdK
ICRDTSs7IgotICAgICIkQ1IgJExGIHsxMDB9OyIKLSAgICAiJExCNE5vbkJyZWFrcz8gJExCNEJy
ZWFrcyB7MTAwfTsiCi0gICAgIiRDQU5fQ00gJENNKiAkTEI0QnJlYWtzIHsxMDB9OyIKLSAgICAi
JENNKyAkTEI0QnJlYWtzIHsxMDB9OyIKLSAgICAiJExCNE5vbkJyZWFrcyBbJFNQICRaV107Igot
ICAgICIkQ0FOX0NNICRDTSogWyRTUCAkWlddOyIKLSAgICAiJENNKyBbJFNQICRaV107IgotICAg
ICIkRW1vamlGb3JTZXFzICRFbW9qaVZhcj8gJEVtb2ppTW9kcz8gJFpXSiAkRW1vamlGb3JTZXFz
OyIKLSAgICAiJENBTl9DTSAkQ00rOyIKLSAgICAiJENNKzsiCi0gICAgIiRDQU5fQ00gJENNKiAk
V0pjbTsiCi0gICAgIiRMQjhOb25CcmVha3MgJFdKY207IgotICAgICIkQ00rICRXSmNtOyIKLSAg
ICAiJFdKY20gJENBTlRfQ007IgotICAgICIkV0pjbSAkQ0FOX0NNICRDTSo7IgotICAgICIkR0xj
bSAkQ0FOX0NNICRDTSo7IgotICAgICIkR0xjbSAkQ0FOVF9DTTsiCi0gICAgIltbJExCOE5vbkJy
ZWFrc10gLSBbJFNQICRCQSAkSFldXSAkQ00qICRHTGNtOyIKLSAgICAiJENNKyBHTGNtOyIKLSAg
ICAiJExCOE5vbkJyZWFrcyAkQ0w7IgotICAgICIkQ0FOX0NNICRDTSogJENMOyIKLSAgICAiJENN
KyAkQ0w7IgotICAgICIkTEI4Tm9uQnJlYWtzICRDUDsiCi0gICAgIiRDQU5fQ00gJENNKiAkQ1A7
IgotICAgICIkQ00rICRDUDsiCi0gICAgIiRMQjhOb25CcmVha3MgJEVYOyIKLSAgICAiJENBTl9D
TSAkQ00qICRFWDsiCi0gICAgIiRDTSsgJEVYOyIKLSAgICAiJExCOE5vbkJyZWFrcyAkSVM7Igot
ICAgICIkQ0FOX0NNICRDTSogJElTOyIKLSAgICAiJENNKyAkSVM7IgotICAgICIkTEI4Tm9uQnJl
YWtzICRTWTsiCi0gICAgIiRDQU5fQ00gJENNKiAkU1k7IgotICAgICIkQ00rICRTWTsiCi0gICAg
IiRPUGNtICRTUCogJENBTl9DTSAkQ00qOyIKLSAgICAiJE9QY20gJFNQKiAkQ0FOVF9DTTsiCi0g
ICAgIiRPUGNtICRTUCsgJENNKyAkQUxfRk9MTE9XPzsiCi0gICAgIiRRVWNtICRTUCogJE9QY207
IgotICAgICIoJENMY20gfCAkQ1BjbSkgJFNQKiAkTlNjbTsiCi0gICAgIiRCMmNtICRTUCogJEIy
Y207IgotICAgICIkTEIxOE5vbkJyZWFrcyAkQ00qICRRVWNtOyIKLSAgICAiJENNKyAkUVVjbTsi
Ci0gICAgIiRRVWNtIC4/OyIKLSAgICAiJFFVY20gJExCMThOb25CcmVha3MgJENNKjsiCi0gICAg
IiRMQjIwTm9uQnJlYWtzICRDTSogKCRCQWNtIHwgJEhZY20gfCAkTlNjbSk7ICIKLSAgICAiJEJC
Y20gW14kQ0JdOyIKLSAgICAiJEJCY20gJExCMjBOb25CcmVha3MgJENNKjsiCi0gICAgIiRITGNt
ICgkSFljbSB8ICRCQWNtKSBbXiRDQl0/OyIKLSAgICAiKCRBTGNtIHwgJEhMY20pICRJTmNtOyIK
LSAgICAiJENNKyAkSU5jbTsiCi0gICAgIiRJRGNtICRJTmNtOyIKLSAgICAiJElOY20gJElOY207
IgotICAgICIkTlVjbSAkSU5jbTsiCi0gICAgIiRJRGNtICRQT2NtOyIKLSAgICAiJEFMY20gJE5V
Y207IgotICAgICIkSExjbSAkTlVjbTsiCi0gICAgIiRDTSsgJE5VY207IgotICAgICIkTlVjbSAk
QUxjbTsiCi0gICAgIiROVWNtICRITGNtOyIKLSAgICAiJFBSY20gJElEY207IgotICAgICIkUFJj
bSAoJEFMY20gfCAkSExjbSk7IgotICAgICIkUE9jbSAoJEFMY20gfCAkSExjbSk7IgotICAgICIo
JFBSY20gfCAkUE9jbSk/ICgkT1BjbSB8ICRIWWNtKT8gJE5VY20gKCROVWNtIHwgJFNZY20gfCAk
SVNjbSkqICgkQ0xjbSB8ICRDUGNtKT8gKCRQUmNtIHwgJFBPY20pPzsiCi0gICAgIiRKTGNtICgk
SkxjbSB8ICRKVmNtIHwgJEgyY20gfCAkSDNjbSk7IgotICAgICIoJEpWY20gfCAkSDJjbSkgKCRK
VmNtIHwgJEpUY20pOyIKLSAgICAiKCRKVGNtIHwgJEgzY20pICRKVGNtOyIKLSAgICAiKCRKTGNt
IHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pICRJTmNtOyIKLSAgICAiKCRKTGNtIHwg
JEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pICRQT2NtOyIKLSAgICAiJFBSY20gKCRKTGNt
IHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pOyIKLSAgICAiKCRBTGNtIHwgJEhMY20p
ICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIiRDTSsgKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiJElT
Y20gKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiKCRBTGNtIHwgJEhMY20gfCAkTlVjbSkgJE9QY207
IgotICAgICIkQ00rICRPUGNtOyIKLSAgICAiJENQY20gKCRBTGNtIHwgJEhMY20gfCAkTlVjbSk7
IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkUkljbSAkUkljbTsiCi0jZW5k
aWYKLSAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IjsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIHVheDE0UmV2ZXJzZSA9Ci0gICAgIiEhcmV2ZXJzZTsiCi0gICAgIiRDTSsg
JEFMUGx1czsiCi0gICAgIiRDTSsgJEJBOyIKLSAgICAiJENNKyAkQkI7IgotICAgICIkQ00rICRC
MjsiCi0gICAgIiRDTSsgJENMOyIKLSAgICAiJENNKyAkQ1A7IgotICAgICIkQ00rICRFWDsiCi0g
ICAgIiRDTSsgJEdMOyIKLSAgICAiJENNKyAkSEw7IgotICAgICIkQ00rICRIWTsiCi0gICAgIiRD
TSsgJEgyOyIKLSAgICAiJENNKyAkSDM7IgotICAgICIkQ00rICRJRDsiCi0gICAgIiRDTSsgJElO
OyIKLSAgICAiJENNKyAkSVM7IgotICAgICIkQ00rICRKTDsiCi0gICAgIiRDTSsgJEpWOyIKLSAg
ICAiJENNKyAkSlQ7IgotICAgICIkQ00rICROUzsiCi0gICAgIiRDTSsgJE5VOyIKLSAgICAiJENN
KyAkT1A7IgotICAgICIkQ00rICRQTzsiCi0gICAgIiRDTSsgJFBSOyIKLSAgICAiJENNKyAkUVU7
IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkQ00rICRSSTsiCi0jZW5kaWYK
LSAgICAiJENNKyAkU1k7IgotICAgICIkQ00rICRXSjsiCi0gICAgIiRDTSs7IgotICAgICIkQUxf
Rk9MTE9XICRDTSsgLyAoWyRCSyAkQ1IgJExGICROTCAkWlcge2VvZn1dIHwgJFNQKyAkQ00rICRT
UCB8ICRTUCsgJENNKiAoW14kT1AgJENNICRTUF0gfCBbJEFMIHtlb2Z9XSkpOyIKLSAgICAiWyRQ
Ul0gLyAkQ00rIFskQksgJENSICRMRiAkTkwgJFpXICRTUCB7ZW9mfV07IgotICAgICIkTEI0QnJl
YWtzIFskTEI0Tm9uQnJlYWtzLSRDTV07IgotICAgICIkTEI0QnJlYWtzICRDTSsgJENBTl9DTTsi
Ci0gICAgIiRMRiAkQ1I7IgotICAgICJbJFNQICRaV10gWyRMQjROb25CcmVha3MtJENNXTsiCi0g
ICAgIlskU1AgJFpXXSAkQ00rICRDQU5fQ007IgotICAgICIkRW1vamlGb3JTZXFzICRaV0ogJEVt
b2ppTW9kcz8gJEVtb2ppVmFyPyAkRW1vamlGb3JTZXFzOyIKLSAgICAiJENNKyAkQ0FOX0NNOyIK
LSAgICAiJENNKiAkV0ogJENNKiAkQ0FOX0NNOyIKLSAgICAiJENNKiAkV0ogWyRMQjhOb25CcmVh
a3MtJENNXTsiCi0gICAgIiRDQU5UX0NNICRDTSogJFdKOyIKLSAgICAiJENNKiAkQ0FOX0NNICRD
TSogJFdKOyIKLSAgICAiJENNKiAkR0wgJENNKiBbJExCOE5vbkJyZWFrcy1bJENNICRTUCAkQkEg
JEhZXV07IgotICAgICIkQ0FOVF9DTSAkQ00qICRHTDsiCi0gICAgIiRDTSogJENBTl9DTSAkQ00q
ICRHTDsiCi0gICAgIiRDTCAkQ00rICRDQU5fQ007IgotICAgICIkQ1AgJENNKyAkQ0FOX0NNOyIK
LSAgICAiJEVYICRDTSsgJENBTl9DTTsiCi0gICAgIiRJUyAkQ00rICRDQU5fQ007IgotICAgICIk
U1kgJENNKyAkQ0FOX0NNOyIKLSAgICAiJENMIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIk
Q1AgWyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAgIiRFWCBbJExCOE5vbkJyZWFrcy0kQ01dOyIK
LSAgICAiJElTIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIkU1kgWyRMQjhOb25CcmVha3Mt
JENNXTsiCi0gICAgIlskQ0wgJENQICRFWCAkSVMgJFNZXSAkQ00rICRTUCsgJENNKiAkT1A7ICIK
LSAgICAiJENNKiAkQ0FOX0NNICRTUCogJENNKiAkT1A7IgotICAgICIkQ0FOVF9DTSAkU1AqICRD
TSogJE9QOyIKLSAgICAiJEFMX0ZPTExPVz8gJENNKyAkU1AgJFNQKiAkQ00qICRPUDsiCi0gICAg
IiRBTF9GT0xMT1dfTk9DTSAkQ00rICRTUCsgJENNKiAkT1A7IgotICAgICIkQ00qICRBTF9GT0xM
T1dfQ00gJENNKyAkU1ArICRDTSogJE9QOyIKLSAgICAiJFNZICRDTSAkU1ArICRPUDsiCi0gICAg
IiRDTSogJE9QICRTUCogJENNKiAkUVU7IgotICAgICIkQ00qICROUyAkU1AqICRDTSogKCRDTCB8
ICRDUCk7IgotICAgICIkQ00qICRCMiAkU1AqICRDTSogJEIyOyIKLSAgICAiJENNKiAkUVUgJENN
KiAkQ0FOX0NNOyIKLSAgICAiJENNKiAkUVUgJExCMThOb25CcmVha3M7IgotICAgICIkQ00qICRD
QU5fQ00gJENNKiAkUVU7IgotICAgICIkQ0FOVF9DTSAkQ00qICRRVTsiCi0gICAgIiRDTSogKCRC
QSB8ICRIWSB8ICROUykgJENNKiBbJExCMjBOb25CcmVha3MtJENNXTsiCi0gICAgIiRDTSogWyRM
QjIwTm9uQnJlYWtzLSRDTV0gJENNKiAkQkI7IgotICAgICJbXiRDQl0gJENNKiAkQkI7IgotICAg
ICJbXiRDQl0gJENNKiAoJEhZIHwgJEJBKSAkQ00qICRITDsiCi0gICAgIiRDTSogJElOICRDTSog
KCRBTFBsdXMgfCAkSEwpOyIKLSAgICAiJENNKiAkSU4gJENNKiAkSUQ7IgotICAgICIkQ00qICRJ
TiAkQ00qICRJTjsiCi0gICAgIiRDTSogJElOICRDTSogJE5VOyIKLSAgICAiJENNKiAkUE8gJENN
KiAkSUQ7IgotICAgICIkQ00qICROVSAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCi0gICAgIiRDTSog
KCRBTFBsdXMgfCAkSEwpICRDTSogJE5VOyIKLSAgICAiJENNKiAkSUQgJENNKiAkUFI7IgotICAg
ICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQUjsiCi0gICAgIiRDTSogKCRBTFBsdXMgfCAk
SEwpICRDTSogJFBPOyIKLSAgICAiKCRDTSogKCRQUiB8ICRQTykpPyAoJENNKiAoJENMIHwgJENQ
KSk/ICgkQ00qICgkTlUgfCAkSVMgfCAkU1kpKSogJENNKiAkTlUgKCRDTSogKCRPUCB8ICRIWSkp
PyAoJENNKiAoJFBSIHwgJFBPKSk/OyIKLSAgICAiJENNKiAoJEgzIHwgJEgyIHwgJEpWIHwgJEpM
KSAkQ00qICRKTDsiCi0gICAgIiRDTSogKCRKVCB8ICRKVikgJENNKiAoJEgyIHwgJEpWKTsiCi0g
ICAgIiRDTSogJEpUICRDTSogKCRIMyB8ICRKVCk7IgotICAgICIkQ00qICRJTiAkQ00qICgkSDMg
fCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpOyIKLSAgICAiJENNKiAkUE8gJENNKiAoJEgzIHwgJEgy
IHwgJEpUIHwgJEpWIHwgJEpMKTsiCi0gICAgIiRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8
ICRKTCkgJENNKiAkUFI7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICgkQUxQbHVz
IHwgJEhMKTsiCi0gICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSogJElTOyIKLSAgICAiJENN
KiAkT1AgJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSk7IgotICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMIHwgJE5VKSAkQ00qICRDUDsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAg
IiRDTSogJFJJICRDTSogJFJJOyIKLSNlbmRpZgotICAgICIkRW1vamlNb2RzICRFbW9qaVZhcj8g
JEVtb2ppRm9yTW9kczsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRTYWZlRm9yd2FyZCA9
Ci0gICAgIiEhc2FmZV9mb3J3YXJkOyIKLSAgICAiWyRDTSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQ
UiAkSFkgJEJBICRTUCAkZGljdGlvbmFyeV0rIFteJENNICRPUCAkUVUgJENMICRDUCAkQjIgJFBS
ICRIWSAkQkEgJGRpY3Rpb25hcnldOyIKLSAgICAiJGRpY3Rpb25hcnkgJGRpY3Rpb25hcnk7IjsK
LQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0U2FmZVJldmVyc2UgPQotICAgICIhIXNhZmVfcmV2
ZXJzZTsiCi0gICAgIiRDTSsgW14kQ00gJEJLICRDUiAkTEYgJE5MICRaVyAkU1BdOyIKLSAgICAi
JENNKyAkU1AgLyAuOyIKLSAgICAiJFNQKyAkQ00qICRPUDsiCi0gICAgIiRTUCsgJENNKiAkUVU7
IgotICAgICIkU1ArICRDTSogKCRDTCB8ICRDUCk7IgotICAgICIkU1ArICRDTSogJEIyOyIKLSAg
ICAiJENNKiAoJEhZIHwgJEJBKSAkQ00qICRITDsiCi0gICAgIigkQ00qICgkSVMgfCAkU1kpKSsg
JENNKiAkTlU7IgotICAgICIoJENMIHwgJENQKSAkQ00qICgkTlUgfCAkSVMgfCAkU1kpOyIKLSAg
ICAiJGRpY3Rpb25hcnkgJGRpY3Rpb25hcnk7IjsKLQotc3RhdGljIFN0cmluZyBtYXBMaW5lSXRl
cmF0b3JNb2RlVG9SdWxlcyhMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykK
LXsKLSAgICBTdHJpbmdCdWlsZGVyIHJ1bGVzQnVpbGRlcjsKLSAgICBydWxlc0J1aWxkZXIuYXBw
ZW5kKHVheDE0UHJvbG9ndWUpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRBc3NpZ25t
ZW50c0JlZm9yZSk7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBMaW5lQnJlYWtJdGVy
YXRvck1vZGVVQVgxNDoKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0
QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Q0pLIDogdWF4MTRBc3NpZ25tZW50c0N1c3RvbURlZmF1
bHROb25DSkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9k
ZVVBWDE0TG9vc2U6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tTG9vc2VDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTG9vc2VOb25D
SkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0
Tm9ybWFsOgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbU5vcm1hbENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0U3Ry
aWN0OgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50
c0N1c3RvbVN0cmljdENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3ROb25DSkspOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNEFzc2ln
bm1lbnRzQWZ0ZXIpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRGb3J3YXJkKTsKLSAg
ICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0UmV2ZXJzZSk7Ci0gICAgcnVsZXNCdWlsZGVyLmFw
cGVuZCh1YXgxNFNhZmVGb3J3YXJkKTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0U2Fm
ZVJldmVyc2UpOwotICAgIHJldHVybiBydWxlc0J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotLy8g
UmVjb2duaXplIEJDUDQ3IGNvbXBsaWFudCBwcmltYXJ5IGxhbmd1YWdlIHZhbHVlcyBvZiAnemgn
LCAnamEnLCAna28nCi0vLyAoaW4gYW55IGNvbWJpbmF0aW9uIG9mIGNhc2UpLCBvcHRpb25hbGx5
IGZvbGxvd2VkIGJ5IHN1YnRhZ3MuIERvbid0Ci0vLyByZWNvZ25pemUgMy1sZXR0ZXIgdmFyaWFu
dHMgJ2NoaScvJ3pobycsICdqcG4nLCBvciAna29yJyBzaW5jZSBCQ1A0NwotLy8gcmVxdWlyZXMg
dXNlIG9mIHNob3J0ZXN0IGxhbmd1YWdlIHRhZy4KLWJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbGUpCi17Ci0gICAgc2l6ZV90IGxlbmd0aCA9IGxvY2FsZS5sZW5ndGgo
KTsKLSAgICBpZiAobGVuZ3RoIDwgMikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8g
YzEgPSBsb2NhbGVbMF07Ci0gICAgYXV0byBjMiA9IGxvY2FsZVsxXTsKLSAgICBhdXRvIGMzID0g
bGVuZ3RoID09IDIgPyAwIDogbG9jYWxlWzJdOwotICAgIGlmICghYzMgfHwgYzMgPT0gJy0nIHx8
IGMzID09ICdfJyB8fCBjMyA9PSAnQCcpIHsKLSAgICAgICAgaWYgKGMxID09ICd6JyB8fCBjMSA9
PSAnWicpCi0gICAgICAgICAgICByZXR1cm4gYzIgPT0gJ2gnIHx8IGMyID09ICdIJzsKLSAgICAg
ICAgaWYgKGMxID09ICdqJyB8fCBjMSA9PSAnSicpCi0gICAgICAgICAgICByZXR1cm4gYzIgPT0g
J2EnIHx8IGMyID09ICdBJzsKLSAgICAgICAgaWYgKGMxID09ICdrJyB8fCBjMSA9PSAnSycpCi0g
ICAgICAgICAgICByZXR1cm4gYzIgPT0gJ28nIHx8IGMyID09ICdPJzsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1UZXh0QnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9y
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwg
Ym9vbCBpc0NKSykKLXsKLSAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXI7Ci0gICAgVUVycm9y
Q29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGJvb2wgbG9jYWxlSXNFbXB0eSA9
IGxvY2FsZS5pc0VtcHR5KCk7Ci0gICAgaWYgKG1vZGUgPT0gTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTQpCi0gICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgbG9jYWxlSXNF
bXB0eSA/IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpIDogbG9jYWxlLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKLSAgICBlbHNlIHsKLSAgICAgICAgVVBhcnNl
RXJyb3IgcGFyc2VTdGF0dXM7Ci0gICAgICAgIGF1dG8gcnVsZXMgPSBtYXBMaW5lSXRlcmF0b3JN
b2RlVG9SdWxlcyhtb2RlLCBpc0NKSyk7Ci0gICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuUnVs
ZXMoU3RyaW5nVmlldyhydWxlcykudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHJ1bGVzLmxlbmd0
aCgpLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKLSAgICB9Ci0gICAgLy8gbG9j
YWxlIGNvbWVzIGZyb20gYSB3ZWIgcGFnZSBhbmQgaXQgY2FuIGJlIGludmFsaWQsIGxlYWRpbmcg
SUNVCi0gICAgLy8gdG8gZmFpbCwgaW4gd2hpY2ggY2FzZSB3ZSBmYWxsIGJhY2sgdG8gdGhlIGRl
ZmF1bHQgbG9jYWxlLgotICAgIGlmICghbG9jYWxlSXNFbXB0eSAmJiBVX0ZBSUxVUkUob3BlblN0
YXR1cykpIHsKLSAgICAgICAgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJy
a0l0ZXIgPSB1YnJrX29wZW4oVUJSS19MSU5FLCBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSwg
MCwgMCwgJm9wZW5TdGF0dXMpOwotICAgIH0KLQotICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1
cykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX29wZW4gZmFpbGVkIHdpdGggc3RhdHVzICVk
Iiwgb3BlblN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4odWJya0l0ZXIpOwotfQot
Ci12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqJiBpdGVyYXRv
cikKLXsKLSAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXIgPSByZWludGVycHJldF9jYXN0PFVC
cmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpOwotICAgIEFTU0VSVCh1YnJrSXRlcik7Ci0gICAgdWJy
a19jbG9zZSh1YnJrSXRlcik7Ci0gICAgaXRlcmF0b3IgPSBudWxscHRyOwotfQotCi1zdGF0aWMg
VGV4dEJyZWFrSXRlcmF0b3IqIG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqIGV4cGVjdGVkLCBUZXh0QnJlYWtJdGVyYXRvciogbmV3
VmFsdWUpCi17Ci0gICAgcmV0dXJuIFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKCZub25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yLCBleHBlY3RlZCwgbmV3VmFsdWUpOwotfQotCi1Ob25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
KFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIG1faXRlcmF0b3IgPSBub25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yOwotCi0gICAgYm9vbCBjcmVhdGVkSXRlcmF0b3IgPSBtX2l0ZXJhdG9y
ICYmIGNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihtX2l0ZXJh
dG9yLCAwKTsKLSAgICBpZiAoIWNyZWF0ZWRJdGVyYXRvcikKLSAgICAgICAgbV9pdGVyYXRvciA9
IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUik7Ci0gICAgaWYgKCFtX2l0ZXJhdG9y
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2l0ZXJhdG9yID0gc2V0VGV4dEZvckl0ZXJhdG9y
KCptX2l0ZXJhdG9yLCBzdHJpbmcpOwotfQotCi1Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpCi17Ci0gICAgaWYgKCFjb21w
YXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoMCwgbV9pdGVyYXRvcikp
Ci0gICAgICAgIHVicmtfY2xvc2UocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KG1f
aXRlcmF0b3IpKTsKLX0KLQotCi0vLyBJdGVyYXRvciBpbXBsZW1lbmF0aW9uLgotCi1pbnQgdGV4
dEJyZWFrRmlyc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiB1
YnJrX2ZpcnN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwot
fQotCi1pbnQgdGV4dEJyZWFrTGFzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0g
ICAgcmV0dXJuIHVicmtfbGFzdChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRl
cmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yKQotewotICAgIHJldHVybiB1YnJrX25leHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVy
YXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtQcmV2aW91cyhUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJldmlvdXMocmVpbnRlcnBy
ZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtQ
cmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJl
dHVybiB1YnJrX3ByZWNlZGluZyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRl
cmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICByZXR1cm4gdWJya19mb2xsb3dpbmcocmVp
bnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zKTsKLX0KLQotaW50
IHRleHRCcmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotewotICAgIHJl
dHVybiB1YnJrX2N1cnJlbnQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJh
dG9yKSk7Ci19Ci0KLWJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9y
LCBpbnQgcG9zaXRpb24pCi17Ci0gICAgcmV0dXJuIHVicmtfaXNCb3VuZGFyeShyZWludGVycHJl
dF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3NpdGlvbik7Ci19Ci0KLWJvb2wg
aXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBpbnQg
cnVsZVN0YXR1cyA9IHVicmtfZ2V0UnVsZVN0YXR1cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLSAgICByZXR1cm4gcnVsZVN0YXR1cyAhPSBVQlJLX1dPUkRf
Tk9ORTsKLX0KLQotdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyhjb25zdCBTdHJpbmcmIHMp
Ci17Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgoKTsKLSAgICAKLSAgICBp
ZiAoIXN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBUaGUgb25seSBM
YXRpbi0xIEV4dGVuZGVkIEdyYXBoZW1lIENsdXN0ZXIgaXMgQ1IgTEYKLSAgICBpZiAocy5pczhC
aXQoKSAmJiAhcy5jb250YWlucygnXHInKSkKLSAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsK
LQotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7Ci0gICAgaWYgKCFp
dCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKLQotICAgIHVuc2lnbmVkIG51bSA9IDA7
Ci0gICAgd2hpbGUgKHRleHRCcmVha05leHQoaXQpICE9IFRleHRCcmVha0RvbmUpCi0gICAgICAg
ICsrbnVtOwotICAgIHJldHVybiBudW07Ci19Ci0KLXVuc2lnbmVkIG51bUNoYXJhY3RlcnNJbkdy
YXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYgcywgdW5zaWduZWQgbnVtR3JhcGhlbWVD
bHVzdGVycykKLXsKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBzLmxlbmd0aCgpOwotCi0g
ICAgaWYgKCFzdHJpbmdMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIG9u
bHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENSIExGCi0gICAgaWYgKHMu
aXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCi0gICAgICAgIHJldHVybiBzdGQ6Om1pbihz
dHJpbmdMZW5ndGgsIG51bUdyYXBoZW1lQ2x1c3RlcnMpOwotCi0gICAgTm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvciBpdChzKTsKLSAgICBpZiAoIWl0KQotICAgICAgICByZXR1cm4gc3Rk
OjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzOyArK2kpIHsKLSAgICAgICAgaWYg
KHRleHRCcmVha05leHQoaXQpID09IFRleHRCcmVha0RvbmUpCi0gICAgICAgICAgICByZXR1cm4g
c3RyaW5nTGVuZ3RoOwotICAgIH0KLSAgICByZXR1cm4gdGV4dEJyZWFrQ3VycmVudChpdCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NmExYzIzNTBiNDc2N2Q2Y2UxYzM0ZGUyYzM0YzIyZDQzNTIyYzU4ZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVjaC5jb20+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqCi0gKi8KLQotI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvcl9oCi0jZGVmaW5lIFRleHRC
cmVha0l0ZXJhdG9yX2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBUZXh0QnJlYWtJdGVyYXRvcjsKLQotLy8gTm90ZTogVGhlIHJldHVybmVkIGl0ZXJhdG9y
IGlzIGdvb2Qgb25seSB1bnRpbCB5b3UgZ2V0IGFub3RoZXIgaXRlcmF0b3IsIHdpdGggdGhlIGV4
Y2VwdGlvbiBvZiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IuCi0KLWVudW0gTGluZUJyZWFrSXRl
cmF0b3JNb2RlIHsKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCwKLSAgICBMaW5lQnJl
YWtJdGVyYXRvck1vZGVVQVgxNExvb3NlLAotICAgIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0
Tm9ybWFsLAotICAgIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0U3RyaWN0LAotfTsKLQotLy8g
VGhpcyBpcyBzaW1pbGFyIHRvIGNoYXJhY3RlciBicmVhayBpdGVyYXRvciBpbiBtb3N0IGNhc2Vz
LCBidXQgaXMgc3ViamVjdCB0bwotLy8gcGxhdGZvcm0gVUkgY29udmVudGlvbnMuIE9uZSBub3Rh
YmxlIGV4YW1wbGUgd2hlcmUgdGhpcyBjYW4gYmUgZGlmZmVyZW50Ci0vLyBmcm9tIGNoYXJhY3Rl
ciBicmVhayBpdGVyYXRvciBpcyBUaGFpIHByZXBlbmQgY2hhcmFjdGVycywgc2VlIGJ1ZyAyNDM0
Mi4KLS8vIFVzZSB0aGlzIGZvciBpbnNlcnRpb24gcG9pbnQgYW5kIHNlbGVjdGlvbiBtYW5pcHVs
YXRpb25zLgotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRlcmF0b3IoU3RyaW5n
Vmlldyk7Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
KTsKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7
Ci0KLVdFQkNPUkVfRVhQT1JUIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRl
cmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGluZUJyZWFrSXRl
cmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsZWFzZUxpbmVC
cmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7Ci1UZXh0QnJlYWtJdGVyYXRvciogb3Bl
bkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwotdm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yKiYpOwotCi1pbnQgdGV4dEJyZWFrRmlyc3QoVGV4dEJyZWFrSXRlcmF0
b3IqKTsKLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1pbnQgdGV4dEJy
ZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha1ByZXZpb3VzKFRleHRC
cmVha0l0ZXJhdG9yKik7Ci1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciop
OwotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7Ci1XRUJD
T1JFX0VYUE9SVCBpbnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50
KTsKLWJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotYm9vbCBpc1dv
cmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLQotY29uc3QgaW50IFRleHRCcmVha0Rv
bmUgPSAtMTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NKS0xvY2FsZShjb25zdCBBdG9taWNT
dHJpbmcmKTsKLQotY2xhc3MgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICBM
YXp5TGluZUJyZWFrSXRlcmF0b3IoKQotICAgICAgICA6IG1faXRlcmF0b3IobnVsbHB0cikKLSAg
ICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQotICAgICAgICAsIG1fbW9kZShM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4
dExlbmd0aCgwKQotICAgICAgICAsIG1faXNDSksoZmFsc2UpCi0gICAgewotICAgICAgICByZXNl
dFByaW9yQ29udGV4dCgpOwotICAgIH0KLQotICAgIExhenlMaW5lQnJlYWtJdGVyYXRvcihTdHJp
bmcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSA9IEF0b21pY1N0cmluZygpLCBM
aW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSA9IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQot
ICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKLSAgICAgICAgLCBtX2xvY2FsZShsb2NhbGUpCi0g
ICAgICAgICwgbV9pdGVyYXRvcihudWxscHRyKQotICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250
ZXh0KG51bGxwdHIpCi0gICAgICAgICwgbV9tb2RlKG1vZGUpCi0gICAgICAgICwgbV9jYWNoZWRQ
cmlvckNvbnRleHRMZW5ndGgoMCkKLSAgICB7Ci0gICAgICAgIHJlc2V0UHJpb3JDb250ZXh0KCk7
Ci0gICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOwotICAgIH0KLQotICAgIH5M
YXp5TGluZUJyZWFrSXRlcmF0b3IoKQotICAgIHsKLSAgICAgICAgaWYgKG1faXRlcmF0b3IpCi0g
ICAgICAgICAgICByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IobV9pdGVyYXRvcik7Ci0gICAgfQot
Ci0gICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0gICAgYm9v
bCBpc0xvb3NlQ0pLTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDSksgJiYgbV9tb2RlID09IExp
bmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2U7IH0KLQotICAgIFVDaGFyIGxhc3RDaGFyYWN0
ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdU
SChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlv
cl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBtX3ByaW9yQ29udGV4dFsxXTsKLSAg
ICB9Ci0KLSAgICBVQ2hhciBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0g
MiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0g
ICAgICAgIHJldHVybiBtX3ByaW9yQ29udGV4dFswXTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFBy
aW9yQ29udGV4dChVQ2hhciBsYXN0LCBVQ2hhciBzZWNvbmRUb0xhc3QpCi0gICAgewotICAgICAg
ICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBU
ZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKLSAgICAg
ICAgbV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7Ci0gICAgICAgIG1fcHJpb3JDb250
ZXh0WzFdID0gbGFzdDsKLSAgICB9Ci0KLSAgICB2b2lkIHVwZGF0ZVByaW9yQ29udGV4dChVQ2hh
ciBsYXN0KQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSCht
X3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9j
b250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzBdID0gbV9wcmlvckNvbnRl
eHRbMV07Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKLSAgICB9Ci0KLSAgICB2
b2lkIHJlc2V0UHJpb3JDb250ZXh0KCkKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdU
Rl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3Vu
ZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICBtX3ByaW9yQ29udGV4dFsw
XSA9IDA7Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gMDsKLSAgICB9Ci0KLSAgICB1bnNp
Z25lZCBwcmlvckNvbnRleHRMZW5ndGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQg
cHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZ
X0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3Rl
ZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFsxXSkg
ewotICAgICAgICAgICAgKytwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAgICAgICAgICBpZiAobV9w
cmlvckNvbnRleHRbMF0pCi0gICAgICAgICAgICAgICAgKytwcmlvckNvbnRleHRMZW5ndGg7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHByaW9yQ29udGV4dExlbmd0aDsKLSAgICB9Ci0KLSAg
ICAvLyBPYnRhaW4gdGV4dCBicmVhayBpdGVyYXRvciwgcG9zc2libHkgcHJldmlvdXNseSBjYWNo
ZWQsIHdoZXJlIHRoaXMgaXRlcmF0b3IgaXMgKG9yIGhhcyBiZWVuKQotICAgIC8vIGluaXRpYWxp
emVkIHRvIHVzZSB0aGUgcHJldmlvdXNseSBzdG9yZWQgc3RyaW5nIGFzIHRoZSBwcmltYXJ5IGJy
ZWFraW5nIGNvbnRleHQgYW5kIHVzaW5nCi0gICAgLy8gcHJldmlvdXNseSBzdG9yZWQgcHJpb3Ig
Y29udGV4dCBpZiBub24tZW1wdHkuCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGdldCh1bnNpZ25l
ZCBwcmlvckNvbnRleHRMZW5ndGgpCi0gICAgewotICAgICAgICBBU1NFUlQocHJpb3JDb250ZXh0
TGVuZ3RoIDw9IHByaW9yQ29udGV4dENhcGFjaXR5KTsKLSAgICAgICAgY29uc3QgVUNoYXIqIHBy
aW9yQ29udGV4dCA9IHByaW9yQ29udGV4dExlbmd0aCA/ICZtX3ByaW9yQ29udGV4dFtwcmlvckNv
bnRleHRDYXBhY2l0eSAtIHByaW9yQ29udGV4dExlbmd0aF0gOiAwOwotICAgICAgICBpZiAoIW1f
aXRlcmF0b3IpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBhY3F1aXJlTGluZUJyZWFrSXRl
cmF0b3IobV9zdHJpbmcsIG1fbG9jYWxlLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0
aCwgbV9tb2RlLCBtX2lzQ0pLKTsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0ID0g
cHJpb3JDb250ZXh0OwotICAgICAgICAgICAgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGggPSBw
cmlvckNvbnRleHRMZW5ndGg7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpb3JDb250ZXh0ICE9IG1f
Y2FjaGVkUHJpb3JDb250ZXh0IHx8IHByaW9yQ29udGV4dExlbmd0aCAhPSBtX2NhY2hlZFByaW9y
Q29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgcmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0
b3IobV9zdHJpbmcsIG1fbG9jYWxlLCBtX21vZGUpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMt
PmdldChwcmlvckNvbnRleHRMZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2l0
ZXJhdG9yOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3Io
U3RyaW5nIHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJh
dG9yTW9kZSBtb2RlKQotICAgIHsKLSAgICAgICAgaWYgKG1faXRlcmF0b3IpCi0gICAgICAgICAg
ICByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IobV9pdGVyYXRvcik7Ci0gICAgICAgIG1fc3RyaW5n
ID0gc3RyaW5nOwotICAgICAgICBtX2xvY2FsZSA9IGxvY2FsZTsKLSAgICAgICAgbV9pdGVyYXRv
ciA9IG51bGxwdHI7Ci0gICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0ID0gbnVsbHB0cjsKLSAg
ICAgICAgbV9tb2RlID0gbW9kZTsKLSAgICAgICAgbV9pc0NKSyA9IGlzQ0pLTG9jYWxlKGxvY2Fs
ZSk7Ci0gICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByaW9yQ29udGV4dENhcGFjaXR5ID0g
MjsKLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgQXRvbWljU3RyaW5nIG1fbG9jYWxlOwotICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9yOwotICAgIGNvbnN0IFVDaGFyKiBtX2NhY2hl
ZFByaW9yQ29udGV4dDsKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbV9tb2RlOwotICAgIHVu
c2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoOwotICAgIFVDaGFyIG1fcHJpb3JDb250
ZXh0W3ByaW9yQ29udGV4dENhcGFjaXR5XTsKLSAgICBib29sIG1faXNDSks7Ci19OwotCi0vLyBJ
dGVyYXRlcyBvdmVyICJleHRlbmRlZCBncmFwaGVtZSBjbHVzdGVycyIsIGFzIGRlZmluZWQgaW4g
VUFYICMyOS4KLS8vIE5vdGUgdGhhdCBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGxl
c3Mgc29waGlzdGljYXRlZCAtIGUuZy4gSUNVIHByaW9yIHRvCi0vLyB2ZXJzaW9uIDQuMCBvbmx5
IHN1cHBvcnRzICJsZWdhY3kgZ3JhcGhlbWUgY2x1c3RlcnMiLgotLy8gVXNlIHRoaXMgZm9yIGdl
bmVyYWwgdGV4dCBwcm9jZXNzaW5nLCBlLmcuIHN0cmluZyB0cnVuY2F0aW9uLgotCi1jbGFzcyBO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKTsKLXB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOwotICAg
IFdFQkNPUkVfRVhQT1JUIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCk7Ci0KLSAg
ICBvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9y
OyB9Ci0KLXByaXZhdGU6Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3I7Ci19Owot
Ci0vLyBDb3VudHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4gQSBzdXJyb2dhdGUg
cGFpciBvciBhIHNlcXVlbmNlCi0vLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hhcmFjdGVyIGFuZCBm
b2xsb3dpbmcgY29tYmluaW5nIGNoYXJhY3RlcnMgaXMKLS8vIGNvdW50ZWQgYXMgMSBncmFwaGVt
ZSBjbHVzdGVyLgotdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyhjb25zdCBTdHJpbmcmKTsK
LS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdoaWNoIHdpbGwgYmUgbGVzcyB0
aGFuIG9yIGVxdWFsIHRvCi0vLyB0aGUgc3BlY2lmaWVkIGdyYXBoZW1lIGNsdXN0ZXIgbGVuZ3Ro
LgotdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhjb25zdCBTdHJpbmdW
aWV3JiwgdW5zaWduZWQpOwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhiNzAwM2MzNWZkMjFlYTZhYTIxOTkzNWU3YTI4
OTlhMjY1YWQ3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1UuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBUZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVX2gKLSNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVV9oCi0KLS8vIEZJWE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9jYWxlcyBmb3IgSUNV
LCBub3QganVzdCBmb3IgdGV4dCBicmVha2luZywKLS8vIHRoaXMgZmlsZSBhbmQgdGhlIHZhcmlv
dXMgaW1wbGVtZW50YXRpb24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpOwotICAg
IGNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwotCi19Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAK
aW5kZXggOWUzNDNjMDI5MTc1ZGVlNTRhMzU0ZDdkNTI4MjYzYjk0MGU0N2JkMS4uYzQwZTYyMjcz
ZTAzNDgyYzUxZGUzZGQxOWUxMjQ2ODIyMTcyNTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCkBAIC0yNywxMyArMjcsMTMgQEAK
ICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNs
dWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RI
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaW55
TFJVQ2FjaGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PgogY2xhc3MgVGlueUxSVUNhY2hl
UG9saWN5PEF0b21pY1N0cmluZywgUmV0YWluUHRyPENGTG9jYWxlUmVmPj4KQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gQ0YgaHlwaGVuYXRpb24gZnVuY3Rpb25z
IHVzZSBsb2NhbGUgKHJlZ2lvbmFsIGZvcm1hdHMpIGxhbmd1YWdlLCB3aGljaCBkb2Vzbid0IG5l
Y2Vzc2FyaWx5IG1hdGNoIHByaW1hcnkgVUkgbGFuZ3VhZ2UsCiAgICAgICAgIC8vIHNvIHdlIGNh
bid0IHVzZSBkZWZhdWx0IGxvY2FsZSBoZXJlLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE0ODk3NjY0
Pi4KLSAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9j
YWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRlZmF1bHRMYW5ndWFnZSgpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUg
PSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIFdlYkNvcmU6OmRl
ZmF1bHRMYW5ndWFnZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJu
IENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8g
bG9jYWxlIDogbnVsbHB0cjsKICAgICB9CiAKQEAgLTY1LDYgKzY1LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9yTG9jYWxlKGxvY2Fs
ZS5nZXQoKSkgPyBsb2NhbGUgOiBudWxscHRyOwogICAgIH0KIH07Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogYm9vbCBjYW5IeXBoZW5hdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJ
ZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9l
ZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA1Njg2OWYxNDVkZDc2ODFkZmViYjY4ODg5NWJj
MTk1NTFlMTNiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKLXsKLSAgICAvLyBGSVhN
RTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAiIjsKLX0KLQotY29uc3Qg
Y2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAgICByZXR1cm4gImVuX3VzIjsK
LX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50
L1RleHRDaGVja2VyRW5jaGFudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Vu
Y2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcAppbmRleCA0N2Y1NmYwOGIzNTQ4MmNhZTA2NGQ0
ZmIxOTQyY2FlNWM4YWIwNzIwLi40MTFjODA2MTRlMjY3Y2ZjNTExZmZhZGIwYTk1MzYxYzgxYjU0
OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4
dENoZWNrZXJFbmNoYW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Vu
Y2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVk
ZSA8TGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8dGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3Rr
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNWEwNWZhNDkxOTVmYjMwYmY2
OWRlZDU2MmQ1NDNiOGI2MTAxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxl
SUQoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCi0gICAgcmV0
dXJuICIiOwotfQotCi1jb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQotewot
ICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCi0gICAgcmV0dXJuICJlbl91
cyI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYWVlODFlNjA3
ZTY3NTQzYmY2N2ZlODY1MzJhYjUzNWJmN2IyYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIuaCIKLQotI2lu
Y2x1ZGUgPHN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFJlbG9jYXRlIHBv
aW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbiBhcyByZXF1aXJlZC4KLXN0YXRpYyBp
bmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVUZXh0KiBkZXN0aW5h
dGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIpCi17Ci0gICAgaWYgKHBvaW50ZXIgPj0gc291cmNl
LT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRpY19jYXN0PGNoYXIqPihzb3VyY2UtPnBFeHRyYSkg
KyBzb3VyY2UtPmV4dHJhU2l6ZSkgewotICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291
cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihk
ZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikg
LSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLT5wRXh0cmEpKTsKLSAgICB9IGVsc2Ug
aWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBvaW50ZXIgPCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5zaXplT2ZTdHJ1Y3QpIHsKLSAgICAgICAgLy8gUG9p
bnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0cnVjdHVyZSwgYnV0IG5vdCBzb3VyY2UgZXh0
cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGVz
dGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAtIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkpOwotICAgIH0KLX0KLQotVVRleHQqIHVUZXh0
Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wg
ZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwgIWRl
ZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGludDMyX3QgZXh0cmFTaXplID0gc291cmNlLT5leHRyYVNpemU7Ci0gICAgZGVzdGlu
YXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgZXh0cmFTaXplLCBzdGF0dXMpOwotICAg
IGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKLSAg
ICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7Ci0gICAgaW50MzJfdCBmbGFn
cyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAgICBpbnQgc2l6ZVRvQ29weSA9IHN0ZDo6bWluKHNv
dXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlvbi0+c2l6ZU9mU3RydWN0KTsKLSAgICBtZW1j
cHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRvQ29weSk7Ci0gICAgZGVzdGluYXRpb24tPnBF
eHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3RpbmF0aW9uLT5mbGFncyA9IGZsYWdzOwotICAgIG1l
bWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3VyY2UtPnBFeHRyYSwgZXh0cmFTaXplKTsKLSAg
ICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5jb250ZXh0KTsK
LSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5wKTsKLSAg
ICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5xKTsKLSAgICBB
U1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAgICBjb25zdCB2b2lkKiBjaHVua0NvbnRlbnRzID0g
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzKTsKLSAg
ICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNodW5rQ29udGVudHMpOwotICAgIGRl
c3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihjaHVu
a0NvbnRlbnRzKTsKLSAgICByZXR1cm4gZGVzdGluYXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VU
ZXh0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJv
dmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1NGZjNGM3Y2UyMzU5NDQy
YzY3ZmFiZjE4YjVlZjZhYjFjNDNhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgVVRleHRQcm92aWRlcl9oCi0jZGVmaW5lIFVUZXh0UHJvdmlkZXJfaAotCi0jaW5jbHVkZSA8
dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgVVRl
eHRQcm92aWRlckNvbnRleHQgewotICAgIE5vQ29udGV4dCwKLSAgICBQcmlvckNvbnRleHQsCi0g
ICAgUHJpbWFyeUNvbnRleHQKLX07Ci0KLWlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB1VGV4
dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwg
VUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0
LT5iKQotICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0
OwotICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0LT5iKQotICAgICAgICByZXR1cm4gZm9yd2Fy
ZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJD
b250ZXh0OjpQcmlvckNvbnRleHQ7Ci0gICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQ
cmlvckNvbnRleHQ7Ci19Ci0KLWlubGluZSB2b2lkIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4
dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25zdCBVVGV4dEZ1bmNzKiBmdW5jcywgY29uc3Qgdm9p
ZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGlu
dCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAgdGV4dC0+cEZ1bmNzID0gZnVuY3M7Ci0gICAg
dGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8PCBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hV
TktTOwotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAgdGV4dC0+cCA9IHN0cmluZzsK
LSAgICB0ZXh0LT5hID0gbGVuZ3RoOwotICAgIHRleHQtPnEgPSBwcmlvckNvbnRleHQ7Ci0gICAg
dGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsKLX0KLQotLy8gU2hhcmVkIGltcGxlbWVudGF0
aW9uIGZvciB0aGUgVVRleHRDbG9uZSBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgotCi1VVGV4dCog
dVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBV
Qm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwotCi0KLS8vIEhlbHBlcnMgZm9yIHRoZSBV
VGV4dEFjY2VzcyBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgotCi1pbmxpbmUgaW50NjRfdCB1VGV4
dEFjY2Vzc1BpbkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2NF90IGxpbWl0KQotewotICAgIGlm
IChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0gMDsKLSAgICBlbHNlIGlmIChpbmRleCA+IGxp
bWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0OwotICAgIHJldHVybiBpbmRleDsKLX0KLQotaW5s
aW5lIGJvb2wgdVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKFVUZXh0KiB0ZXh0LCBpbnQ2
NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCwgVUJv
b2wmIGlzQWNjZXNzaWJsZSkKLXsKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICBpZiAobmF0
aXZlSW5kZXggPj0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8IHRleHQt
PmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZl
SW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgICAgICAgICAgLy8gRW5zdXJlIGNo
dW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQz
Ml90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zm
c2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxp
bnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobmF0aXZlSW5k
ZXggPj0gbmF0aXZlTGVuZ3RoICYmIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPT0gbmF0aXZlTGVu
Z3RoKSB7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IHRleHQtPmNodW5rTGVuZ3Ro
OwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChuYXRpdmVJbmRleCA+
IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPD0gdGV4dC0+Y2h1bmtOYXRp
dmVMaW1pdCkgewotICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAgICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0
IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Uu
Ci0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9m
ZnNldCkgOiAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuYXRpdmVJbmRleCA8PSAwICYm
ICF0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNl
dCA9IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4x
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRp
bjEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDY4NTJjNzFlNTVlZjk3Y2Ew
YjBiYTFjZmY4ODBiOTk3MGY3M2M1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlk
ZXJMYXRpbjEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzk0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgot
Ci0jaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBMYXRpbjEgcHJvdmlkZXIKLQotc3Rh
dGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwg
VUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRl
eHQqKTsKLXN0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVC
b29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCosIGludDY0X3Qs
IGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3Qg
dVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4dCopOwotc3RhdGljIGludDMy
X3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3QgVVRleHQqLCBpbnQ2NF90
KTsKLXN0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ2xvc2UoVVRleHQqKTsKLQotc3RhdGljIGNvbnN0
IHN0cnVjdCBVVGV4dEZ1bmNzIHVUZXh0TGF0aW4xRnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0
RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAwLAotICAgIHVUZXh0TGF0aW4xQ2xvbmUsCi0g
ICAgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRMYXRpbjFBY2Nlc3MsCi0gICAg
dVRleHRMYXRpbjFFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICB1VGV4
dExhdGluMU1hcE9mZnNldFRvTmF0aXZlLAotICAgIHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhU
b1VURjE2LAotICAgIHVUZXh0TGF0aW4xQ2xvc2UsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRy
LAotICAgIG51bGxwdHIKLX07Ci0KLXN0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFDbG9uZShVVGV4
dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNv
ZGUqIHN0YXR1cykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFkZWVwKTsKLQotICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgVVRleHQqIHJl
c3VsdCA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRo
QnVmZmVySW5saW5lQ2FwYWNpdHksIHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwotICAgIAotICAgIHJlc3VsdC0+cHJvdmlk
ZXJQcm9wZXJ0aWVzID0gc291cmNlLT5wcm92aWRlclByb3BlcnRpZXM7Ci0gICAgCi0gICAgLy8g
UG9pbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24sIGJ1dCB3aXRoIGFuIGVtcHR5IGJ1ZmZlci4KLSAg
ICByZXN1bHQtPmNodW5rTmF0aXZlU3RhcnQgPSBzb3VyY2UtPmNodW5rTmF0aXZlU3RhcnQ7Ci0g
ICAgcmVzdWx0LT5jaHVua05hdGl2ZUxpbWl0ID0gc291cmNlLT5jaHVua05hdGl2ZVN0YXJ0Owot
ICAgIHJlc3VsdC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNv
dXJjZS0+Y2h1bmtOYXRpdmVTdGFydCk7Ci0gICAgcmVzdWx0LT5jaHVua09mZnNldCA9IDA7Ci0g
ICAgcmVzdWx0LT5jb250ZXh0ID0gc291cmNlLT5jb250ZXh0OwotICAgIHJlc3VsdC0+YSA9IHNv
dXJjZS0+YTsKLSAgICByZXN1bHQtPnBGdW5jcyA9ICZ1VGV4dExhdGluMUZ1bmNzOwotICAgIHJl
c3VsdC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciopcmVzdWx0LT5wRXh0cmE7Ci0gICAgbWVtc2V0
KGNvbnN0X2Nhc3Q8VUNoYXIqPihyZXN1bHQtPmNodW5rQ29udGVudHMpLCAwLCBzaXplb2YoVUNo
YXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqIHVU
ZXh0KQotewotICAgIHJldHVybiB1VGV4dC0+YTsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0TGF0
aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50NjRfdCBpbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsK
LSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotCi0gICAgaWYgKGZvcndhcmQpIHsKLSAg
ICAgICAgaWYgKGluZGV4IDwgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgJiYgaW5kZXggPj0gdVRl
eHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAgICAgICAgICAgIC8vIEFscmVhZHkgaW5zaWRlIHRo
ZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KLSAgICAgICAgICAgIHVUZXh0LT5jaHVua09m
ZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3Rh
cnQpOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlu
ZGV4ID49IGxlbmd0aCAmJiB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBsZW5ndGgpIHsKLSAg
ICAgICAgICAgIC8vIE9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIGJ1dCB3ZSBjYW4ndCBnZXQg
aXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90
PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAgICAgICAgICAgIHJldHVybiBG
QUxTRTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChpbmRleCA8PSB1VGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRleCA+IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7
Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGluc2lkZSB0aGUgYnVmZmVyLiBTZXQgdGhlIG5ldyBv
ZmZzZXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQz
Ml90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAgICAgICAgICAgIHJldHVy
biBUUlVFOwotICAgICAgICB9Ci0gICAgICAgIGlmICghaW5kZXggJiYgIXVUZXh0LT5jaHVua05h
dGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGF0IHRoZSBiZWdpbm5pbmc7IGNh
bid0IGdvIGFueSBmYXJ0aGVyLgotICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gMDsK
LSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBp
ZiAoZm9yd2FyZCkgewotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IGluZGV4Owot
ICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0
ICsgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7Ci0gICAgICAgIGlmICh1VGV4dC0+Y2h1
bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKLSAgICAgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxp
bWl0ID0gbGVuZ3RoOwotCi0gICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBpbmRleDsKLSAgICAgICAg
aWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQotICAgICAgICAgICAgdVRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7Ci0KLSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZl
U3RhcnQgPSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNh
cGFjaXR5OwotICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPCAwKQotICAgICAg
ICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotCi0gICAgICAgIHVUZXh0LT5jaHVu
a09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZl
U3RhcnQpOwotICAgIH0KLSAgICB1VGV4dC0+Y2h1bmtMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQz
Ml90Pih1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsK
LQotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odVRleHQtPmNo
dW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSAr
IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odVRleHQtPmNo
dW5rTGVuZ3RoKSk7Ci0KLSAgICB1VGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHVUZXh0LT5j
aHVua0xlbmd0aDsKLQotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgaW50MzJfdCB1VGV4
dExhdGluMUV4dHJhY3QoVVRleHQqIHVUZXh0LCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGxpbWl0
LCBVQ2hhciogZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksIFVFcnJvckNvZGUqIHN0YXR1cykK
LXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRlc3RDYXBhY2l0eSA8IDAgfHwg
KCFkZXN0ICYmIGRlc3RDYXBhY2l0eSA+IDApKSB7Ci0gICAgICAgICpzdGF0dXMgPSBVX0lMTEVH
QUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChz
dGFydCA8IDAgfHwgc3RhcnQgPiBsaW1pdCB8fCAobGltaXQgLSBzdGFydCkgPiBJTlQzMl9NQVgp
IHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1I7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdGFydCA+IGxlbmd0aCkKLSAgICAgICAgc3Rh
cnQgPSBsZW5ndGg7Ci0gICAgaWYgKGxpbWl0ID4gbGVuZ3RoKQotICAgICAgICBsaW1pdCA9IGxl
bmd0aDsKLQotICAgIGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7Ci0gICAgCi0gICAgaWYgKCFsZW5n
dGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRlc3RDYXBhY2l0eSA+IDAgJiYgIWRl
c3QpIHsKLSAgICAgICAgaW50MzJfdCB0cmltbWVkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4obGVuZ3RoKTsKLSAgICAgICAgaWYgKHRyaW1tZWRMZW5ndGggPiBkZXN0Q2FwYWNpdHkpCi0g
ICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0gZGVzdENhcGFjaXR5OwotCi0gICAgICAgIFN0cmlu
Z0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5j
b250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHJpbW1lZExlbmd0aCkpOwot
ICAgIH0KLQotICAgIGlmIChsZW5ndGggPCBkZXN0Q2FwYWNpdHkpIHsKLSAgICAgICAgZGVzdFts
ZW5ndGhdID0gMDsKLSAgICAgICAgaWYgKCpzdGF0dXMgPT0gVV9TVFJJTkdfTk9UX1RFUk1JTkFU
RURfV0FSTklORykKLSAgICAgICAgICAgICpzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgfSBl
bHNlIGlmIChsZW5ndGggPT0gZGVzdENhcGFjaXR5KQotICAgICAgICAqc3RhdHVzID0gVV9TVFJJ
TkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsKLSAgICBlbHNlCi0gICAgICAgICpzdGF0dXMgPSBV
X0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90
PihsZW5ndGgpOwotfQotCi1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0
aXZlKGNvbnN0IFVUZXh0KiB1VGV4dCkKLXsKLSAgICByZXR1cm4gdVRleHQtPmNodW5rTmF0aXZl
U3RhcnQgKyB1VGV4dC0+Y2h1bmtPZmZzZXQ7Ci19Ci0KLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0
aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0IFVUZXh0KiB1VGV4dCwgaW50NjRfdCBuYXRp
dmVJbmRleCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHVUZXh0LCB1VGV4dC0+Y2h1bmtOYXRpdmVT
dGFydCA+PSBuYXRpdmVJbmRleCk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1VGV4dCwgbmF0aXZlSW5k
ZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG5hdGl2ZUluZGV4KTsKLX0KLQotc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShV
VGV4dCogdVRleHQpCi17Ci0gICAgdVRleHQtPmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4
dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIs
IGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVz
KQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVf
SUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQot
ICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9m
KHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0
dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAgdGV4dC0+YSA9IGxlbmd0
aDsKLSAgICB0ZXh0LT5wRnVuY3MgPSAmdVRleHRMYXRpbjFGdW5jczsKLSAgICB0ZXh0LT5jaHVu
a0NvbnRlbnRzID0gKFVDaGFyKil0ZXh0LT5wRXh0cmE7Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8
VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgMCwgc2l6ZW9mKFVDaGFyKSAqIFVUZXh0V2l0
aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKLQotICAgIHJldHVybiB0ZXh0OwotfQotCi0KLS8vIExh
dGluMUNvbnRleHRBd2FyZSBwcm92aWRlcgotCi1zdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ29u
dGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7
Ci1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4
dCopOwotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0Kiwg
aW50NjRfdCwgVUJvb2wpOwotc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVF
eHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JD
b2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKFVUZXh0Kik7
Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
RnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAw
LAotICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUsCi0gICAgdVRleHRMYXRpbjFDb250
ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3Ms
Ci0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAg
bnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgdVRleHRMYXRpbjFDb250
ZXh0QXdhcmVDbG9zZSwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0cgot
fTsKLQotc3RhdGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0TGF0aW4xQ29udGV4
dEF3YXJlR2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQpCi17Ci0gICAgaWYgKCF0
ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6
Ok5vQ29udGV4dDsKLSAgICByZXR1cm4gdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0
cmEgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVy
Q29udGV4dDo6UHJpb3JDb250ZXh0OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4
dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5k
ZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0
ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7Ci0gICAgaWYgKGZvcndhcmQpIHsK
LSAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID49IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPCBu
YXRpdmVMZW5ndGgpOwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5k
ZXg7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleCArIHRleHQt
PmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID4gbmF0aXZlTGVuZ3RoKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCA9IG5hdGl2ZUxlbmd0aDsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobmF0aXZlSW5k
ZXggPiB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgICAgIHRl
eHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleDsKLSAgICAgICAgdGV4dC0+Y2h1bmtO
YXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFy
KTsKLSAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPCB0ZXh0LT5iKQotICAgICAg
ICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7Ci0gICAgfQotICAgIGludDY0
X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNodW5rTmF0aXZlU3Rh
cnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0
ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAgICBBU1NFUlQobGVuZ3RoIDwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQtPmNodW5rTGVuZ3Ro
ID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNf
Y2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKLSAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0
ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8g
MCA6IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9j
YXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFy
Kj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4
dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQot
ewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRz
ID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25z
dCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0gICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJ
blByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250
ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0
aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0
ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6IG5h
dGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3RoLCBm
b3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRp
dmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUlu
ZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0g
dGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0
ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBj
aHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBz
dGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0
YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dChV
VGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVC
b29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQt
PmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRz
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKLSAgICB0ZXh0TGF0aW4xQ29u
dGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJl
Q2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVw
LCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRpYyBpbnQ2NF90IHVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQotewotICAgIHJldHVy
biB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4
dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3
YXJkKQotewotICAgIGlmICghdGV4dC0+Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwot
ICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVM
ZW5ndGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwotICAgIGlmICh1VGV4dEFjY2Vz
c0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9y
d2FyZCwgaXNBY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKLSAgICBu
YXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0TGF0aW4x
Q29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVVRleHRQcm92aWRlckNv
bnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewot
ICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1h
cnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1h
cnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JD
b250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0g
ZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRl
eHQpCi0gICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0
KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2Ugewot
ICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JD
b250ZXh0KTsKLSAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250
ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0KLSAg
ICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJy
b3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhp
cyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKLSAgICAvLyB0
aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOwotICAgIHJl
dHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKFVU
ZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCog
b3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdp
dGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNo
YXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3Rh
dHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxM
RUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFVUZXh0
KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1
ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0g
ICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlu
aXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKHRleHQsICZ0ZXh0TGF0aW4xQ29udGV4
dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExl
bmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlkNWQyODRiZWMwYTgxYjNm
ODdhYWM2ODNiNDhlMzQ4MGU1MjRlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyTGF0aW4xLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKLSNkZWZpbmUgVVRleHRQcm92aWRlckxhdGlu
MV9oCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvTENo
YXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBpbnQgVVRleHRXaXRoQnVmZmVy
SW5saW5lQ2FwYWNpdHkgPSAxNjsKLQotc3RydWN0IFVUZXh0V2l0aEJ1ZmZlciB7Ci0gICAgVVRl
eHQgdGV4dDsKLSAgICBVQ2hhciBidWZmZXJbVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHld
OwotfTsKLQotVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciog
dXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVFcnJv
ckNvZGUqIHN0YXR1cyk7Ci1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlk
ZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4
dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gVVRleHRQcm92aWRlckxhdGluMV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhYWM0OGM4MTUxY2UwMTI1MzZhOGM0YjE1YWFlZGI4NDg2
YjBjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCi0KLSNpbmNsdWRlICJVVGV4dFBy
b3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVVRGMTZDb250ZXh0QXdhcmUg
cHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRl
eHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1
VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0Kik7Ci1zdGF0aWMgVUJvb2wg
dVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKLXN0
YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRf
dCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1
VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKLQotc3RhdGljIGNvbnN0IHN0cnVj
dCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNzID0gewotICAgIHNpemVvZihV
VGV4dEZ1bmNzKSwKLSAgICAwLAotICAgIDAsCi0gICAgMCwKLSAgICB1VGV4dFVURjE2Q29udGV4
dEF3YXJlQ2xvbmUsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCwKLSAg
ICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzLAotICAgIHVUZXh0VVRGMTZDb250ZXh0QXdh
cmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAg
IG51bGxwdHIsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlLAotICAgIG51bGxwdHIs
Ci0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyCi19OwotCi1zdGF0aWMgaW5saW5lIFVUZXh0UHJv
dmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KGNvbnN0
IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50cykKLSAgICAgICAg
cmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7Ci0gICAgcmV0dXJuIHRleHQt
PmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5
Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci19Ci0KLXN0YXRp
YyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0
ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9y
d2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA+PSB0ZXh0LT5i
IDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZv
cndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2
ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7Ci0gICAgdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICBpbnQ2NF90IGxlbmd0aCA9
IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8v
IEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBl
eGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJf
dD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNo
dW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVk
IGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3Ro
LgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkg
OiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRl
eHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VS
VCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEp
OwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRl
eHQtPnApOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9p
ZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQot
ewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIEFTU0VS
VChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+
Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRl
eCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgg
OiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIHRleHQtPmNodW5rTmF0aXZlU3Rh
cnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOwotICAgIHRleHQt
PmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0g
dGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxs
IGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVu
ayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
b2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVU
RjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3Qg
bmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAg
IEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRl
eHQtPnApOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hh
cio+KHRleHQtPnEpOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4
dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQotc3RhdGlj
IFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBj
b25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0g
ICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1
cyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0
aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQotewotICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsK
LX0KLQotc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqIHRl
eHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgaWYgKCF0ZXh0
LT5jb250ZXh0KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgaW50NjRfdCBuYXRpdmVMZW5n
dGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKHRleHQpOwotICAgIFVCb29s
IGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0g
ICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Ci0gICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vz
c1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAgIFVUZXh0UHJvdmlkZXJD
b250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2Q29udGV4dEF3YXJlR2V0Q3VycmVudENv
bnRleHQodGV4dCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0
UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQo
bmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAo
bmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRl
eHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAg
dGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5k
ZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRl
eHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwg
bmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRl
eHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICB0ZXh0VVRGMTZDb250
ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9
PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKLSAgICAgICAgdGV4dFVURjE2
Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2
ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMg
aW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGlu
dDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2RlKQotewotICAgIC8v
IEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkg
d2l0aCBJQ1UgZnVuY3Rpb25zCi0gICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0
IG9wZXJhdGlvbi4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAqZXJyb3JDb2RlID0g
VV9VTlNVUFBPUlRFRF9FUlJPUjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgdVRl
eHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRl
eHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92
aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JD
b2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewotICAgICAgICAqc3RhdHVz
ID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJTFVS
RSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KLSAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcih0ZXh0LCAm
dGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQs
IHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3Uv
VVRleHRQcm92aWRlclVURjE2LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YjQ3
ZGQ3MzRiYWE3MzA4MDM0M2UwNTgwNWQ3MmUwMjNhN2E5ZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9p
Y3UvVVRleHRQcm92aWRlclVURjE2LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyVVRGMTZfaAotI2RlZmluZSBVVGV4dFBy
b3ZpZGVyVVRGMTZfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVVUZXh0KiBvcGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVU
ZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNv
bnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqKTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlclVURjE2X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXgg
Yjg2MGEzNTI5MmMzNTFiNDNiNjk0Nzg4MTVmZGRhMWMxYjI2ZDJiOC4uZDhlZTU5OGM3NDM4YjU3
MjBjZWVlOTgxN2RlZjNlYWJhOTU1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGV4dEJvdW5kYXJpZXMuaCIKIAotI2ltcG9ydCAiVGV4
dEJyZWFrSXRlcmF0b3IuaCIKLSNpbXBvcnQgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1Uu
aCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nVG9rZW5pemVyLmg+CiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHVuaWNvZGUvdWJyay5oPgpAQCAt
MzYsNiArMzQsOCBAQAogI2ltcG9ydCA8dW5pY29kZS91dHlwZXMuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVLmg+CiAjaW1wb3J0IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU1Mzk3NmZiMWQ1ZDcyYmNh
NzQ2NzM2YjY4MzcxNTA2YWE4ZDY0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0
b3JJbnRlcm5hbElDVS5oIgotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQgbWF4TG9jYWxlU3RyaW5nTGVuZ3RoID0g
MzI7Ci0KLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0QnJlYWtMb2Nh
bGVQcmVmZXJlbmNlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IGxvY2Fs
ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtM
b2NhbGUiKSwKLSAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVy
ZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSk7Ci0gICAgaWYgKCFsb2Nh
bGUgfHwgQ0ZHZXRUeXBlSUQobG9jYWxlLmdldCgpKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KGxvY2FsZS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRv
cExhbmd1YWdlUHJlZmVyZW5jZSgpCi17Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1
YWdlc0FycmF5ID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7Ci0g
ICAgaWYgKCFsYW5ndWFnZXNBcnJheSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYg
KCFDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzQXJyYXkuZ2V0KCkpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRW
YWx1ZUF0SW5kZXgobGFuZ3VhZ2VzQXJyYXkuZ2V0KCksIDApKTsKLX0KLQotc3RhdGljIHZvaWQg
Z2V0TG9jYWxlKENGU3RyaW5nUmVmIGxvY2FsZSwgY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4
TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICAvLyBFbXB0eSBzdHJpbmcgbWVhbnMgInJvb3Qg
bG9jYWxlIiwgYW5kIHRoYXQgaXMgd2hhdCB3ZSB1c2UgaWYgd2UgY2FuJ3QgZ2V0IGEgcHJlZmVy
ZW5jZS4KLSAgICBsb2NhbGVTdHJpbmdCdWZmZXJbMF0gPSAwOwotICAgIGlmICghbG9jYWxlKQot
ICAgICAgICByZXR1cm47Ci0gICAgQ0ZTdHJpbmdHZXRDU3RyaW5nKGxvY2FsZSwgbG9jYWxlU3Ry
aW5nQnVmZmVyLCBtYXhMb2NhbGVTdHJpbmdMZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkp
OwotfQotCi1zdGF0aWMgdm9pZCBnZXRTZWFyY2hMb2NhbGUoY2hhciBsb2NhbGVTdHJpbmdCdWZm
ZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICBnZXRMb2NhbGUodG9wTGFuZ3VhZ2VQ
cmVmZXJlbmNlKCkuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0KLWNvbnN0IGNoYXIq
IGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5n
QnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGljIGJvb2wgZ290U2VhcmNo
TG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RTZWFyY2hMb2NhbGUpIHsKLSAgICAgICAgZ2V0
U2VhcmNoTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAgICAgIGdvdFNlYXJjaExvY2Fs
ZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJpbmdCdWZmZXI7Ci19Ci0KLXN0
YXRpYyB2b2lkIGdldFRleHRCcmVha0xvY2FsZShjaGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhM
b2NhbGVTdHJpbmdMZW5ndGhdKQotewotICAgIC8vIElmIHRoZXJlIGlzIG5vIHRleHQgYnJlYWsg
bG9jYWxlLCB1c2UgdGhlIHRvcCBsYW5ndWFnZSBwcmVmZXJlbmNlLgotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbG9jYWxlID0gdGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSgpOwotICAgIGlm
IChsb2NhbGUpIHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Fub25pY2Fs
TG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmll
ckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlLmdldCgpKSkpCi0gICAgICAg
ICAgICBsb2NhbGUgPSBjYW5vbmljYWxMb2NhbGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIGxvY2Fs
ZSA9IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpOwotICAgIGdldExvY2FsZShsb2NhbGUuZ2V0KCks
IGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtM
b2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2Fs
ZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGljIGJvb2wgZ290VGV4dEJyZWFrTG9jYWxlID0gZmFs
c2U7Ci0gICAgaWYgKCFnb3RUZXh0QnJlYWtMb2NhbGUpIHsKLSAgICAgICAgZ2V0VGV4dEJyZWFr
TG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAgICAgIGdvdFRleHRCcmVha0xvY2FsZSA9
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJpbmdCdWZmZXI7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGU0MTdlMTcwNWVmNTRiOTM5MjE0ZGExODQ4MGRiN2EzMmMzMmM5MjkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKLXsKLSAgICAvLyBG
SVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAiIjsKLX0KLQotY29u
c3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAgICAvLyBVc2luZyBlbl9V
U19QT1NJWCBub3cgc28gd29yZCBzZWxlY3Rpb24gaW4gYWRkcmVzcyBmaWVsZCB3b3JrcyBhcyBl
eHBlY3RlZCBhcyBiZWZvcmUgKGRvdWJsZS1jbGlja2luZwotICAgIC8vIGluIGEgVVJMIHNlbGVj
dHMgYSB3b3JkIGRlbGltaXRlZCBieSBwZXJpb2RzIHJhdGhlciB0aGFuIHNlbGVjdGluZyB0aGUg
ZW50aXJlIFVSTCkuCi0gICAgLy8gSG93ZXZlciwgdGhpcyBpcyBub3QgZW50aXJlbHkgY29ycmVj
dCAtIHdlIHNob3VsZCBob25vciB0aGUgc3lzdGVtIGxvY2FsZSBpbiB0aGUgbm9ybWFsIGNhc2Uu
Ci0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS82Nzg2NzAzPiBTaG91bGQgdXNlIHN5c3Rl
bSBsb2NhbGUgZm9yIHRleHQgYnJlYWtpbmcKLSAgICByZXR1cm4gImVuX1VTX1BPU0lYIjsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZTM1NDYw
MzE5NTAzMjU4Y2YyOWY3NDNhNWI4NDEwZmYyNGU5ZWViNy4uMmVkNWI1YTk1ZWVjM2MwNTBjZTFi
ZDQ5ZGZhMDQ1YjYwNjcxMzFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCkBAIC02OCw3ICs2OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlRleHRC
cmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4K
ICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggOGI0ZWMz
ZjhlZWI5MzJjMWM3ZGM1ZGUxNjY5ZjA4YzQwYmEwNmVjYi4uMmE1YWQ1ZDQ1MDk0MjU3NzZiOWFj
MDQwMDAzNmZjNzYwMWI2ZTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRl
ICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZpc2li
bGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuaAppbmRleCBiYWNjNWMyNTNhYzNlN2M5NWQ1YzZmYTlmMzYxNzU1MjQ0
NWE4OTUyLi5kNjNlNjA4OWNkZTQwMzdjNTVlNWYxYzhjNjIyODFlOGFjYTYyYmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRl
ICJSZW5kZXJUZXh0TGluZUJveGVzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5oIgog
I2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgK
aW5kZXggYzc5MDZjMTdkYzhlMDE0ZWQwNTBmOTVmY2IwMWNjODZiNTEwMWQ2NC4uMTA3N2JjYmJm
MTYwOTU1NGJjZWJiNzc0NThmMjgwODVmZjYyNmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRl
cmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgi
CiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIgotI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KICNpbmNsdWRlICJicmVha19saW5lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAppbmRleCAwNzU3NmJiYzhiZDRjZmY2
ZjUzYWIzNGIwYzEzNjVhM2Y4NDRhOGNhLi5lNGI5NTM2ZmQxYmVkZjFjZTM2M2Q2NjAxMWQ1MTIz
NTkwZWY4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAKQEAg
LTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJicmVha19saW5l
cy5oIgogCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2JyZWFrX2xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuaAppbmRleCA5ZTA0ZDFlNDI4Y2EyNjA4MzVhYmViZjk1ZWVjNjQzODliZmVlNGQ2Li5hMjk0
NjEyOWNiYTZlYjkxNmRhYjllNTFhODBlY2JlOWUxN2ZiMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaApAQCAtMjIsOSArMjIsOSBAQAogI2lmbmRlZiBicmVha19saW5l
c19oCiAjZGVmaW5lIGJyZWFrX2xpbmVzX2gKIAotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaAppbmRleCAyNzc0ZjI2
ODU2MTE5ODNkZjVjMzQ4MzllZGU3MDQ2ZGVkMjZhM2ZkLi5jODlmZTE3Y2NkMDY5YTY1Y2UxM2Q4
MWFjN2UxYTNjODlmNTE4YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lQnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIK
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283239</attachid>
            <date>2016-07-08 19:17:34 -0700</date>
            <delta_ts>2016-07-08 19:22:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159594-20160708191657.patch</filename>
            <type>text/plain</type>
            <size>399420</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLjM0M2FmYWRlZDQwYTE4MDQ4MjRhM2ZiYTM2MTNhZWIzZWVmZWE5
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMwIEBACisyMDE2LTA3LTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2luZyBpdGVyYXRvciBj
b2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1ZpZXcgYSBHcmFwaGVt
ZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRvciBuZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9yCisgICAgICAgIGNv
ZGUuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BsYXRmb3JtRWZsLmNtYWtlOgor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0
Zi9UaW55TFJVQ2FjaGUuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmguCisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9v
bDo6TGluZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0
b3JQb29sOjpzaGFyZWRQb29sKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0b3JQb29s
OjptYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZCk6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0
ZXJhdG9yUG9vbDo6dGFrZSk6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6
cHV0KToKKyAgICAgICAgKiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcC4K
KyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0ZXJhdG9y
KToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5jZUJyZWFr
SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6cmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6bWFwTGluZUl0ZXJhdG9yTW9kZVRv
UnVsZXMpOgorICAgICAgICAoV1RGOjppc0NKS0xvY2FsZSk6CisgICAgICAgIChXVEY6Om9wZW5M
aW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjpjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtGaXJzdCk6CisgICAgICAgIChXVEY6OnRleHRCcmVh
a0xhc3QpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtOZXh0KToKKyAgICAgICAgKFdURjo6dGV4
dEJyZWFrUHJldmlvdXMpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtQcmVjZWRpbmcpOgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtGb2xsb3dpbmcpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtD
dXJyZW50KToKKyAgICAgICAgKFdURjo6aXNUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjppc1dv
cmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAg
ICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgICogd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaC4KKyAgICAgICAgKFdURjo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjpMYXp5TGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6On5MYXp5TGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnN0cmluZyk6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6aXNMb29zZUNKS01vZGUpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJy
ZWFrSXRlcmF0b3I6Omxhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFr
SXRlcmF0b3I6OnNlY29uZFRvTGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6c2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjp1cGRhdGVQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I6OnJlc2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxp
bmVCcmVha0l0ZXJhdG9yOjpwcmlvckNvbnRleHRMZW5ndGgpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OmdldCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6cmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciop
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVS5oLgorICAgICAgICAqIHd0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVRWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRCk6CisgICAgICAgICogd3RmL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VHdGsuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmNwcC4KKyAgICAgICAgKFdURjo6Zml4UG9pbnRlcik6CisgICAgICAgIChX
VEY6OnVUZXh0Q2xvbmVJbXBsKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQ
cm92aWRlci5oLgorICAgICAgICAoV1RGOjp1VGV4dFByb3ZpZGVyQ29udGV4dCk6CisgICAgICAg
IChXVEY6OmluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKToKKyAgICAgICAgKFdU
Rjo6dVRleHRBY2Nlc3NQaW5JbmRleCk6CisgICAgICAgIChXVEY6OnVUZXh0QWNjZXNzSW5DaHVu
a09yT3V0T2ZSYW5nZSk6CisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRp
bjEuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlckxhdGluMS5jcHAuCisgICAgICAgIChXVEY6OnVUZXh0TGF0aW4xQ2xvbmUpOgor
ICAgICAgICAoV1RGOjp1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCk6CisgICAgICAgIChXVEY6OnVU
ZXh0TGF0aW4xQWNjZXNzKToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFFeHRyYWN0KToKKyAg
ICAgICAgKFdURjo6dVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZSk6CisgICAgICAgIChXVEY6
OnVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KToKKyAgICAgICAgKFdURjo6dVRleHRM
YXRpbjFDbG9zZSk6CisgICAgICAgIChXVEY6Om9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKToKKyAg
ICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KToKKyAg
ICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KToK
KyAgICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRl
eHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250
ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JD
b250ZXh0KToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSk6Cisg
ICAgICAgIChXVEY6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKToKKyAgICAg
ICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MpOgorICAgICAgICAoV1RGOjp1
VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGlu
MUNvbnRleHRBd2FyZUNsb3NlKToKKyAgICAgICAgKFdURjo6b3BlbkxhdGluMUNvbnRleHRBd2Fy
ZVVUZXh0UHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0
aW4xLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyTGF0aW4xLmguCisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJV
VEYxNi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuY3BwLgorICAgICAgICAoV1RGOjp0ZXh0VVRGMTZDb250ZXh0QXdh
cmVHZXRDdXJyZW50Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW1hcnlDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2Q29udGV4dEF3
YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNv
bnRleHRBd2FyZUNsb25lKToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZU5h
dGl2ZUxlbmd0aCk6CisgICAgICAgIChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3Mp
OgorICAgICAgICAoV1RGOjp1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCk6CisgICAgICAg
IChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9zZSk6CisgICAgICAgIChXVEY6Om9wZW5V
VEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oLgorICAgICAgICAqIHd0Zi90ZXh0L21hYy9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5t
bS4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSk6CisgICAgICAgIChX
VEY6OnRvcExhbmd1YWdlUHJlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OmdldExvY2FsZSk6Cisg
ICAgICAgIChXVEY6OmdldFNlYXJjaExvY2FsZSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRTZWFy
Y2hMb2NhbGVJRCk6CisgICAgICAgIChXVEY6OmdldFRleHRCcmVha0xvY2FsZSk6CisgICAgICAg
IChXVEY6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6CisgICAgICAgICogd3RmL3RleHQvd2lu
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdp
bi5jcHAuCisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKwogMjAxNi0wNy0wOCAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIwMjc5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlM2EyMjBlOTkzNWZkMzc1ZjEx
MGFhZTg5YmE0ZWNiNTkxMGVjZjcwLi40MmZkZmEwMWEyMzAwNmNkMDQ5MTM1OWUyMTdlYTk0NjM4
MzA1M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU0IEBACisyMDE2LTA3LTA4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2lu
ZyBpdGVyYXRvciBjb2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1Zp
ZXcgYSBHcmFwaGVtZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRv
ciBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9y
CisgICAgICAgIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMg
bm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHA6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAqIGVk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKiBodG1sL1RleHRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHA6CisgICAgICAgIChXVEY6OlJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZhbHVlRm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZh
bHVlRm9yS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQ
b29sOjpMaW5lQnJlYWtJdGVyYXRvclBvb2wpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6bWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjp0YWtl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6cHV0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojppbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6c2V0VGV4dEZvckl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldENv
bnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3
b3JkQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZW50ZW5jZUJy
ZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3Vyc29yTW92ZW1lbnRJ
dGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphY3F1aXJlTGluZUJyZWFrSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZUxpbmVCcmVha0l0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1hcExpbmVJdGVyYXRvck1vZGVUb1J1
bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ0pLTG9jYWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5MaW5lQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6On5Ob25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVh
a0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVha0xhc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFrTmV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0QnJlYWtQcmVjZWRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJy
ZWFrRm9sbG93aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVha0N1cnJl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNUZXh0QnJlYWspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4dEJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxp
bmVCcmVha0l0ZXJhdG9yOjpMYXp5TGluZUJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjp+TGF6eUxpbmVCcmVha0l0ZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6
aXNMb29zZUNKS01vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpsYXN0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
enlMaW5lQnJlYWtJdGVyYXRvcjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c2V0UHJpb3JDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6dXBkYXRl
UHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpwcmlvckNvbnRleHRMZW5ndGgpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpnZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpyZXNldFN0cmluZ0FuZFJlbGVh
c2VJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Zml4UG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dENsb25lSW1w
bCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6dVRleHRQcm92aWRlckNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRBY2Nlc3NQaW5JbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dExhdGluMUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4
dExhdGluMUV4dHJhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFN
YXBPZmZzZXRUb05hdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGlu
MU1hcE5hdGl2ZUluZGV4VG9VVEYxNik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4
dExhdGluMUNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5MYXRpbjFVVGV4
dFByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRpbjFDb250ZXh0
QXdhcmVHZXRDdXJyZW50Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJ
blByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29u
dGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
cik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVU
RjE2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJl
bnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRB
d2FyZU1vdmVJblByaW1hcnlDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRl
eHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0VVRGMTZDb250
ZXh0QXdhcmVDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dFVURjE2Q29u
dGV4dEF3YXJlTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0
VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRl
eHRVVEYxNkNvbnRleHRBd2FyZUV4dHJhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
dVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvcExhbmd1YWdlUHJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpnZXRMb2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2VhcmNoTG9jYWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRUZXh0QnJlYWtMb2NhbGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9icmVha19saW5lcy5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L2JyZWFrX2xpbmVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaDoK
KwogMjAxNi0wNy0wOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAg
ICAgUHJldmVudCBmdWxsc2NyZWVuIHZpZGVvIGRpbWVuc2lvbiBzdGF0ZSBmcm9tIGJlaW5nIHJl
c2V0IGFmdGVyIGNvbmZpZ3VyaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDM0ZjY2ZTMzZTljY2Q4Yzk1MzdmNzU3MGVmMmE4MmIwN2VjM2QzMS4uNGJl
NGZjMWRhNDRjYzlhMThmMjEyZTgyMGRiMzU4MGJjNmIyOWVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSwxNSBAQAogCQkxQUNBREQ4NDE4
ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNBREQ4MjE4ODQ0ODAx
MDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi87IH07CiAJCTFB
RkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi87IH07CiAJCTFBRkRFNjUzMTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRp
b25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
REU2NTIxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmggKi87IH07CisJCTFDMTgxQzdGMUQz
MDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM3RDFEMzA3OERBMDBGNUZBMTYgLyog
VGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OworCQkxQzE4MUM4MDFEMzA3OERBMDBGNUZBMTYg
LyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMTgxQzdFMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5oICovOyB9OworCQkxQzE4MUM4RjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi87IH07CisJCTFDMTgxQzkw
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QTFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlci5oICovOyB9OworCQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQ
cm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5j
cHAgKi87IH07CisJCTFDMTgxQzkyMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4
MUM4QzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovOyB9OworCQkx
QzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTgxQzhEMUQzMDdBQjgw
MEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovOyB9OworCQkxQzE4MUM5NDFEMzA3
QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlclVURjE2LmggKi87IH07CisJCTFDMTgxQzk2MUQzMDgwMEEwMEY1RkExNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxODFDOTUxRDMwODAwQTAwRjVGQTE2IC8qIFRleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gKi87IH07CiAJCTFGQTQ3QzhBMTUyNTAyREEw
MDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg4MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmNwcCAqLzsgfTsKIAkJMUZBNDdDOEIxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJl
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3
Qzg5MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggKi87IH07CiAJCTI2MTQ3QjBB
MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBE
REI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovOyB9OwpAQCAtNDE0LDYgKzQy
MywxNyBAQAogCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNV
c2VkQnlTYWZhcmkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
ZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBRkRFNjUyMTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzE4MUM3RDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRl
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM3RTFEMzA3OERB
MDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODIxRDMwNzlBQzAwRjVGQTE2IC8qIFRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4OTFEMzA3QUI4
MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMxODFDOEExRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxh
dGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDOEMxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGluMS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzE4MUM4RDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJV
VEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMTgxQzhFMUQzMDdBQjgw
MEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgcGF0aCA9IG1hYy9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRkE0N0M4
ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVRocmVhZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02ODgsNiArNzA4LDE5IEBACiAJCQluYW1lID0gTGlicmFyaWVzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMxODFDODgxRDMwN0FCODAwRjVGQTE2IC8qIGljdSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMxODFDODkxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovLAorCQkJCTFDMTgxQzhBMUQzMDdB
QjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggKi8sCisJCQkJMUMxODFDOEIxRDMwN0FCODAw
RjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovLAorCQkJCTFDMTgxQzhDMUQzMDdB
QjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8sCisJCQkJMUMxODFDOEQxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8sCisJCQkJMUMxODFDOEUx
RDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxRkE0N0M4NzE1
MjUwMkRBMDA1NjhEMUIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTc1MSw2ICs3ODQsNyBAQAogCQlBNUJBMTVGMTE4MjQzMzlGMDBBODJFNjkg
LyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkx
QzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1h
Yy5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5t
bSAqLywKIAkJCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tICovLAog
CQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLywKQEAg
LTEwNDMsNiArMTA3Nyw3IEBACiAJCUE4QTQ3MzFCMTUxQTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzE4MUM4ODFE
MzA3QUI4MDBGNUZBMTYgLyogaWN1ICovLAogCQkJCUE1QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAv
KiBjZiAqLywKIAkJCQlBNUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogbWFjICovLAogCQkJCUE4
QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggKi8sCkBAIC0xMDc5LDYg
KzExMTQsMTAgQEAKIAkJCQk3MEVDQTYwQzFCMDI0MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmlu
Z0ltcGwuaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmNw
cCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggKi8sCisJ
CQkJMUMxODFDN0QxRDMwNzhEQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLywK
KwkJCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLywK
KwkJCQkxQzE4MUM4MTFEMzA3OTdDMDBGNUZBMTYgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggKi8sCisJCQkJMUMxODFDODIxRDMwNzlBQzAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xMjQ3LDYgKzEyODYsNyBAQAogCQkJCTJDMDUzODU0MTVCQzgxOTAw
MEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDcz
RDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQzE4MUM5MDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRDQxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hGdW5jdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0Q1MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoSXRlcmF0b3Jz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNENjE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaE1h
cC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjYzLDYgKzEzMDMsNyBAQAogCQkJCTdDREQ3RkZBMTg2
RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0FD
OTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MERB
MDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMx
ODFDOTQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUxNjQ2QjFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjcyLDYgKzEzMTMsNyBAQAogCQkJCUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNG
RiAvKiBNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0
MTIzRkYgLyogTUQ1LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJD
MzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4MUM4MDFEMzA3OERBMDBG
NUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VC
MTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzMyLDYgKzEzNzQsNyBAQAogCQkJCUE3NDg3NDUzMTdBMEJEQUUw
MEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQy
NjE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3
NDI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUMxODFDOTIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVCMDA0MTIzRkYgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyog
U3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MDIsNiArMTU0NSw3IEBACiAJCQkJ
QThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM5MTUxQTgy
NUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzk2MUQz
MDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAwNDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRhTG9n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0EwMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRl
TWF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MTUsNiArMTU1OSw3IEBACiAJCQkJQThBNDcz
QzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNG
RiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRDhCOUUxNzMxODc5ODAw
MTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0NE
ODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNTI5LDYgKzE1NzQsNyBAQAogCQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAv
KiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgy
NUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVy
UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQz
ODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTU4LDYgKzE2MDQsOCBA
QAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRv
ZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0
QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzE4MUM5MTFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEE5
OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NDgxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEExNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdXRleHQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRleHQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNDMxOTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIyMjE1ZTY0ZmYzMzllCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5oCkBAIC0wLDAgKzEsMTYwMCBA
QAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFu
ZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorKiAgIGZpbGUgbmFtZTogIHV0ZXh0LmgKKyogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAg
IHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQorKiAgIGluZGVudGF0aW9uOjQKKyoKKyogICBjcmVh
dGVkIG9uOiAyMDA0b2N0MDYKKyogICBjcmVhdGVkIGJ5OiBNYXJrdXMgVy4gU2NoZXJlcgorKi8K
KworI2lmbmRlZiBfX1VURVhUX0hfXworI2RlZmluZSBfX1VURVhUX0hfXworCisvKioKKyAqIFxm
aWxlCisgKiBcYnJpZWYgQyBBUEk6IEFic3RyYWN0IFVuaWNvZGUgVGV4dCBBUEkKKyAqCisgKiBU
aGUgVGV4dCBBY2Nlc3MgQVBJIHByb3ZpZGVzIGEgbWVhbnMgdG8gYWxsb3cgdGV4dCB0aGF0IGlz
IHN0b3JlZCBpbiBhbHRlcm5hdGl2ZQorICogZm9ybWF0cyB0byB3b3JrIHdpdGggSUNVIHNlcnZp
Y2VzLiAgSUNVIG5vcm1hbGx5IG9wZXJhdGVzIG9uIHRleHQgdGhhdCBpcworICogc3RvcmVkIGlu
IFVURi0xNiBmb3JtYXQsIGluIChVQ2hhciAqKSBhcnJheXMgZm9yIHRoZSBDIEFQSXMgb3IgYXMg
dHlwZQorICogVW5pY29kZVN0cmluZyBmb3IgQysrIEFQSXMuCisgKgorICogSUNVIFRleHQgQWNj
ZXNzIGFsbG93cyBvdGhlciBmb3JtYXRzLCBzdWNoIGFzIFVURi04IG9yIG5vbi1jb250aWd1b3Vz
CisgKiBVVEYtMTYgc3RyaW5ncywgdG8gYmUgcGxhY2VkIGluIGEgVVRleHQgd3JhcHBlciBhbmQg
dGhlbiBwYXNzZWQgdG8gSUNVIHNlcnZpY2VzLgorICoKKyAqIFRoZXJlIGFyZSB0aHJlZSBnZW5l
cmFsIGNsYXNzZXMgb2YgdXNhZ2UgZm9yIFVUZXh0OgorICoKKyAqICAgICBBcHBsaWNhdGlvbiBM
ZXZlbCBVc2UuICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB1c2FnZSAtIGFwcGxpY2F0aW9ucyB3b3Vs
ZAorICogICAgIHVzZSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMgb24gdGhlaXIg
aW5wdXQgdGV4dCwgYW5kIHBhc3MKKyAqICAgICB0aGUgcmVzdWx0aW5nIFVUZXh0IHRvIHRoZSBk
ZXNpcmVkIElDVSBzZXJ2aWNlLgorICoKKyAqICAgICBTZWNvbmQgaXMgdXNhZ2UgaW4gSUNVIFNl
cnZpY2VzLCBzdWNoIGFzIGJyZWFrIGl0ZXJhdGlvbiwgdGhhdCB3aWxsIG5lZWQgdG8KKyAqICAg
ICBvcGVyYXRlIG9uIGlucHV0IHByZXNlbnRlZCB0byB0aGVtIGFzIGEgVVRleHQuICBUaGVzZSBp
bXBsZW1lbnRhdGlvbnMKKyAqICAgICB3aWxsIG5lZWQgdG8gdXNlIHRoZSBpdGVyYXRpb24gYW5k
IHJlbGF0ZWQgVVRleHQgZnVuY3Rpb25zIHRvIGdhaW4KKyAqICAgICBhY2Nlc3MgdG8gdGhlIGFj
dHVhbCB0ZXh0LgorICoKKyAqICAgICBUaGUgdGhpcmQgY2xhc3Mgb2YgVVRleHQgdXNlcnMgYXJl
ICJ0ZXh0IHByb3ZpZGVycy4iICBUaGVzZSBhcmUgdGhlCisgKiAgICAgVVRleHQgaW1wbGVtZW50
YXRpb25zIGZvciB0aGUgdmFyaW91cyB0ZXh0IHN0b3JhZ2UgZm9ybWF0cy4gIEFuIGFwcGxpY2F0
aW9uCisgKiAgICAgb3Igc3lzdGVtIHdpdGggYSB1bmlxdWUgdGV4dCBzdG9yYWdlIGZvcm1hdCBj
YW4gaW1wbGVtZW50IGEgc2V0IG9mCisgKiAgICAgVVRleHQgcHJvdmlkZXIgZnVuY3Rpb25zIGZv
ciB0aGF0IGZvcm1hdCwgd2hpY2ggd2lsbCB0aGVuIGFsbG93CisgKiAgICAgSUNVIHNlcnZpY2Vz
IHRvIG9wZXJhdGUgb24gdGhhdCBmb3JtYXQuCisgKgorICoKKyAqIDxlbT5JdGVyYXRpbmcgb3Zl
ciB0ZXh0PC9lbT4KKyAqCisgKiBIZXJlIGlzIHNhbXBsZSBjb2RlIGZvciBhIGZvcndhcmQgaXRl
cmF0aW9uIG92ZXIgdGhlIGNvbnRlbnRzIG9mIGEgVVRleHQKKyAqCisgKiBcY29kZQorICogICAg
VUNoYXIzMiAgYzsKKyAqICAgIFVUZXh0ICAgICp1dCA9IHdoYXRldmVyKCk7CisgKgorICogICAg
Zm9yIChjPXV0ZXh0X25leHQzMkZyb20odXQsIDApOyBjPj0wOyBjPXV0ZXh0X25leHQzMih1dCkp
IHsKKyAqICAgICAgIC8vIGRvIHdoYXRldmVyIHdpdGggdGhlIGNvZGVwb2ludCBjIGhlcmUuCisg
KiAgICB9CisgKiBcZW5kY29kZQorICoKKyAqIEFuZCBoZXJlIGlzIHNpbWlsYXIgY29kZSB0byBp
dGVyYXRlIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgZnJvbSB0aGUgZW5kCisgKiBvZiB0aGUg
dGV4dCB0b3dhcmRzIHRoZSBiZWdpbm5pbmcuCisgKgorICogXGNvZGUKKyAqICAgIFVDaGFyMzIg
IGM7CisgKiAgICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZlcigpOworICogICAgaW50ICAgICAgdGV4
dExlbmd0aCA9IHV0ZXh0X25hdGl2ZUxlbmd0aCh1dCk7CisgKiAgICBmb3IgKGM9dXRleHRfcHJl
dmlvdXMzMkZyb20odXQsIHRleHRMZW5ndGgpOyBjPj0wOyBjPXV0ZXh0X3ByZXZpb3VzMzIodXQp
KSB7CisgKiAgICAgICAvLyBkbyB3aGF0ZXZlciB3aXRoIHRoZSBjb2RlcG9pbnQgYyBoZXJlLgor
ICogICAgfQorICogXGVuZGNvZGUKKyAqCisgKiA8ZW0+Q2hhcmFjdGVycyBhbmQgSW5kZXhpbmc8
L2VtPgorICoKKyAqIEluZGV4aW5nIGludG8gdGV4dCBieSBVVGV4dCBmdW5jdGlvbnMgaXMgbmVh
cmx5IGFsd2F5cyBpbiB0ZXJtcyBvZiB0aGUgbmF0aXZlCisgKiBpbmRleGluZyBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0IHN0b3JhZ2UuICBUaGUgc3RvcmFnZSBmb3JtYXQgY291bGQgYmUgVVRGLTgK
KyAqIG9yIFVURi0zMiwgZm9yIGV4YW1wbGUuICBXaGVuIGNvZGluZyB0byB0aGUgVVRleHQgYWNj
ZXNzIEFQSSwgbm8gYXNzdW1wdGlvbnMKKyAqIGNhbiBiZSBtYWRlIHJlZ2FyZGluZyB0aGUgc2l6
ZSBvZiBjaGFyYWN0ZXJzLCBvciBob3cgZmFyIGFuIGluZGV4CisgKiBtYXkgbW92ZSB3aGVuIGl0
ZXJhdGluZyBiZXR3ZWVuIGNoYXJhY3RlcnMuCisgKgorICogQWxsIGluZGljZXMgc3VwcGxpZWQg
dG8gVVRleHQgZnVuY3Rpb25zIGFyZSBwaW5uZWQgdG8gdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHRl
eHQuICBBbiBvdXQtb2YtYm91bmRzIGluZGV4IGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGFuIGVy
cm9yLCBidXQgaXMKKyAqIGFkanVzdGVkIHRvIGJlIGluIHRoZSByYW5nZSAgMCA8PSBpbmRleCA8
PSBsZW5ndGggb2YgaW5wdXQgdGV4dC4KKyAqCisgKgorICogV2hlbiBhbiBpbmRleCBwb3NpdGlv
biBpcyByZXR1cm5lZCBmcm9tIGEgVVRleHQgZnVuY3Rpb24sIGl0IHdpbGwgYmUKKyAqIGEgbmF0
aXZlIGluZGV4IHRvIHRoZSB1bmRlcmx5aW5nIHRleHQuICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11
bml0IGNoYXJhY3RlcnMsCisgKiBpdCB3aWxsICBhbHdheXMgcmVmZXIgdG8gdGhlIGZpcnN0IHBv
c2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIsCisgKiBuZXZlciB0byB0aGUgaW50ZXJpb3IuICBUaGlz
IGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIHRoaW5nIGFzIHNheWluZyB0aGF0CisgKiBhIHJldHVy
bmVkIGluZGV4IHdpbGwgYWx3YXlzIHBvaW50IHRvIGEgYm91bmRhcnkgYmV0d2VlbiBjaGFyYWN0
ZXJzLgorICoKKyAqIFdoZW4gYSBuYXRpdmUgaW5kZXggaXMgc3VwcGxpZWQgdG8gYSBVVGV4dCBm
dW5jdGlvbiwgYWxsIGluZGljZXMgdGhhdAorICogcmVmZXIgdG8gYW55IHBhcnQgb2YgYSBtdWx0
aS11bml0IGNoYXJhY3RlciByZXByZXNlbnRhdGlvbiBhcmUgY29uc2lkZXJlZAorICogdG8gYmUg
ZXF1aXZhbGVudC4gIEluIHRoZSBjYXNlIG9mIG11bHRpLXVuaXQgY2hhcmFjdGVycywgYW4gaW5j
b21pbmcgaW5kZXgKKyAqIHdpbGwgYmUgbG9naWNhbGx5IG5vcm1hbGl6ZWQgdG8gcmVmZXIgdG8g
dGhlIHN0YXJ0IG9mIHRoZSBjaGFyYWN0ZXIuCisgKiAKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHRl
c3Qgd2hldGhlciBhIG5hdGl2ZSBpbmRleCBpcyBvbiBhIGNvZGUgcG9pbnQgYm91bmRhcnkKKyAq
IGJ5IGRvaW5nIGEgdXRleHRfc2V0TmF0aXZlSW5kZXgoKSBmb2xsb3dlZCBieSBhIHV0ZXh0X2dl
dE5hdGl2ZUluZGV4KCkuCisgKiBJZiB0aGUgaW5kZXggaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLCBp
dCB3YXMgb24gYSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAgSWYKKyAqIGFuIGFkanVzdGVkIGluZGV4
IGlzIHJldHVybmVkLCB0aGUgb3JpZ2luYWwgaW5kZXggcmVmZXJyZWQgdG8gdGhlCisgKiBpbnRl
cmlvciBvZiBhIGNoYXJhY3Rlci4KKyAqCisgKiA8ZW0+Q29udmVudGlvbnMgZm9yIGNhbGxpbmcg
VVRleHQgZnVuY3Rpb25zPC9lbT4KKyAqCisgKiBNb3N0IFVUZXh0IGFjY2VzcyBmdW5jdGlvbnMg
aGF2ZSBhcyB0aGVpciBmaXJzdCBwYXJhbWV0ZXIgYSAoVVRleHQgKikgcG9pbnRlciwKKyAqIHdo
aWNoIHNwZWNpZmllcyB0aGUgVVRleHQgdG8gYmUgdXNlZC4gIFVubGVzcyBvdGhlcndpc2Ugbm90
ZWQsIHRoZQorICogcG9pbnRlciBtdXN0IHJlZmVyIHRvIGEgdmFsaWQsIG9wZW4gVVRleHQuICBB
dHRlbXB0aW5nIHRvCisgKiB1c2UgYSBjbG9zZWQgVVRleHQgb3IgcGFzc2luZyBhIE5VTEwgcG9p
bnRlciBpcyBhIHByb2dyYW1taW5nIGVycm9yIGFuZAorICogd2lsbCBwcm9kdWNlIHVuZGVmaW5l
ZCByZXN1bHRzIG9yIE5VTEwgcG9pbnRlciBleGNlcHRpb25zLgorICogCisgKiBUaGUgVVRleHRf
T3BlbiBmYW1pbHkgb2YgZnVuY3Rpb25zIGNhbiBlaXRoZXIgb3BlbiBhbiBleGlzdGluZyAoY2xv
c2VkKQorICogVVRleHQsIG9yIGhlYXAgYWxsb2NhdGUgYSBuZXcgVVRleHQuICBIZXJlIGlzIHNh
bXBsZSBjb2RlIGZvciBjcmVhdGluZworICogYSBzdGFjay1hbGxvY2F0ZWQgVVRleHQuCisgKgor
ICogXGNvZGUKKyAqICAgIGNoYXIgICAgICpzID0gd2hhdGV2ZXIoKTsgIC8vIEEgdXRmLTggc3Ry
aW5nIAorICogICAgVV9FcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogICAgVVRl
eHQgICAgdXQgPSBVVEVYVF9JTklUSUFMSVpFUjsKKyAqICAgIHV0ZXh0X29wZW5VVEY4KHV0LCBz
LCAtMSwgJnN0YXR1cyk7CisgKiAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAqICAgICAg
ICAvLyBlcnJvciBoYW5kbGluZworICogICAgfSBlbHNlIHsKKyAqICAgICAgICAvLyB3b3JrIHdp
dGggdGhlIFVUZXh0CisgKiAgICB9CisgKiBcZW5kY29kZQorICoKKyAqIEFueSBleGlzdGluZyBV
VGV4dCBwYXNzZWQgdG8gYW4gb3BlbiBmdW5jdGlvbiBfbXVzdF8gaGF2ZSBiZWVuIGluaXRpYWxp
emVkLCAKKyAqIGVpdGhlciBieSB0aGUgVVRFWFRfSU5JVElBTElaRVIsIG9yIGJ5IGhhdmluZyBi
ZWVuIG9yaWdpbmFsbHkgaGVhcC1hbGxvY2F0ZWQKKyAqIGJ5IGFuIG9wZW4gZnVuY3Rpb24uICBQ
YXNzaW5nIE5VTEwgd2lsbCBjYXVzZSB0aGUgb3BlbiBmdW5jdGlvbiB0bworICogaGVhcC1hbGxv
Y2F0ZSBhbmQgZnVsbHkgaW5pdGlhbGl6ZSBhIG5ldyBVVGV4dC4KKyAqCisgKi8KKworCisKKyNp
bmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWNoYXIuaCIKKyNp
ZiBVX1NIT1dfQ1BMVVNQTFVTX0FQSQorI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgi
CisjaW5jbHVkZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgor
I2luY2x1ZGUgInVuaWNvZGUvY2hhcml0ZXIuaCIKKyNlbmRpZgorCisKK1VfQ0RFQ0xfQkVHSU4K
Kworc3RydWN0IFVUZXh0OwordHlwZWRlZiBzdHJ1Y3QgVVRleHQgVVRleHQ7IC8qKjwgQyB0eXBl
ZGVmIGZvciBzdHJ1Y3QgVVRleHQuIEBzdGFibGUgSUNVIDMuNiAqLworCisKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEMgRnVuY3Rpb25zIGZvciBjcmVhdGluZyBV
VGV4dCB3cmFwcGVycyBhcm91bmQgdmFyaW91cyBraW5kcyBvZiB0ZXh0IHN0cmluZ3MuCisgKgor
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgICogQ2xvc2UgZnVu
Y3Rpb24gZm9yIFVUZXh0IGluc3RhbmNlcy4KKyAgKiBDbGVhbnMgdXAsIHJlbGVhc2VzIGFueSBy
ZXNvdXJjZXMgYmVpbmcgaGVsZCBieSBhbiBvcGVuIFVUZXh0LgorICAqIDxwPgorICAqICAgSWYg
dGhlIFVUZXh0IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZCBieSBvbmUgb2YgdGhlIHV0ZXh0X29w
ZW4gZnVuY3Rpb25zLAorICAqICAgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSB1dGV4
dCB3aWxsIGFsc28gYmUgZnJlZWQuCisgICogICBJZiB0aGUgVVRleHQgc3RvcmFnZSBvcmlnaW5h
dGVkIHdpdGggdGhlIGFwcGxpY2F0aW9uLCBhcyBpdCB3b3VsZCB3aXRoCisgICogICBhIGxvY2Fs
IG9yIHN0YXRpYyBpbnN0YW5jZSwgdGhlIHN0b3JhZ2Ugd2lsbCBub3QgYmUgZGVsZXRlZC4KKyAg
KgorICAqICAgQW4gb3BlbiBVVGV4dCBjYW4gYmUgcmVzZXQgdG8gcmVmZXIgdG8gbmV3IHN0cmlu
ZyBieSB1c2luZyBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKQorICAqICAgZnVuY3Rpb25zIHdpdGhv
dXQgZmlyc3QgY2xvc2luZyB0aGUgVVRleHQuICAKKyAgKgorICAqIEBwYXJhbSB1dCAgVGhlIFVU
ZXh0IHRvIGJlIGNsb3NlZC4KKyAgKiBAcmV0dXJuICAgIE5VTEwgaWYgdGhlIFVUZXh0IHN0cnVj
dCB3YXMgZGVsZXRlZCBieSB0aGUgY2xvc2UuICBJZiB0aGUgVVRleHQgc3RydWN0CisgICogICAg
ICAgICAgICB3YXMgb3JpZ2luYWxseSBwcm92aWRlZCBieSB0aGUgY2FsbGVyIHRvIHRoZSBvcGVu
IGZ1bmN0aW9uLCBpdCBpcworICAqICAgICAgICAgICAgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlv
biwgYW5kIG1heSBiZSBzYWZlbHkgdXNlZCBhZ2FpbiBpbgorICAqICAgICAgICAgICAgYSBzdWJz
ZXF1ZW50IHV0ZXh0X29wZW4uCisgICoKKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9jbG9zZShVVGV4dCAqdXQpOworCisjaWYgVV9T
SE9XX0NQTFVTUExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xhc3Mg
TG9jYWxVVGV4dFBvaW50ZXIKKyAqICJTbWFydCBwb2ludGVyIiBjbGFzcywgY2xvc2VzIGEgVVRl
eHQgdmlhIHV0ZXh0X2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQ
b2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICog
QHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NB
TF9PUEVOX1BPSU5URVIoTG9jYWxVVGV4dFBvaW50ZXIsIFVUZXh0LCB1dGV4dF9jbG9zZSk7CisK
K1VfTkFNRVNQQUNFX0VORAorCisjZW5kaWYKKworLyoqCisgKiBPcGVuIGEgcmVhZC1vbmx5IFVU
ZXh0IGltcGxlbWVudGF0aW9uIGZvciBVVEYtOCBzdHJpbmdzLgorICogCisgKiBcaHRtbG9ubHkK
KyAqIEFueSBpbnZhbGlkIFVURi04IGluIHRoZSBpbnB1dCB3aWxsIGJlIGhhbmRsZWQgaW4gdGhp
cyB3YXk6CisgKiBhIHNlcXVlbmNlIG9mIGJ5dGVzIHRoYXQgaGFzIHRoZSBmb3JtIG9mIGEgdHJ1
bmNhdGVkLCBidXQgb3RoZXJ3aXNlIHZhbGlkLAorICogVVRGLTggc2VxdWVuY2Ugd2lsbCBiZSBy
ZXBsYWNlZCBieSBhIHNpbmdsZSB1bmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlciwgXHVGRkZE
LiAKKyAqIEFueSBvdGhlciBpbGxlZ2FsIGJ5dGVzIHdpbGwgZWFjaCBiZSByZXBsYWNlZCBieSBh
IFx1RkZGRC4KKyAqIFxlbmRodG1sb25seQorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIg
dG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQu
CisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxp
emVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJl
c2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIFVURi04IHN0cmluZy4KKyAqIEBwYXJhbSBz
ICAgICAgQSBVVEYtOCBzdHJpbmcuICBNdXN0IG5vdCBiZSBOVUxMLgorICogQHBhcmFtIGxlbmd0
aCBUaGUgbGVuZ3RoIG9mIHRoZSBVVEYtOCBzdHJpbmcgaW4gYnl0ZXMsIG9yIC0xIGlmIHRoZSBz
dHJpbmcgaXMKKyAqICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0
YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgIEEgcG9pbnRl
ciB0byB0aGUgVVRleHQuICBJZiBhIHByZS1hbGxvY2F0ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBp
dAorICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAq
IEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRf
b3BlblVURjgoVVRleHQgKnV0LCBjb25zdCBjaGFyICpzLCBpbnQ2NF90IGxlbmd0aCwgVUVycm9y
Q29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIE9wZW4gYSByZWFkLW9ubHkgVVRleHQgZm9yIFVD
aGFyICogc3RyaW5nLgorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBz
dHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAg
ICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0
cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVy
ZW5jZSB0aGUgc3BlY2lmaWVkIFVDaGFyIHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBVQ2hh
ciAoVVRGLTE2KSBzdHJpbmcKKyAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBVQ2hhcnMg
aW4gdGhlIGlucHV0IHN0cmluZywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcworICogICAgICAgICAg
ICAgICB6ZXJvIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJu
ZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAgQSBwb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEg
cHJlLWFsbG9jYXRlZCBVVGV4dCB3YXMgcHJvdmlkZWQsIGl0CisgKiAgICAgICAgICAgICAgIHdp
bGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVybmVkLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K1VfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuVUNoYXJzKFVUZXh0ICp1dCwg
Y29uc3QgVUNoYXIgKnMsIGludDY0X3QgbGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisK
KyNpZiBVX1NIT1dfQ1BMVVNQTFVTX0FQSQorLyoqCisgKiBPcGVuIGEgd3JpdGFibGUgVVRleHQg
Zm9yIGEgbm9uLWNvbnN0IFVuaWNvZGVTdHJpbmcuIAorICogCisgKiBAcGFyYW0gdXQgICAgICBQ
b2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBj
cmVhdGVkLgorICogICAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFu
IGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAg
ICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgaW5wdXQgc3RyaW5nLgor
ICogQHBhcmFtIHMgICAgICAgQSBVbmljb2RlU3RyaW5nLgorICogQHBhcmFtIHN0YXR1cyBFcnJv
cnMgYXJlIHJldHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgICBQb2ludGVyIHRvIHRoZSBV
VGV4dC4gIElmIGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCisgKiAgICAgICAg
ICAgICAgICAgd2lsbCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElD
VSAzLjQKKyAqLworVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKK3V0ZXh0X29wZW5Vbmljb2Rl
U3RyaW5nKFVUZXh0ICp1dCwgaWN1OjpVbmljb2RlU3RyaW5nICpzLCBVRXJyb3JDb2RlICpzdGF0
dXMpOworCisKKy8qKgorICogT3BlbiBhIFVUZXh0IGZvciBhIGNvbnN0IFVuaWNvZGVTdHJpbmcu
ICAgVGhlIHJlc3VsdGluZyBVVGV4dCB3aWxsIG5vdCBiZSB3cml0YWJsZS4KKyAqIAorICogQHBh
cmFtIHV0ICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4
dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJl
ZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAg
ICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIGlucHV0IHN0
cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBjb25zdCBVbmljb2RlU3RyaW5nIHRvIGJlIHdyYXBw
ZWQuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1
cm4gICAgICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBh
cyBpbnB1dCwgdGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCBy
ZXR1cm5lZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQ
T1JUMgordXRleHRfb3BlbkNvbnN0VW5pY29kZVN0cmluZyhVVGV4dCAqdXQsIGNvbnN0IGljdTo6
VW5pY29kZVN0cmluZyAqcywgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIE9wZW4g
YSB3cml0YWJsZSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBmb3IgYW4gSUNVIFJlcGxhY2VhYmxlIG9i
amVjdC4KKyAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVM
TCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24t
TlVMTCwgbXVzdCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxs
IHRoZW4KKyAqICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZp
ZWQgcmVwbGFjZWFibGUgdGV4dC4KKyAqIEBwYXJhbSByZXAgICAgQSBSZXBsYWNlYWJsZSB0ZXh0
IG9iamVjdC4KKyAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgorICog
QHJldHVybiAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgVVRleHQgd2FzIHN1cHBs
aWVkIGFzIGlucHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQg
YW5kIHJldHVybmVkLgorICogQHNlZSBSZXBsYWNlYWJsZQorICogQHN0YWJsZSBJQ1UgMy40Cisg
Ki8KK1VfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuUmVwbGFjZWFibGUoVVRl
eHQgKnV0LCBpY3U6OlJlcGxhY2VhYmxlICpyZXAsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8q
KgorICogT3BlbiBhICBVVGV4dCBpbXBsZW1lbnRhdGlvbiBvdmVyIGFuIElDVSBDaGFyYWN0ZXJJ
dGVyYXRvci4KKyAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYg
TlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBu
b24tTlVMTCwgbXVzdCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3
aWxsIHRoZW4KKyAqICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVj
aWZpZWQgcmVwbGFjZWFibGUgdGV4dC4KKyAqIEBwYXJhbSBjaSAgICAgQSBDaGFyYWN0ZXIgSXRl
cmF0b3IuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEBy
ZXR1cm4gICAgICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGll
ZCBhcyBpbnB1dCwgdGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFu
ZCByZXR1cm5lZC4KKyAqIEBzZWUgUmVwbGFjZWFibGUKKyAqIEBzdGFibGUgSUNVIDMuNAorICov
CitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlbkNoYXJhY3Rlckl0ZXJhdG9y
KFVUZXh0ICp1dCwgaWN1OjpDaGFyYWN0ZXJJdGVyYXRvciAqY2ksIFVFcnJvckNvZGUgKnN0YXR1
cyk7CisKKyNlbmRpZgorCisKKy8qKgorICAqICBDbG9uZSBhIFVUZXh0LiAgVGhpcyBpcyBtdWNo
IGxpa2Ugb3BlbmluZyBhIFVUZXh0IHdoZXJlIHRoZSBzb3VyY2UgdGV4dCBpcyBpdHNlbGYKKyAg
KiAgYW5vdGhlciBVVGV4dC4KKyAgKgorICAqICBBIGRlZXAgY2xvbmUgd2lsbCBjb3B5IGJvdGgg
dGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHVuZGVybHlpbmcgdGV4dC4KKyAgKiAg
VGhlIG9yaWdpbmFsIGFuZCBjbG9uZWQgVVRleHQgd2lsbCBvcGVyYXRlIGNvbXBsZXRlbHkgaW5k
ZXBlbmRlbnRseTsgbW9kaWZpY2F0aW9ucworICAqICBtYWRlIHRvIHRoZSB0ZXh0IGluIG9uZSB3
aWxsIG5vdCBhZmZlY3QgdGhlIG90aGVyLiAgVGV4dCBwcm92aWRlcnMgYXJlIG5vdAorICAqICBy
ZXF1aXJlZCB0byBzdXBwb3J0IGRlZXAgY2xvbmVzLiAgVGhlIHVzZXIgb2YgY2xvbmUoKSBtdXN0
IGNoZWNrIHRoZSBzdGF0dXMgcmV0dXJuCisgICogIGFuZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUg
ZmFpbHVyZXMuCisgICoKKyAgKiAgVGhlIHN0YW5kYXJkIFVUZXh0IGltcGxlbWVudGF0aW9ucyBm
b3IgVVRGOCwgVUNoYXIgKiwgVW5pY29kZVN0cmluZyBhbmQKKyAgKiAgUmVwbGFjZWFibGUgYWxs
IHN1cHBvcnQgZGVlcCBjbG9uaW5nLgorICAqCisgICogIFRoZSBVVGV4dCByZXR1cm5lZCBmcm9t
IGEgZGVlcCBjbG9uZSB3aWxsIGJlIHdyaXRhYmxlLCBhc3N1bWluZyB0aGF0IHRoZSB0ZXh0Cisg
ICogIHByb3ZpZGVyIGlzIGFibGUgdG8gc3VwcG9ydCB3cml0aW5nLCBldmVuIGlmIHRoZSBzb3Vy
Y2UgVVRleHQgaGFkIGJlZW4gbWFkZQorICAqICBub24td3JpdGFibGUgYnkgbWVhbnMgb2YgVVRl
eHRfZnJlZXplKCkuCisgICoKKyAgKiAgQSBzaGFsbG93IGNsb25lIHJlcGxpY2F0ZXMgb25seSB0
aGUgVVRleHQgZGF0YSBzdHJ1Y3R1cmVzOyBpdCBkb2VzIG5vdCBtYWtlCisgICogIGEgY29weSBv
ZiB0aGUgdW5kZXJseWluZyB0ZXh0LiAgU2hhbGxvdyBjbG9uZXMgY2FuIGJlIHVzZWQgYXMgYW4g
ZWZmaWNpZW50IHdheSB0byAKKyAgKiAgaGF2ZSBtdWx0aXBsZSBpdGVyYXRvcnMgYWN0aXZlIGlu
IGEgc2luZ2xlIHRleHQgc3RyaW5nIHRoYXQgaXMgbm90IGJlaW5nCisgICogIG1vZGlmaWVkLgor
ICAqCisgICogIEEgc2hhbGxvdyBjbG9uZSBvcGVyYXRpb24gd2lsbCBub3QgZmFpbCwgYmFycmlu
ZyB0cnVseSBleGNlcHRpb25hbCBjb25kaXRpb25zIHN1Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9j
YXRpb24gZmFpbHVyZXMuCisgICoKKyAgKiAgU2hhbGxvdyBVVGV4dCBjbG9uZXMgc2hvdWxkIGJl
IGF2b2lkZWQgaWYgdGhlIFVUZXh0IGZ1bmN0aW9ucyB0aGF0IG1vZGlmeSB0aGUKKyAgKiAgdGV4
dCBhcmUgZXhwZWN0ZWQgdG8gYmUgdXNlZCwgZWl0aGVyIG9uIHRoZSBvcmlnaW5hbCBvciB0aGUg
Y2xvbmVkIFVUZXh0LgorICAqICBBbnkgc3VjaCBtb2RpZmljYXRpb25zICBjYW4gY2F1c2UgdW5w
cmVkaWN0YWJsZSBiZWhhdmlvci4gIFJlYWQgT25seQorICAqICBzaGFsbG93IGNsb25lcyBwcm92
aWRlIHNvbWUgcHJvdGVjdGlvbiBhZ2FpbnN0IGVycm9ycyBvZiB0aGlzIHR5cGUgYnkKKyAgKiAg
ZGlzYWJsaW5nIHRleHQgbW9kaWZpY2F0aW9uIHZpYSB0aGUgY2xvbmVkIFVUZXh0LgorICAqCisg
ICogIEEgc2hhbGxvdyBjbG9uZSBtYWRlIHdpdGggdGhlIHJlYWRPbmx5IHBhcmFtZXRlciA9PSBG
QUxTRSB3aWxsIHByZXNlcnZlIHRoZSAKKyAgKiAgdXRleHRfaXNXcml0YWJsZSgpIHN0YXRlIG9m
IHRoZSBzb3VyY2Ugb2JqZWN0LiAgTm90ZSwgaG93ZXZlciwgdGhhdAorICAqICB3cml0ZSBvcGVy
YXRpb25zIG11c3QgYmUgYXZvaWRlZCB3aGlsZSBtb3JlIHRoYW4gb25lIFVUZXh0IGV4aXN0cyB0
aGF0IHJlZmVyCisgICogIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgdGV4dC4KKyAgKgorICAqICBB
IFVUZXh0IGFuZCBpdHMgY2xvbmUgbWF5IGJlIHNhZmVseSBjb25jdXJyZW50bHkgYWNjZXNzZWQg
Ynkgc2VwYXJhdGUgdGhyZWFkcy4KKyAgKiAgVGhpcyBpcyB0cnVlIGZvciByZWFkIGFjY2VzcyBv
bmx5IHdpdGggc2hhbGxvdyBjbG9uZXMsIGFuZCBmb3IgYm90aCByZWFkIGFuZAorICAqICB3cml0
ZSBhY2Nlc3Mgd2l0aCBkZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5
IG9mIHRoZSBUZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQor
ICAqICBjb25zdHJhaW50IGlzIG1ldC4KKyAgKgorICAqICBAcGFyYW0gZGVzdCAgIEEgVVRleHQg
c3RydWN0IHRvIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGNsb25lIG9wZXJh
dGlvbiwKKyAgKiAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZSBjbG9uZSBmdW5jdGlvbiBz
aG91bGQgaGVhcC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBzdHJ1Y3QuCisgICogICAgICAgICAgICAg
ICAgSWYgbm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4dCwg
d2hpY2ggd2lsbCB0aGVuCisgICogICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gYmVjb21lIHRo
ZSBjbG9uZS4KKyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQgdG8gYmUgY2xvbmVkLgorICAq
ICBAcGFyYW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAgY2xvbmUsIEZBTFNFIGZvciBh
IHNoYWxsb3cgY2xvbmUuCisgICogIEBwYXJhbSByZWFkT25seSBUUlVFIHRvIHJlcXVlc3QgdGhh
dCB0aGUgY2xvbmVkIFVUZXh0IGhhdmUgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgCisgICogICAg
ICAgICAgICAgICAgdW5kZXJseWluZyB0ZXh0LiAgCisKKyAgKiAgQHBhcmFtIHN0YXR1cyBFcnJv
cnMgYXJlIHJldHVybmVkIGhlcmUuICBGb3IgZGVlcCBjbG9uZXMsIFVfVU5TVVBQT1JURURfRVJS
T1IKKyAgKiAgICAgICAgICAgICAgICB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHByb3Zp
ZGVyIGlzIHVuYWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5hbCB0
ZXh0LgorICAqICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBOVUxM
IGlmIHRoZSBjbG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqICBAc3RhYmxlIElDVSAzLjQKKyAg
Ki8KK1VfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9jbG9uZShVVGV4dCAqZGVzdCwg
Y29uc3QgVVRleHQgKnNyYywgVUJvb2wgZGVlcCwgVUJvb2wgcmVhZE9ubHksIFVFcnJvckNvZGUg
KnN0YXR1cyk7CisKKworLyoqCisgICogIENvbXBhcmUgdHdvIFVUZXh0IG9iamVjdHMgZm9yIGVx
dWFsaXR5LgorICAqICBVVGV4dHMgYXJlIGVxdWFsIGlmIHRoZXkgYXJlIGl0ZXJhdGluZyBvdmVy
IHRoZSBzYW1lIHRleHQsIGFuZAorICAqICAgIGhhdmUgdGhlIHNhbWUgaXRlcmF0aW9uIHBvc2l0
aW9uIHdpdGhpbiB0aGUgdGV4dC4KKyAgKiAgICBJZiBlaXRoZXIgb3IgYm90aCBvZiB0aGUgcGFy
YW1ldGVycyBhcmUgTlVMTCwgdGhlIGNvbXBhcmlzb24gaXMgRkFMU0UuCisgICoKKyAgKiAgQHBh
cmFtIGEgICBUaGUgZmlyc3Qgb2YgdGhlIHR3byBVVGV4dHMgdG8gY29tcGFyZS4KKyAgKiAgQHBh
cmFtIGIgICBUaGUgb3RoZXIgVVRleHQgdG8gYmUgY29tcGFyZWQuCisgICogIEByZXR1cm4gICAg
VFJVRSBpZiB0aGUgdHdvIFVUZXh0cyBhcmUgZXF1YWwuCisgICogIEBzdGFibGUgSUNVIDMuNgor
ICAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9lcXVhbHMoY29uc3QgVVRleHQg
KmEsIGNvbnN0IFVUZXh0ICpiKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAg
IEZ1bmN0aW9ucyB0byB3b3JrIHdpdGggdGhlIHRleHQgcmVwcmVzZXRlZCBieSBhIFVUZXh0IHdy
YXBwZXIKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICAqIEdldCB0aGUgbGVu
Z3RoIG9mIHRoZSB0ZXh0LiAgRGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXJpc3RpY3MKKyAgKiBv
ZiB0aGUgdW5kZXJseWluZyB0ZXh0IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1heSBiZSBleHBlbnNp
dmUuICAKKyAgKiBAc2VlICB1dGV4dF9pc0xlbmd0aEV4cGVuc2l2ZSgpCisgICoKKyAgKgorICAq
IEBwYXJhbSB1dCAgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogQHJldHVybiB0aGUgbGVu
Z3RoIG9mIHRoZSB0ZXh0LCBleHByZXNzZWQgaW4gbmF0aXZlIHVuaXRzLgorICAqCisgICogQHN0
YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBpbnQ2NF90IFVfRVhQT1JUMgordXRleHRfbmF0
aXZlTGVuZ3RoKFVUZXh0ICp1dCk7CisKKy8qKgorICogIFJldHVybiBUUlVFIGlmIGNhbGN1bGF0
aW5nIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgZXhwZW5zaXZlLgorICogIEZpbmRp
bmcgdGhlIGxlbmd0aCBvZiBOVUwgdGVybWluYXRlZCBzdHJpbmdzIGlzIGNvbnNpZGVyZWQgdG8g
YmUgZXhwZW5zaXZlLgorICoKKyAqICBOb3RlIHRoYXQgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rp
b24gbWF5IGNoYW5nZQorICogIGFzIHRoZSByZXN1bHQgb2Ygb3RoZXIgb3BlcmF0aW9ucyBvbiBh
IFVUZXh0LgorICogIE9uY2UgdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBoYXMgYmVlbiBkaXNjb3Zl
cmVkLCBpdCB3aWxsIG5vIGxvbmdlcgorICogIGJlIGV4cGVuc2l2ZSB0byByZXBvcnQgaXQuCisg
KgorICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICogQHJldHVybiBUUlVF
IGlmIGRldGVybWluaW5nIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgdGltZSBjb25z
dW1pbmcuCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQy
Cit1dGV4dF9pc0xlbmd0aEV4cGVuc2l2ZShjb25zdCBVVGV4dCAqdXQpOworCisvKioKKyAqIFJl
dHVybnMgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIHJlcXVlc3RlZCBpbmRleCwKKyAqIG9yIFVfU0VO
VElORUwgKC0xKSBpZiBpdCBpcyBvdXQgb2YgYm91bmRzLgorICoKKyAqIElmIHRoZSBzcGVjaWZp
ZWQgaW5kZXggcG9pbnRzIHRvIHRoZSBpbnRlcmlvciBvZiBhIG11bHRpLXVuaXQKKyAqIGNoYXJh
Y3RlciAtIG9uZSBvZiB0aGUgdHJhaWwgYnl0ZXMgb2YgYSBVVEYtOCBzZXF1ZW5jZSwgZm9yIGV4
YW1wbGUgLQorICogdGhlIGNvbXBsZXRlIGNvZGUgcG9pbnQgd2lsbCBiZSByZXR1cm5lZC4KKyAq
CisgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvIHRoZSBzdGFydCBvZiB0
aGUgcmV0dXJuZWQgY29kZSBwb2ludC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkg
ZXF1aXZhbGVudCB0byB0aGUgdGhlIHNlcXVlbmNlCisgKiAgICB1dGV4dF9zZXROYXRpdmVJbmRl
eChpbmRleCk7CisgKiAgICB1dGV4dF9jdXJyZW50MzIoKTsKKyAqIChUaGVyZSBpcyBhIHN1YnRs
ZSBkaWZmZXJlbmNlIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIGJ5IGJlaW5nIGxlc3Mg
dGhhbiB6ZXJvIC0gCisgKiB1dGV4dF9zZXROYXRpdmVJbmRleChuZWdhdGl2ZSB2YWx1ZSkgc2V0
cyB0aGUgaW5kZXggdG8gemVybywgYWZ0ZXIgd2hpY2ggdXRleHRfY3VycmVudCgpCisgKiB3aWxs
IHJldHVybiB0aGUgY2hhciBhdCB6ZXJvLiAgdXRleHRfY2hhcjMyQXQobmVnYXRpdmUgaW5kZXgp
LCBvbiB0aGUgb3RoZXIgaGFuZCwgd2lsbAorICogcmV0dXJuIHRoZSBVX1NFTlRJTkVMIHZhbHVl
IG9mIC0xLikKKyAqIAorICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkCisgKiBA
cGFyYW0gbmF0aXZlSW5kZXggdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHRvIGJl
IGFjY2Vzc2VkLiAgSWYgdGhlIGluZGV4IHBvaW50cworICogICAgICAgIHRvIG90aGVyIHRoYW4g
dGhlIGZpcnN0IHVuaXQgb2YgYSBtdWx0aS11bml0IGNoYXJhY3RlciwgaXQgd2lsbCBiZSBhZGp1
c3RlZAorICogICAgICAgIHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICogQHJldHVy
biB0aGUgY29kZSBwb2ludCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICogQHN0YWJsZSBJQ1Ug
My40CisgKi8KK1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1dGV4dF9jaGFyMzJBdChVVGV4
dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisKKy8qKgorICoKKyAqIEdldCB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24sCisgKiBvciBVX1NFTlRJ
TkVMICgtMSkgaWYgdGhlIGl0ZXJhdGlvbiBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mCisgKiB0aGUg
aW5wdXQgdGV4dC4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisg
KiBAcmV0dXJuIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0b3Ig
cG9zaXRpb24uCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VY
UE9SVDIKK3V0ZXh0X2N1cnJlbnQzMihVVGV4dCAqdXQpOworCisKKy8qKgorICogR2V0IHRoZSBj
b2RlIHBvaW50IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBvZiB0aGUgVVRleHQs
IGFuZAorICogYWR2YW5jZSB0aGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0IGluZGV4IGZvbGxvd2lu
ZyB0aGUgY2hhcmFjdGVyLgorICoKKyAqIElmIHRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9m
IHRoZSB0ZXh0ICh0aGUgaW5kZXggZm9sbG93aW5nCisgKiB0aGUgbGFzdCBjaGFyYWN0ZXIsIHdo
aWNoIGlzIGFsc28gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCksIAorICogcmV0dXJuIFVfU0VOVElO
RUwgKC0xKSBhbmQgZG8gbm90IGFkdmFuY2UgdGhlIGluZGV4LiAKKyAqCisgKiBUaGlzIGlzIGEg
cG9zdC1pbmNyZW1lbnQgb3BlcmF0aW9uLgorICoKKyAqIEFuIGlubGluZSBtYWNybyB2ZXJzaW9u
IG9mIHRoaXMgZnVuY3Rpb24sIFVURVhUX05FWFQzMigpLCAKKyAqIGlzIGF2YWlsYWJsZSBmb3Ig
cGVyZm9ybWFuY2UgY3JpdGljYWwgdXNlLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBi
ZSBhY2Nlc3NlZC4KKyAqIEByZXR1cm4gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBhdCB0aGUgaXRl
cmF0aW9uIHBvc2l0aW9uLgorICogQHNlZSBVVEVYVF9ORVhUMzIKKyAqIEBzdGFibGUgSUNVIDMu
NAorICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4dDMyKFVUZXh0ICp1
dCk7CisKKworLyoqCisgKiAgTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJh
Y3RlciAoY29kZSBwb2ludCkgd2hvc2UKKyAqICBpbmRleCBwcmVjZWRlcyB0aGUgY3VycmVudCBw
b3NpdGlvbiwgYW5kIHJldHVybiB0aGF0IGNoYXJhY3Rlci4KKyAqICBUaGlzIGlzIGEgcHJlLWRl
Y3JlbWVudCBvcGVyYXRpb24uCisgKgorICogIElmIHRoZSBpbml0aWFsIHBvc2l0aW9uIGlzIGF0
IHRoZSBzdGFydCBvZiB0aGUgdGV4dCAoaW5kZXggb2YgMCkgCisgKiAgcmV0dXJuIFVfU0VOVElO
RUwgKC0xKSwgYW5kIGxlYXZlIHRoZSBwb3NpdGlvbiB1bmNoYW5nZWQuCisgKgorICogIEFuIGlu
bGluZSBtYWNybyB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24sIFVURVhUX1BSRVZJT1VTMzIoKSwg
CisgKiAgaXMgYXZhaWxhYmxlIGZvciBwZXJmb3JtYW5jZSBjcml0aWNhbCB1c2UuCisgKgorICog
IEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KKyAqICBAcmV0dXJuIHRoZSBwcmV2
aW91cyBVQ2hhcjMyIGNvZGUgcG9pbnQsIG9yIFVfU0VOVElORUwgKC0xKSAKKyAqICAgICAgICAg
IGlmIHRoZSBpdGVyYXRpb24gaGFzIHJlYWNoZWQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICog
IEBzZWUgVVRFWFRfUFJFVklPVVMzMgorICogIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfcHJldmlvdXMzMihVVGV4dCAqdXQpOworCisKKy8q
KgorICAqIFNldCB0aGUgaXRlcmF0aW9uIGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQg
YXQgdGhhdCBpbmRleC4gCisgICogTGVhdmUgdGhlIGl0ZXJhdGlvbiBpbmRleCBhdCB0aGUgc3Rh
cnQgb2YgdGhlIGZvbGxvd2luZyBjb2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBp
cyB0aGUgbW9zdCBlZmZpY2llbnQgYW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBm
b3J3YXJkIGl0ZXJhdGlvbi4gIFRoZSByZXN1bHRzIGFyZSBpZGVudGljYWwgdG8gdGhlIHRob3Nl
CisgICogZnJvbSB0aGUgc2VxdWVuY2UKKyAgKiBcY29kZQorICAqICAgIHV0ZXh0X3NldEluZGV4
KCk7CisgICogICAgdXRleHRfbmV4dDMyKCk7CisgICogXGVuZGNvZGUKKyAgKgorICAqICBAcGFy
YW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogIEBwYXJhbSBuYXRpdmVJbmRleCBJ
dGVyYXRpb24gaW5kZXgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIu
CisgICogIEByZXR1cm4gQ29kZSBwb2ludCB3aGljaCBzdGFydHMgYXQgb3IgYmVmb3JlIGluZGV4
LAorICAqICAgICAgICAgb3IgVV9TRU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMu
CisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgor
dXRleHRfbmV4dDMyRnJvbShVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisKKwor
LyoqCisgICogU2V0IHRoZSBpdGVyYXRpb24gaW5kZXgsIGFuZCByZXR1cm4gdGhlIGNvZGUgcG9p
bnQgcHJlY2VkaW5nIHRoZQorICAqIG9uZSBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwgaW5kZXgu
ICBMZWF2ZSB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisgICogYXQgdGhlIHN0YXJ0IG9mIHRoZSBy
ZXR1cm5lZCBjb2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9zdCBl
ZmZpY2llbnQgYW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBiYWNrd2FyZHMgaXRl
cmF0aW9uLgorICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAq
IEBwYXJhbSBuYXRpdmVJbmRleCBJdGVyYXRpb24gaW5kZXggaW4gdGhlIG5hdGl2ZSB1bml0cyBv
ZiB0aGUgdGV4dCBwcm92aWRlci4KKyAgKiBAcmV0dXJuIENvZGUgcG9pbnQgcHJlY2VkaW5nIHRo
ZSBvbmUgYXQgdGhlIGluaXRpYWwgaW5kZXgsCisgICogICAgICAgICBvciBVX1NFTlRJTkVMICgt
MSkgaWYgaXQgaXMgb3V0IG9mIGJvdW5kcy4KKyAgKgorICAqIEBzdGFibGUgSUNVIDMuNAorICAq
LworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0ZXh0X3ByZXZpb3VzMzJGcm9tKFVUZXh0
ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7CisKKy8qKgorICAqIEdldCB0aGUgY3VycmVudCBp
dGVyYXRvciBwb3NpdGlvbiwgd2hpY2ggY2FuIHJhbmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVu
Z3RoIG9mIHRoZSB0ZXh0LgorICAqIFRoZSBwb3NpdGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRv
IHRoZSBpbnB1dCB0ZXh0LCBpbiB3aGF0ZXZlciBmb3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9z
c2libHkgVVRGLTggZm9yIGV4YW1wbGUpLCBhbmQgbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUg
YXMKKyAgKiB0aGUgY29ycmVzcG9uZGluZyBVQ2hhciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUg
cmV0dXJuZWQgcG9zaXRpb24gd2lsbCBhbHdheXMgYmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQg
Ym91bmRhcnkuIAorICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgor
ICAqIEByZXR1cm4gdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sIGluIHRoZSBuYXRpdmUgdW5p
dHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NU
QUJMRSBpbnQ2NF90IFVfRVhQT1JUMgordXRleHRfZ2V0TmF0aXZlSW5kZXgoY29uc3QgVVRleHQg
KnV0KTsKKworLyoqCisgKiBTZXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRo
ZSBuZWFyZXN0IGNvZGUgcG9pbnQKKyAqIGJvdW5kYXJ5IGF0IG9yIHByZWNlZGluZyB0aGUgc3Bl
Y2lmaWVkIGluZGV4LgorICogVGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhl
IG9yaWdpbmFsIGlucHV0IHRleHQuCisgKiBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCBp
dCB3aWxsIGJlIHBpbm5lZCB0byBiZSB3aXRoaW4KKyAqIHRoZSByYW5nZSBvZiB0aGUgaW5wdXQg
dGV4dC4KKyAqIDxwPgorICogSXQgd2lsbCB1c3VhbGx5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGJl
Z2luIGFuIGl0ZXJhdGlvbgorICogdXNpbmcgdGhlIGZ1bmN0aW9ucyB1dGV4dF9uZXh0MzJGcm9t
KCkgb3IgdXRleHRfcHJldmlvdXMzMkZyb20oKQorICogcmF0aGVyIHRoYW4gc2V0SW5kZXgoKS4K
KyAqIDxwPgorICogTW92aW5nIHRoZSBpbmRleCBwb3NpdGlvbiB0byBhbiBhZGphY2VudCBjaGFy
YWN0ZXIgaXMgYmVzdCBkb25lCisgKiB3aXRoIHV0ZXh0X25leHQzMigpLCB1dGV4dF9wcmV2aW91
czMyKCkgb3IgdXRleHRfbW92ZUluZGV4MzIoKS4KKyAqIEF0dGVtcHRpbmcgdG8gZG8gZGlyZWN0
IGFyaXRobWV0aWMgb24gdGhlIGluZGV4IHBvc2l0aW9uIGlzCisgKiBjb21wbGljYXRlZCBieSB0
aGUgZmFjdCB0aGF0IHRoZSBzaXplIChpbiBuYXRpdmUgdW5pdHMpIG9mIGEKKyAqIGNoYXJhY3Rl
ciBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0
ZXIKKyAqIChVVEYtOCwgVVRGLTE2LCBVVEYtMzIsIGFyYml0cmFyeSBjb2RlcGFnZSksIGFuZCBp
cyBub3QKKyAqIGVhc2lseSBrbm93YWJsZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8g
YmUgYWNjZXNzZWQuCisgKiBAcGFyYW0gbmF0aXZlSW5kZXggdGhlIG5hdGl2ZSB1bml0IGluZGV4
IG9mIHRoZSBuZXcgaXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9zZXROYXRpdmVJbmRleChVVGV4dCAqdXQs
IGludDY0X3QgbmF0aXZlSW5kZXgpOworCisvKioKKyAqIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc3Rp
b24gYnkgZGVsdGEgY29kZSBwb2ludHMuICBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzCisgKiBp
cyBhIHNpZ25lZCBudW1iZXI7IGEgbmVnYXRpdmUgZGVsdGEgd2lsbCBtb3ZlIHRoZSBpdGVyYXRv
ciBiYWNrd2FyZHMsCisgKiB0b3dhcmRzIHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KKyAqIDxwPgor
ICogVGhlIGluZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRlbHRhPC9jb2RlPiBjb2RlIHBvaW50cwor
ICogZm9yd2FyZCBvciBiYWNrd2FyZCwgYnV0IG5vIGZ1cnRoZXIgYmFja3dhcmQgdGhhbiB0byAw
IGFuZAorICogbm8gZnVydGhlciBmb3J3YXJkIHRoYW4gdG8gdXRleHRfbmF0aXZlTGVuZ3RoKCku
CisgKiBUaGUgcmVzdWx0aW5nIGluZGV4IHZhbHVlIHdpbGwgYmUgaW4gYmV0d2VlbiAwIGFuZCBs
ZW5ndGgsIGluY2x1c2l2ZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNz
ZWQuCisgKiBAcGFyYW0gZGVsdGEgdGhlIHNpZ25lZCBudW1iZXIgb2YgY29kZSBwb2ludHMgdG8g
bW92ZSB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHJldHVybiBUUlVFIGlmIHRoZSBwb3Np
dGlvbiBjb3VsZCBiZSBtb3ZlZCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBwb3NpdGlvbnMgd2hp
bGUKKyAqICAgICAgICAgICAgICBzdGF5aW5nIHdpdGhpbiB0aGUgcmFuZ2UgWzAgLSB0ZXh0IGxl
bmd0aF0uCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQy
Cit1dGV4dF9tb3ZlSW5kZXgzMihVVGV4dCAqdXQsIGludDMyX3QgZGVsdGEpOworCisvKioKKyAq
IEdldCB0aGUgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgY3Vy
cmVudCBwb3NpdGlvbi4KKyAqIElmIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgYWxyZWFkeSBh
dCB0aGUgc3RhcnQgb2YgdGhlIHRleHQsIHplcm8KKyAqIGlzIHJldHVybmVkLgorICogVGhlIHZh
bHVlIHJldHVybmVkIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93
aW5nIHNlcXVlbmNlLAorICogYnV0IHdpdGhvdXQgdGhlIHNpZGUgZWZmZWN0IG9mIGNoYW5naW5n
IHRoZSBpdGVyYXRpb24gcG9zaXRpb24uCisgKiAgIAorICogXGNvZGUKKyAqICAgIFVUZXh0ICAq
dXQgPSB3aGF0ZXZlcjsKKyAqICAgICAgLi4uCisgKiAgICB1dGV4dF9wcmV2aW91cyh1dCkKKyAq
ICAgIHV0ZXh0X2dldE5hdGl2ZUluZGV4KHV0KTsKKyAqIFxlbmRjb2RlCisgKgorICogVGhpcyBm
dW5jdGlvbiBpcyBtb3N0IHVzZWZ1bCBkdXJpbmcgZm9yd2FyZHMgaXRlcmF0aW9uLCB3aGVyZSBp
dCB3aWxsIGdldCB0aGUKKyAqICAgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgbW9zdCBy
ZWNlbnRseSByZXR1cm5lZCBmcm9tIHV0ZXh0X25leHQoKS4KKyAqCisgKiBAcGFyYW0gdXQgdGhl
IHRleHQgdG8gYmUgYWNjZXNzZWQKKyAqIEByZXR1cm4gdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUg
Y2hhcmFjdGVyIHByZWNlZWRpbmcgdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sCisgKiAgICAg
ICAgIG9yIHplcm8gaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRo
ZSB0ZXh0LgorICogQHN0YWJsZSBJQ1UgMy42CisgKi8KK1VfU1RBQkxFIGludDY0X3QgVV9FWFBP
UlQyCit1dGV4dF9nZXRQcmV2aW91c05hdGl2ZUluZGV4KFVUZXh0ICp1dCk7IAorCisKKy8qKgor
ICoKKyAqIEV4dHJhY3QgdGV4dCBmcm9tIGEgVVRleHQgaW50byBhIFVDaGFyIGJ1ZmZlci4gIFRo
ZSByYW5nZSBvZiB0ZXh0IHRvIGJlIGV4dHJhY3RlZAorICogaXMgc3BlY2lmaWVkIGluIHRoZSBu
YXRpdmUgaW5kaWNlcyBvZiB0aGUgVVRleHQgcHJvdmlkZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vz
c2FyaWx5CisgKiBiZSBVVEYtMTYgaW5kaWNlcy4KKyAqIDxwPgorICogVGhlIHNpemUgKG51bWJl
ciBvZiAxNiBiaXQgVUNoYXJzKSBvZiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJu
ZWQuICBUaGUKKyAqIGZ1bGwgbnVtYmVyIG9mIFVDaGFycyBpcyByZXR1cm5lZCwgZXZlbiB3aGVu
IHRoZSBleHRyYWN0ZWQgdGV4dCBpcyB0cnVuY2F0ZWQKKyAqIGJlY2F1c2UgdGhlIHNwZWNpZmll
ZCBidWZmZXIgc2l6ZSBpcyB0b28gc21hbGwuCisgKiA8cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3Ry
aW5nIHdpbGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHBy
b3ZpZGVyKQorICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFj
ZSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgVGhpcworICogdGVybWluYXRpbmcgTlVMIGlz
IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgbGVuZ3RoLgorICogPHA+CisgKiBUaGUgaXRl
cmF0aW9uIGluZGV4IGlzIGxlZnQgYXQgdGhlIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgbGFzdCBl
eHRyYWN0ZWQgY2hhcmFjdGVyLgorICoKKyAqIEBwYXJhbSAgdXQgICAgdGhlIFVUZXh0IGZyb20g
d2hpY2ggdG8gZXh0cmFjdCBkYXRhLgorICogQHBhcmFtICBuYXRpdmVTdGFydCB0aGUgbmF0aXZl
IGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gZXh0cmFjdC5cCisgKiAgICAgICAgICAg
ICAgIElmIHRoZSBzcGVjaWZpZWQgaW5kZXggaXMgb3V0IG9mIHJhbmdlLAorICogICAgICAgICAg
ICAgICBpdCB3aWxsIGJlIHBpbm5lZCB0byB0byBiZSB3aXRoaW4gMCA8PSBpbmRleCA8PSB0ZXh0
TGVuZ3RoCisgKiBAcGFyYW0gIG5hdGl2ZUxpbWl0IHRoZSBuYXRpdmUgc3RyaW5nIGluZGV4IG9m
IHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIGxhc3QKKyAqICAgICAgICAgICAgICAgY2hhcmFj
dGVyIHRvIGV4dHJhY3QuICBJZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG91dCBvZiByYW5nZSwK
KyAqICAgICAgICAgICAgICAgaXQgd2lsbCBiZSBwaW5uZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0g
aW5kZXggPD0gdGV4dExlbmd0aC4KKyAqICAgICAgICAgICAgICAgbmF0aXZlTGltaXQgbXVzdCBi
ZSA+PSBuYXRpdmVTdGFydC4KKyAqIEBwYXJhbSAgZGVzdCAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1
ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAg
ZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSwgaW4gVUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVm
ZmVyLiAgTWF5IGJlIHplcm8KKyAqICAgICAgICAgICAgICAgZm9yIHByZWNvbXB1dGluZyB0aGUg
cmVxdWlyZWQgc2l6ZS4KKyAqIEBwYXJhbSAgc3RhdHVzIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0
dXMuCisgKiAgICAgICAgIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOiB0aGUgZXh0cmFjdGVkIHRl
eHQgd2FzIHRydW5jYXRlZCBiZWNhdXNlIHRoZSAKKyAqICAgICAgICAgYnVmZmVyIHdhcyB0b28g
c21hbGwuICBSZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMgZm9yIHByZWZsaWdodGluZy4KKyAqIEBy
ZXR1cm4gTnVtYmVyIG9mIFVDaGFycyBpbiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQuICBEb2Vz
IG5vdCBpbmNsdWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICov
CitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordXRleHRfZXh0cmFjdChVVGV4dCAqdXQsCisg
ICAgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKKyAg
ICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAg
ICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKyAqCisgKiAgI2RlZmluZSBpbmxpbmUgdmVyc2lvbnMgb2Ygc2VsZWN0ZWQgcGVyZm9ybWFu
Y2UtY3JpdGljYWwgdGV4dCBhY2Nlc3MgZnVuY3Rpb25zCisgKiAgICAgICAgICBDYXV0aW9uOiAg
ZG8gbm90IHVzZSBhdXRvIGluY3JlbWVudCsrIG9yIGRlY3JlbWVudC0tIGV4cHJlc3Npb25zCisg
KiAgICAgICAgICAgICAgICAgICAgYXMgcGFyYW1ldGVycyB0byB0aGVzZSBtYWNyb3MuCisgKgor
ICogICAgICAgICAgRm9yIG1vc3QgdXNlLCB3aGVyZSB0aGVyZSBpcyBubyBleHRyZW1lIHBlcmZv
cm1hbmNlIGNvbnN0cmFpbnQsIHRoZQorICogICAgICAgICAgbm9ybWFsLCBub24taW5saW5lIGZ1
bmN0aW9ucyBhcmUgYSBiZXR0ZXIgY2hvaWNlLiAgVGhlIHJlc3VsdGluZyBjb2RlCisgKiAgICAg
ICAgICB3aWxsIGJlIHNtYWxsZXIsIGFuZCwgaWYgdGhlIG5lZWQgZXZlciBhcmlzZXMsIGVhc2ll
ciB0byBkZWJ1Zy4KKyAqCisgKiAgICAgICAgICBUaGVzZSBhcmUgaW1wbGVtZW50ZWQgYXMgI2Rl
ZmluZXMgcmF0aGVyIHRoYW4gcmVhbCBmdW5jdGlvbnMKKyAqICAgICAgICAgIGJlY2F1c2UgdGhl
cmUgaXMgbm8gZnVsbHkgcG9ydGFibGUgd2F5IHRvIGRvIGlubGluZSBmdW5jdGlvbnMgaW4gcGxh
aW4gQy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIFVfSElE
RV9JTlRFUk5BTF9BUEkKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfY3VycmVudDMy
KCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUg
Y29kZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0
LgorICogUmV0dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBl
bmQgb2YgdGhlCisgKiB0ZXh0LgorICoKKyAqIEBpbnRlcm5hbCBJQ1UgNC40IHRlY2hub2xvZ3kg
cHJldmlldworICovCisjZGVmaW5lIFVURVhUX0NVUlJFTlQzMih1dCkgIFwKKyAgICAoKHV0KS0+
Y2h1bmtPZmZzZXQgPCAodXQpLT5jaHVua0xlbmd0aCAmJiAoKHV0KS0+Y2h1bmtDb250ZW50cylb
KHV0KS0+Y2h1bmtPZmZzZXRdPDB4ZDgwMCA/IFwKKyAgICAoKHV0KS0+Y2h1bmtDb250ZW50cylb
KCh1dCktPmNodW5rT2Zmc2V0KV0gOiB1dGV4dF9jdXJyZW50MzIodXQpKQorI2VuZGlmICAvKiBV
X0hJREVfSU5URVJOQUxfQVBJICovCisKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRf
bmV4dDMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdl
dCB0aGUgY29kZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhl
IFVUZXh0LCBhbmQKKyAqIGFkdmFuY2UgdGhlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBpbmRleCBm
b2xsb3dpbmcgdGhlIGNoYXJhY3Rlci4KKyAqIFRoaXMgaXMgYSBwb3N0LWluY3JlbWVudCBvcGVy
YXRpb24uCisgKiBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQg
dGhlIGVuZCBvZiB0aGUKKyAqIHRleHQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KKyNk
ZWZpbmUgVVRFWFRfTkVYVDMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8ICh1dCkt
PmNodW5rTGVuZ3RoICYmICgodXQpLT5jaHVua0NvbnRlbnRzKVsodXQpLT5jaHVua09mZnNldF08
MHhkODAwID8gXAorICAgICgodXQpLT5jaHVua0NvbnRlbnRzKVsoKHV0KS0+Y2h1bmtPZmZzZXQp
KytdIDogdXRleHRfbmV4dDMyKHV0KSkKKworLyoqCisgKiBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4
dF9wcmV2aW91czMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoK
KyAqICBNb3ZlIHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgY2hhcmFjdGVyIChjb2RlIHBv
aW50KSB3aG9zZQorICogIGluZGV4IHByZWNlZGVzIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQg
cmV0dXJuIHRoYXQgY2hhcmFjdGVyLgorICogIFRoaXMgaXMgYSBwcmUtZGVjcmVtZW50IG9wZXJh
dGlvbi4KKyAqICBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQg
dGhlIHN0YXJ0IG9mIHRoZSAgdGV4dC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworI2Rl
ZmluZSBVVEVYVF9QUkVWSU9VUzMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA+IDAg
JiYgXAorICAgICAodXQpLT5jaHVua0NvbnRlbnRzWyh1dCktPmNodW5rT2Zmc2V0LTFdIDwgMHhk
ODAwID8gXAorICAgICAgICAgICh1dCktPmNodW5rQ29udGVudHNbLS0oKHV0KS0+Y2h1bmtPZmZz
ZXQpXSAgOiAgdXRleHRfcHJldmlvdXMzMih1dCkpCisKKy8qKgorICAqICBpbmxpbmUgdmVyc2lv
biBvZiB1dGV4dF9nZXROYXRpdmVJbmRleCgpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0
dWF0aW9ucy4KKyAgKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBwb3NpdGlvbiwgd2hp
Y2ggY2FuIHJhbmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LgorICAq
IFRoZSBwb3NpdGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1dCB0ZXh0LCBpbiB3
aGF0ZXZlciBmb3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRGLTggZm9yIGV4YW1w
bGUpLCBhbmQgbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0aGUgY29ycmVzcG9u
ZGluZyBVQ2hhciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQgcG9zaXRpb24gd2ls
bCBhbHdheXMgYmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuIAorICAqCisgICog
QHN0YWJsZSBJQ1UgMy42CisgICovCisjZGVmaW5lIFVURVhUX0dFVE5BVElWRUlOREVYKHV0KSAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8PSAodXQpLT5u
YXRpdmVJbmRleGluZ0xpbWl0PyAgIFwKKyAgICAgICAgKHV0KS0+Y2h1bmtOYXRpdmVTdGFydCso
dXQpLT5jaHVua09mZnNldCA6ICAgICBcCisgICAgICAgICh1dCktPnBGdW5jcy0+bWFwT2Zmc2V0
VG9OYXRpdmUodXQpKSAgICAKKworLyoqCisgICogIGlubGluZSB2ZXJzaW9uIG9mIHV0ZXh0X3Nl
dE5hdGl2ZUluZGV4KCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICAq
CisgICogU2V0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUgbmVhcmVzdCBj
b2RlIHBvaW50CisgICogYm91bmRhcnkgYXQgb3IgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgaW5k
ZXguCisgICogVGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFs
IGlucHV0IHRleHQuCisgICogSWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZSwgaXQgd2lsbCBi
ZSBwaW5uZWQgdG8gYmUgd2l0aGluCisgICogdGhlIHJhbmdlIG9mIHRoZSBpbnB1dCB0ZXh0Lgor
ICAqCisgICogQHN0YWJsZSBJQ1UgMy44CisgICovCisjZGVmaW5lIFVURVhUX1NFVE5BVElWRUlO
REVYKHV0LCBpeCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IGludDY0X3QgX19vZmZz
ZXQgPSAoaXgpIC0gKHV0KS0+Y2h1bmtOYXRpdmVTdGFydDsgXAorICAgICAgaWYgKF9fb2Zmc2V0
Pj0wICYmIF9fb2Zmc2V0PD0oaW50NjRfdCkodXQpLT5uYXRpdmVJbmRleGluZ0xpbWl0KSB7IFwK
KyAgICAgICAgICAodXQpLT5jaHVua09mZnNldD0oaW50MzJfdClfX29mZnNldDsgXAorICAgICAg
fSBlbHNlIHsgXAorICAgICAgICAgIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCh1dCksIChpeCkpOyB9
IH0KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9u
cyByZWxhdGVkIHRvIHdyaXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSB0ZXh0LgorICogICBUaGVzZSB3
aWxsIHdvcmsgb25seSB3aXRoIG1vZGlmaWFibGUgVVRleHRzLiAgQXR0ZW1wdGluZyB0bworICog
ICBtb2RpZnkgYSByZWFkLW9ubHkgVVRleHQgd2lsbCByZXR1cm4gYW4gZXJyb3Igc3RhdHVzLgor
ICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgKiAgUmV0dXJuIFRS
VUUgaWYgdGhlIHRleHQgY2FuIGJlIHdyaXR0ZW4gKG1vZGlmaWVkKSB3aXRoIHV0ZXh0X3JlcGxh
Y2UoKSBvcgorICogIHV0ZXh0X2NvcHkoKS4gIEZvciB0aGUgdGV4dCB0byBiZSB3cml0YWJsZSwg
dGhlIHRleHQgcHJvdmlkZXIgbXVzdAorICogIGJlIG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzIHdy
aXRpbmcgYW5kIHRoZSBVVGV4dCBtdXN0IG5vdCBiZSBmcm96ZW4uCisgKgorICogIEF0dGVtcHRp
bmcgdG8gbW9kaWZ5IHRleHQgd2hlbiB1dGV4dF9pc1dyaXRlYWJsZSgpIGlzIEZBTFNFIHdpbGwg
ZmFpbCAtCisgKiAgdGhlIHRleHQgd2lsbCBub3QgYmUgbW9kaWZpZWQsIGFuZCBhbiBlcnJvciB3
aWxsIGJlIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uCisgKiAgdGhhdCBhdHRlbXB0ZWQgdGhl
IG1vZGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gIHV0ICAgdGhlIFVUZXh0IHRvIGJlIHRlc3Rl
ZC4KKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCBpcyBtb2RpZmlhYmxlLgorICoKKyAqIEBz
ZWUgICAgdXRleHRfZnJlZXplKCkKKyAqIEBzZWUgICAgdXRleHRfcmVwbGFjZSgpCisgKiBAc2Vl
ICAgIHV0ZXh0X2NvcHkoKQorICogQHN0YWJsZSBJQ1UgMy40CisgKgorICovCitVX1NUQUJMRSBV
Qm9vbCBVX0VYUE9SVDIKK3V0ZXh0X2lzV3JpdGFibGUoY29uc3QgVVRleHQgKnV0KTsKKworCisv
KioKKyAgKiBUZXN0IHdoZXRoZXIgdGhlcmUgaXMgbWV0YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0
aGUgdGV4dC4KKyAgKiBAc2VlIFJlcGxhY2VhYmxlOjpoYXNNZXRhRGF0YSgpCisgICoKKyAgKiBA
cGFyYW0gdXQgVGhlIFVUZXh0IHRvIGJlIHRlc3RlZAorICAqIEByZXR1cm4gVFJVRSBpZiB0aGUg
dW5kZXJseWluZyB0ZXh0IGluY2x1ZGVzIG1ldGEgZGF0YS4KKyAgKiBAc3RhYmxlIElDVSAzLjQK
KyAgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordXRleHRfaGFzTWV0YURhdGEoY29uc3Qg
VVRleHQgKnV0KTsKKworCisvKioKKyAqIFJlcGxhY2UgYSByYW5nZSBvZiB0aGUgb3JpZ2luYWwg
dGV4dCB3aXRoIGEgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBMZWF2ZXMgdGhlIGN1cnJlbnQg
aXRlcmF0aW9uIHBvc2l0aW9uIGF0IHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlCisgKiAgbmV3
bHkgaW5zZXJ0ZWQgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9u
bHkgYXZhaWxhYmxlIG9uIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0aW5nLAorICogdGhh
dCBpcywgb25lcyB3aGVyZSB1dGV4dF9pc1dyaXRhYmxlKCkgcmV0dXJucyBUUlVFLgorICoKKyAq
IFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUg
VVRleHQgb3BlbmVkIG9udG8gdGhlCisgKiB1bmRlcmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4g
IEJlaGF2aW9yIGFmdGVyIGEgcmVwbGFjZSBvcGVyYXRpb24KKyAqIG9uIGEgVVRleHQgaXMgdW5k
ZWZpbmVkIGZvciBhbnkgb3RoZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUK
KyAqIG1vZGlmaWVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgICAgICB0aGUg
VVRleHQgcmVwcmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgorICogQHBhcmFt
IG5hdGl2ZVN0YXJ0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJl
Z2lvbiB0byBiZSByZXBsYWNlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICAgICAgdGhlIG5hdGl2
ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxh
Y2VkLgorICogQHBhcmFtIHJlcGxhY2VtZW50VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1l
bnQgdGV4dAorICogQHBhcmFtIHJlcGxhY2VtZW50TGVuZ3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFj
ZW1lbnQgdGV4dCwgb3IgLTEgaWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFy
YW0gc3RhdHVzICAgICAgICAgICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUg
ZXJyb3JzIGluY2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVS
TUlTU0lPTgorICoKKyAqIEByZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3Rv
cmFnZSB1bml0cyBieSB3aGljaAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4
cGFuZGVkIG9yIGNvbnRyYWN0ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RB
QkxFIGludDMyX3QgVV9FWFBPUlQyCit1dGV4dF9yZXBsYWNlKFVUZXh0ICp1dCwKKyAgICAgICAg
ICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyICpyZXBsYWNlbWVudFRleHQsIGludDMyX3QgcmVwbGFjZW1lbnRMZW5n
dGgsCisgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisKKy8qKgorICoKKyAq
IENvcHkgb3IgbW92ZSBhIHN1YnN0cmluZyBmcm9tIG9uZSBwb3NpdGlvbiB0byBhbm90aGVyIHdp
dGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxlIHJldGFpbmluZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRl
ZCB3aXRoIHRoZSB0ZXh0LgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBv
ciByZW9yZGVyIHN1YnN0cmluZ3MuCisgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qg
b3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICoKKyAqIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBv
ciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7CisgKiBpdCBkb2VzIG5vdCByZXBsYWNl
IG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4KKyAqCisgKiBUaGUgaXRlcmF0aW9uIHBv
c2l0aW9uIGlzIGxlZnQgZm9sbG93aW5nIHRoZSBuZXdseSBpbnNlcnRlZCB0ZXh0CisgKiBhdCB0
aGUgZGVzdGluYXRpb24gcG9zaXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2
YWlsYWJsZSBvbiBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3JpdGluZywKKyAqIHRoYXQgaXMs
IG9uZXMgd2hlcmUgdXRleHRfaXNXcml0YWJsZSgpIHJldHVybnMgVFJVRS4KKyAqCisgKiBXaGVu
IHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBvbmx5IGEgc2luZ2xlIFVUZXh0
IG9wZW5lZCBvbnRvIHRoZQorICogdW5kZXJseWluZyBuYXRpdmUgdGV4dCBzdHJpbmcuICBCZWhh
dmlvciBhZnRlciBhIGNvcHkgb3BlcmF0aW9uCisgKiBvbiBhIFVUZXh0IGlzIHVuZGVmaW5lZCBp
biBhbnkgb3RoZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlm
aWVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgIFRoZSBVVGV4dCByZXByZXNl
bnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQg
IFRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgY29waWVk
IG9yIG1vdmVkCisgKiBAcGFyYW0gbmF0aXZlTGltaXQgIFRoZSBuYXRpdmUgaW5kZXggb2YgdGhl
IGNoYXJhY3RlciBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIHJlZ2lvbgorICogICAgICAgICAgICAg
ICAgICAgICB0byBiZSBjb3BpZWQuCisgKiBAcGFyYW0gZGVzdEluZGV4ICAgIFRoZSBuYXRpdmUg
ZGVzdGluYXRpb24gaW5kZXggdG8gd2hpY2ggdGhlIHNvdXJjZSBzdWJzdHJpbmcgaXMKKyAqICAg
ICAgICAgICAgICAgICAgICAgY29waWVkIG9yIG1vdmVkLgorICogQHBhcmFtIG1vdmUgICAgICAg
ICBJZiBUUlVFLCB0aGVuIHRoZSBzdWJzdHJpbmcgaXMgbW92ZWQsIG5vdCBjb3BpZWQvZHVwbGlj
YXRlZC4KKyAqIEBwYXJhbSBzdGF0dXMgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4g
IFBvc3NpYmxlIGVycm9ycyBpbmNsdWRlIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICogICAgICAg
ICAgICAgICAgICAgICAgIAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIHZvaWQg
VV9FWFBPUlQyCit1dGV4dF9jb3B5KFVUZXh0ICp1dCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2
ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgIGludDY0X3QgZGVzdEluZGV4
LAorICAgICAgICAgIFVCb29sIG1vdmUsCisgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsK
KworCisvKioKKyAgKiAgPHA+CisgICogIEZyZWV6ZSBhIFVUZXh0LiAgVGhpcyBwcmV2ZW50cyBh
bnkgbW9kaWZpY2F0aW9uIHRvIHRoZSB1bmRlcmx5aW5nIHRleHQgaXRzZWxmCisgICogIGJ5IG1l
YW5zIG9mIGZ1bmN0aW9ucyBvcGVyYXRpbmcgb24gdGhpcyBVVGV4dC4KKyAgKiAgPC9wPgorICAq
ICA8cD4KKyAgKiAgT25jZSBmcm96ZW4sIGEgVVRleHQgY2FuIG5vdCBiZSB1bmZyb3plbi4gIFRo
ZSBpbnRlbnQgaXMgdG8gZW5zdXJlCisgICogIHRoYXQgYSB0aGUgdGV4dCB1bmRlcmx5aW5nIGEg
ZnJvemVuIFVUZXh0IHdyYXBwZXIgY2Fubm90IGJlIG1vZGlmaWVkIHZpYSB0aGF0IFVUZXh0Lgor
ICAqICA8L3A+CisgICogIDxwPgorICAqICBDYXV0aW9uOiAgZnJlZXppbmcgYSBVVGV4dCB3aWxs
IGRpc2FibGUgY2hhbmdlcyBtYWRlIHZpYSB0aGUgc3BlY2lmaWMKKyAgKiAgIGZyb3plbiBVVGV4
dCB3cmFwcGVyIG9ubHk7IGl0IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYWJpbGl0
eSB0bworICAqICAgZGlyZWN0bHkgbW9kaWZ5IHRoZSB0ZXh0IGJ5IGJ5cGFzc2luZyB0aGUgVVRl
eHQuICBBbnkgc3VjaCBiYWNrZG9vciBtb2RpZmljYXRpb25zCisgICogICBhcmUgYWx3YXlzIGFu
IGVycm9yIHdoaWxlIFVUZXh0IGFjY2VzcyBpcyBvY2N1cmluZyBiZWNhdXNlIHRoZSB1bmRlcmx5
aW5nCisgICogICB0ZXh0IGNhbiBnZXQgb3V0IG9mIHN5bmMgd2l0aCBVVGV4dCdzIGJ1ZmZlcmlu
Zy4KKyAgKiAgPC9wPgorICAqCisgICogIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJlIGZyb3pl
bi4KKyAgKiAgQHNlZSAgIHV0ZXh0X2lzV3JpdGFibGUoKQorICAqICBAc3RhYmxlIElDVSAzLjYK
KyAgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9mcmVlemUoVVRleHQgKnV0KTsK
KworCisvKioKKyAqIFVUZXh0IHByb3ZpZGVyIHByb3BlcnRpZXMgKGJpdCBmaWVsZCBpbmRleGVz
KS4KKyAqCisgKiBAc2VlIFVUZXh0CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworZW51bSB7Cisg
ICAgLyoqCisgICAgICogSXQgaXMgcG90ZW50aWFsbHkgdGltZSBjb25zdW1pbmcgZm9yIHRoZSBw
cm92aWRlciB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAc3Rh
YmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBVVEVYVF9QUk9WSURFUl9MRU5HVEhfSVNfRVhQRU5T
SVZFID0gMSwKKyAgICAvKioKKyAgICAgKiBUZXh0IGNodW5rcyByZW1haW4gdmFsaWQgYW5kIHVz
YWJsZSB1bnRpbCB0aGUgdGV4dCBvYmplY3QgaXMgbW9kaWZpZWQgb3IKKyAgICAgKiBkZWxldGVk
LCBub3QganVzdCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSBhY2Nlc3MoKSBmdW5jdGlvbiBpcyBj
YWxsZWQKKyAgICAgKiAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLgorICAgICAqIEBzdGFibGUgSUNV
IDMuNAorICAgICAqLworICAgIFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVOS1MgPSAyLAorICAg
IC8qKgorICAgICAqIFRoZSBwcm92aWRlciBzdXBwb3J0cyBtb2RpZnlpbmcgdGhlIHRleHQgdmlh
IHRoZSByZXBsYWNlKCkgYW5kIGNvcHkoKQorICAgICAqIGZ1bmN0aW9ucy4KKyAgICAgKiBAc2Vl
IFJlcGxhY2VhYmxlCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgVVRFWFRf
UFJPVklERVJfV1JJVEFCTEUgPSAzLAorICAgIC8qKgorICAgICAqIFRoZXJlIGlzIG1ldGEgZGF0
YSBhc3NvY2lhdGVkIHdpdGggdGhlIHRleHQuCisgICAgICogQHNlZSBSZXBsYWNlYWJsZTo6aGFz
TWV0YURhdGEoKQorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAqLyAKKyAgICBVVEVYVF9Q
Uk9WSURFUl9IQVNfTUVUQV9EQVRBID0gNCwKKyAgICAvKioKKyAgICAgKiBUZXh0IHByb3ZpZGVy
IG93bnMgdGhlIHRleHQgc3RvcmFnZS4KKyAgICAgKiAgR2VuZXJhbGx5IG9jY3VycyBhcyB0aGUg
cmVzdWx0IG9mIGEgZGVlcCBjbG9uZSBvZiB0aGUgVVRleHQuCisgICAgICogIFdoZW4gY2xvc2lu
ZyB0aGUgVVRleHQsIHRoZSBhc3NvY2lhdGVkIHRleHQgbXVzdAorICAgICAqICBhbHNvIGJlIGNs
b3NlZC9kZWxldGVkL2ZyZWVkLyB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZS4KKyAgICAgKiBAc3Rh
YmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICAgVVRFWFRfUFJPVklERVJfT1dOU19URVhUID0gNQor
fTsKKworLyoqCisgICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuY2xvbmUo
KS4KKyAgKgorICAqICBjbG9uZSBhIFVUZXh0LiAgTXVjaCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3
aGVyZSB0aGUgc291cmNlIHRleHQgaXMgaXRzZWxmCisgICogIGFub3RoZXIgVVRleHQuCisgICoK
KyAgKiAgQSBkZWVwIGNsb25lIHdpbGwgY29weSBib3RoIHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVy
ZXMgYW5kIHRoZSB1bmRlcmx5aW5nIHRleHQuCisgICogIFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVk
IFVUZXh0IHdpbGwgb3BlcmF0ZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlv
bnMKKyAgKiAgbWFkZSB0byB0aGUgdGV4dCBpbiBvbmUgd2lsbCBub3QgZWZmZWN0IHRoZSBvdGhl
ci4gIFRleHQgcHJvdmlkZXJzIGFyZSBub3QKKyAgKiAgcmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVw
IGNsb25lcy4gIFRoZSB1c2VyIG9mIGNsb25lKCkgbXVzdCBjaGVjayB0aGUgc3RhdHVzIHJldHVy
bgorICAqICBhbmQgYmUgcHJlcGFyZWQgdG8gaGFuZGxlIGZhaWx1cmVzLgorICAqCisgICogIEEg
c2hhbGxvdyBjbG9uZSByZXBsaWNhdGVzIG9ubHkgdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlczsg
aXQgZG9lcyBub3QgbWFrZQorICAqICBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgdGV4dC4gIFNo
YWxsb3cgY2xvbmVzIGNhbiBiZSB1c2VkIGFzIGFuIGVmZmljaWVudCB3YXkgdG8gCisgICogIGhh
dmUgbXVsdGlwbGUgaXRlcmF0b3JzIGFjdGl2ZSBpbiBhIHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0
IGlzIG5vdCBiZWluZworICAqICBtb2RpZmllZC4KKyAgKgorICAqICBBIHNoYWxsb3cgY2xvbmUg
b3BlcmF0aW9uIG11c3Qgbm90IGZhaWwgZXhjZXB0IGZvciB0cnVseSBleGNlcHRpb25hbCBjb25k
aXRpb25zIHN1Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICoKKyAg
KiAgQSBVVGV4dCBhbmQgaXRzIGNsb25lIG1heSBiZSBzYWZlbHkgY29uY3VycmVudGx5IGFjY2Vz
c2VkIGJ5IHNlcGFyYXRlIHRocmVhZHMuCisgICogIFRoaXMgaXMgdHJ1ZSBmb3IgYm90aCBzaGFs
bG93IGFuZCBkZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRo
ZSBUZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBj
b25zdHJhaW50IGlzIG1ldC4KKworICAqCisgICogIEBwYXJhbSBkZXN0ICAgQSBVVGV4dCBzdHJ1
Y3QgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgY2xvbmUgb3BlcmF0aW9u
LAorICAqICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhlIGNsb25lIGZ1bmN0aW9uIHNob3Vs
ZCBoZWFwLWFsbG9jYXRlIGEgbmV3IFVUZXh0IHN0cnVjdC4KKyAgKiAgQHBhcmFtIHNyYyAgICBU
aGUgVVRleHQgdG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVz
dCBhIGRlZXAgY2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cgY2xvbmUuCisgICogIEBwYXJhbSBz
dGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLiAgRm9yIGRlZXAgY2xvbmVzLCBVX1VOU1VQ
UE9SVEVEX0VSUk9SCisgICogICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkIGlmIHRo
ZSB0ZXh0IHByb3ZpZGVyIGlzIHVuYWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAg
ICBvcmlnaW5hbCB0ZXh0LgorICAqICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNs
b25lLCBvciBOVUxMIGlmIHRoZSBjbG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqCisgICogQHN0
YWJsZSBJQ1UgMy40CisgICovCit0eXBlZGVmIFVUZXh0ICogVV9DQUxMQ09OVgorVVRleHRDbG9u
ZShVVGV4dCAqZGVzdCwgY29uc3QgVVRleHQgKnNyYywgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSAq
c3RhdHVzKTsKKworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0
Lm5hdGl2ZUxlbmd0aCgpLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgVVRleHQgdG8gZ2V0IHRoZSBs
ZW5ndGggb2YuCisgKiBAcmV0dXJuIHRoZSBsZW5ndGgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2Yg
dGhlIG9yaWdpbmFsIHRleHQgc3RyaW5nLgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1Ug
My40CisgKi8KK3R5cGVkZWYgaW50NjRfdCBVX0NBTExDT05WCitVVGV4dE5hdGl2ZUxlbmd0aChV
VGV4dCAqdXQpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0
LmFjY2VzcygpLiAgR2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGV4dCBjaHVuaworICogIGNv
bnRhaW5pbmcgdGhlIHRleHQgYXQgYSByZXF1ZXN0ZWQgbmF0aXZlIGluZGV4LiAgVGhlIFVUZXh0
J3MgaXRlcmF0aW9uCisgKiAgcG9zaXRpb24gd2lsbCBiZSBsZWZ0IGF0IHRoZSByZXF1ZXN0ZWQg
aW5kZXguICBJZiB0aGUgaW5kZXggaXMgb3V0CisgKiAgb2YgYm91bmRzLCB0aGUgaXRlcmF0aW9u
IHBvc2l0aW9uIHdpbGwgYmUgbGVmdCBhdCB0aGUgc3RhcnQgb3IgZW5kCisgKiAgb2YgdGhlIHN0
cmluZywgYXMgYXBwcm9wcmlhdGUuCisgKgorICogIENodW5rcyBtdXN0IGJlZ2luIGFuZCBlbmQg
b24gY29kZSBwb2ludCBib3VuZGFyaWVzLiAgQSBzaW5nbGUgY29kZSBwb2ludAorICogIGNvbXBy
aXNlZCBvZiBtdWx0aXBsZSBzdG9yYWdlIHVuaXRzIG11c3QgbmV2ZXIgc3BhbiBhIGNodW5rIGJv
dW5kYXJ5LgorICoKKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgdGhlIFVUZXh0IGJlaW5nIGFj
Y2Vzc2VkLgorICogQHBhcmFtIG5hdGl2ZUluZGV4IFJlcXVlc3RlZCBpbmRleCBvZiB0aGUgdGV4
dCB0byBiZSBhY2Nlc3NlZC4KKyAqIEBwYXJhbSBmb3J3YXJkICAgICBJZiBUUlVFLCB0aGVuIHRo
ZSByZXR1cm5lZCBjaHVuayBtdXN0IGNvbnRhaW4gdGV4dAorICogICAgICAgICAgICAgICAgICAg
IHN0YXJ0aW5nIGZyb20gdGhlIGluZGV4LCBzbyB0aGF0IHN0YXJ0PD1pbmRleDxsaW1pdC4KKyAq
ICAgICAgICAgICAgICAgICAgICBJZiBGQUxTRSwgdGhlbiB0aGUgcmV0dXJuZWQgY2h1bmsgbXVz
dCBjb250YWluIHRleHQKKyAqICAgICAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGluZGV4LCBz
byB0aGF0IHN0YXJ0PGluZGV4PD1saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBUcnVlIGlm
IHRoZSByZXF1ZXN0ZWQgaW5kZXggY291bGQgYmUgYWNjZXNzZWQuICBUaGUgY2h1bmsKKyAqICAg
ICAgICAgICAgICAgICAgICB3aWxsIGNvbnRhaW4gdGhlIHJlcXVlc3RlZCB0ZXh0LgorICogICAg
ICAgICAgICAgICAgICAgIEZhbHNlIHZhbHVlIGlmIGEgY2h1bmsgY2Fubm90IGJlIGFjY2Vzc2Vk
CisgKiAgICAgICAgICAgICAgICAgICAgKHRoZSByZXF1ZXN0ZWQgaW5kZXggaXMgb3V0IG9mIGJv
dW5kcykuCisgKgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVk
ZWYgVUJvb2wgVV9DQUxMQ09OVgorVVRleHRBY2Nlc3MoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2
ZUluZGV4LCBVQm9vbCBmb3J3YXJkKTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0
aW9uIGZvciBVVGV4dC5leHRyYWN0KCkuCisgKgorICogRXh0cmFjdCB0ZXh0IGZyb20gYSBVVGV4
dCBpbnRvIGEgVUNoYXIgYnVmZmVyLiAgVGhlIHJhbmdlIG9mIHRleHQgdG8gYmUgZXh0cmFjdGVk
CisgKiBpcyBzcGVjaWZpZWQgaW4gdGhlIG5hdGl2ZSBpbmRpY2VzIG9mIHRoZSBVVGV4dCBwcm92
aWRlci4gIFRoZXNlIG1heSBub3QgbmVjZXNzYXJpbHkKKyAqIGJlIFVURi0xNiBpbmRpY2VzLgor
ICogPHA+CisgKiBUaGUgc2l6ZSAobnVtYmVyIG9mIDE2IGJpdCBVQ2hhcnMpIGluIHRoZSBkYXRh
IHRvIGJlIGV4dHJhY3RlZCBpcyByZXR1cm5lZC4gIFRoZQorICogZnVsbCBhbW91bnQgaXMgcmV0
dXJuZWQsIGV2ZW4gd2hlbiB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBzaXplIGlzIHNtYWxsZXIuCisg
KiA8cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAv
IG11c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQorICogYmUgTlVMLXRlcm1pbmF0ZWQg
aWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgor
ICoKKyAqIEBwYXJhbSAgdXQgICAgICAgICAgICB0aGUgVVRleHQgZnJvbSB3aGljaCB0byBleHRy
YWN0IGRhdGEuCisgKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0ICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0
aGUgZmlyc3QgY2hhcmFjZXIgdG8gZXh0cmFjdC4KKyAqIEBwYXJhbSAgbmF0aXZlTGltaXQgICB0
aGUgbmF0aXZlIHN0cmluZyBpbmRleCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0
CisgKiAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4dHJhY3QuCisgKiBAcGFy
YW0gIGRlc3QgICAgICAgICAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRo
ZSBleHRyYWN0ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFjaXR5ICBUaGUg
c2l6ZSwgaW4gVUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5IGJlIHplcm8K
KyAqICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJlY29tcHV0aW5nIHRoZSByZXF1aXJlZCBz
aXplLgorICogQHBhcmFtICBzdGF0dXMgICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMu
CisgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I6IFJl
dHVybnMgbnVtYmVyIG9mIFVDaGFycyBmb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICBwcmVm
bGlnaHRpbmcuCisgKiBAcmV0dXJuIE51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGRhdGEuICBEb2Vz
IG5vdCBpbmNsdWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICov
Cit0eXBlZGVmIGludDMyX3QgVV9DQUxMQ09OVgorVVRleHRFeHRyYWN0KFVUZXh0ICp1dCwKKyAg
ICAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAg
ICAgICAgICAgIFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAg
ICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRp
b24gZm9yIFVUZXh0LnJlcGxhY2UoKS4KKyAqCisgKiBSZXBsYWNlIGEgcmFuZ2Ugb2YgdGhlIG9y
aWdpbmFsIHRleHQgd2l0aCBhIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogTGVhdmVzIHRoZSBj
dXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZQor
ICogIG5ld2x5IGluc2VydGVkIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogVGhpcyBmdW5jdGlv
biBuZWVkIG9ubHkgYmUgaW1wbGVtZW50ZWQgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdy
aXRpbmcuCisgKgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUg
b25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZl
IHRleHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0
aGUKKyAqIHRleHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0byByZWZsZWN0IHRoZSB1cGRhdGVk
IGl0ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRvIGFjY291bnQgYW55IGNoYW5nZXMg
dG8gdGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJlIGNhdXNlZAorICogYnkgdGhlIHJl
cGxhY2Ugb3BlcmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAgICAgICAgICAgICAgIHRoZSBVVGV4
dCByZXByZXNlbnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0
aXZlU3RhcnQgICAgICB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUg
cmVwbGFjZWQKKyAqIEBwYXJhbSBuYXRpdmVMaW1pdCAgICAgIHRoZSBpbmRleCBvZiB0aGUgY2hh
cmFjdGVyIGZvbGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICogQHBhcmFtIHJl
cGxhY2VtZW50VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICogQHBhcmFt
IHJlcGxhY21lbnRMZW5ndGggbGVuZ3RoIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGluIFVDaGFy
cywgb3IgLTEgaWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVz
ICAgICAgICAgICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGlu
Y2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgor
ICoKKyAqIEByZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0
cyBieSB3aGljaAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9y
IGNvbnRyYWN0ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgaW50MzJf
dCBVX0NBTExDT05WCitVVGV4dFJlcGxhY2UoVVRleHQgKnV0LAorICAgICAgICAgICAgIGludDY0
X3QgbmF0aXZlU3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCisgICAgICAgICAgICAgY29uc3Qg
VUNoYXIgKnJlcGxhY2VtZW50VGV4dCwgaW50MzJfdCByZXBsYWNtZW50TGVuZ3RoLAorICAgICAg
ICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNs
YXJhdGlvbiBmb3IgVVRleHQuY29weSgpLgorICoKKyAqIENvcHkgb3IgbW92ZSBhIHN1YnN0cmlu
ZyBmcm9tIG9uZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxl
IHJldGFpbmluZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgorICogVGhp
cyBmdW5jdGlvbiBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmluZ3MuCisg
KiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdl
LgorICoKKyAqIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBk
ZXN0SW5kZXg7CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3Rp
bmcgdGV4dC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5lZWQgb25seSBiZSBpbXBsZW1lbnRlZCBm
b3IgVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisgKgorICogV2hlbiB1c2luZyB0
aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQg
b250byB0aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9u
IGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRleHQgY2h1bmsgd2l0aGluIHRo
ZSBVVGV4dCB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRh
a2luZyBpbnRvIGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mg
c3RydWN0dXJlIGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgorICoKKyAqIEBw
YXJhbSB1dCAgICAgICAgICAgVGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBv
cGVyYXRlZCBvbi4KKyAqIEBwYXJhbSBuYXRpdmVTdGFydCAgVGhlIGluZGV4IG9mIHRoZSBzdGFy
dCBvZiB0aGUgcmVnaW9uIHRvIGJlIGNvcGllZCBvciBtb3ZlZAorICogQHBhcmFtIG5hdGl2ZUxp
bWl0ICBUaGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBi
ZSByZXBsYWNlZC4KKyAqIEBwYXJhbSBuYXRpdmVEZXN0ICAgVGhlIGRlc3RpbmF0aW9uIGluZGV4
IHRvIHdoaWNoIHRoZSBzb3VyY2Ugc3Vic3RyaW5nIGlzIGNvcGllZCBvciBtb3ZlZC4KKyAqIEBw
YXJhbSBtb3ZlICAgICAgICAgSWYgVFJVRSwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBu
b3QgY29waWVkL2R1cGxpY2F0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgIHJlY2VpdmVzIGFu
eSBlcnJvciBzdGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX05PX1dSSVRFX1BFUk1J
U1NJT04KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRlZiB2b2lkIFVfQ0FMTENP
TlYKK1VUZXh0Q29weShVVGV4dCAqdXQsCisgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwg
aW50NjRfdCBuYXRpdmVMaW1pdCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZURlc3QsCisgICAg
ICAgICAgVUJvb2wgbW92ZSwKKyAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioK
KyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm1hcE9mZnNldFRvTmF0aXZl
KCkuCisgKiBNYXAgZnJvbSB0aGUgY3VycmVudCBVQ2hhciBvZmZzZXQgd2l0aGluIHRoZSBjdXJy
ZW50IHRleHQgY2h1bmsgdG8KKyAqICB0aGUgY29ycmVzcG9uZGluZyBuYXRpdmUgaW5kZXggaW4g
dGhlIG9yaWdpbmFsIHNvdXJjZSB0ZXh0LgorICoKKyAqIFRoaXMgaXMgcmVxdWlyZWQgb25seSBm
b3IgdGV4dCBwcm92aWRlcnMgdGhhdCBkbyBub3QgdXNlIG5hdGl2ZSBVVEYtMTYgaW5kZXhlcy4K
KyAqCisgKiBAcGFyYW0gdXQgICAgIHRoZSBVVGV4dC4KKyAqIEByZXR1cm4gQWJzb2x1dGUgKG5h
dGl2ZSkgaW5kZXggY29ycmVzcG9uZGluZyB0byBjaHVua09mZnNldCBpbiB0aGUgY3VycmVudCBj
aHVuay4KKyAqICAgICAgICAgVGhlIHJldHVybmVkIG5hdGl2ZSBpbmRleCBzaG91bGQgYWx3YXlz
IGJlIHRvIGEgY29kZSBwb2ludCBib3VuZGFyeS4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LwordHlwZWRlZiBpbnQ2NF90IFVfQ0FMTENPTlYKK1VUZXh0TWFwT2Zmc2V0VG9OYXRpdmUoY29u
c3QgVVRleHQgKnV0KTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBV
VGV4dC5tYXBJbmRleFRvVVRGMTYoKS4KKyAqIE1hcCBmcm9tIGEgbmF0aXZlIGluZGV4IHRvIGEg
VUNoYXIgb2Zmc2V0IHdpdGhpbiBhIHRleHQgY2h1bmsuCisgKiBCZWhhdmlvciBpcyB1bmRlZmlu
ZWQgaWYgdGhlIG5hdGl2ZSBpbmRleCBkb2VzIG5vdCBmYWxsIHdpdGhpbiB0aGUKKyAqICAgY3Vy
cmVudCBjaHVuay4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIG9ubHkgZm9yIHRl
eHQgcHJvdmlkZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRpdmUgVVRGLTE2IGluZGV4ZXMuCisgKgor
ICogQHBhcmFtIHV0ICAgICAgICAgIFRoZSBVVGV4dCBjb250YWluaW5nIHRoZSB0ZXh0IGNodW5r
LgorICogQHBhcmFtIG5hdGl2ZUluZGV4IEFic29sdXRlIChuYXRpdmUpIHRleHQgaW5kZXgsIGNo
dW5rLT5zdGFydDw9aW5kZXg8PWNodW5rLT5saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBD
aHVuay1yZWxhdGl2ZSBVVEYtMTYgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmll
ZCBuYXRpdmUKKyAqICAgICAgICAgICAgICAgICAgICBpbmRleC4KKyAqCisgKiBAc3RhYmxlIElD
VSAzLjQKKyAqLwordHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKK1VUZXh0TWFwTmF0aXZlSW5k
ZXhUb1VURjE2KGNvbnN0IFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7CisKKworLyoq
CisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC51dGV4dENsb3NlKCkuCisg
KgorICogQSBUZXh0IFByb3ZpZGVyIGNsb3NlIGZ1bmN0aW9uIGlzIG9ubHkgcmVxdWlyZWQgZm9y
IHByb3ZpZGVyIHR5cGVzIHRoYXQgbWFrZQorICogIGFsbG9jYXRpb25zIGluIHRoZWlyIG9wZW4g
ZnVuY3Rpb24gKG9yIG90aGVyIGZ1bmN0aW9ucykgdGhhdCBtdXN0IGJlIAorICogIGNsZWFuZWQg
d2hlbiB0aGUgVVRleHQgaXMgY2xvc2VkLgorICoKKyAqIFRoZSBhbGxvY2F0aW9uIG9mIHRoZSBV
VGV4dCBzdHJ1Y3QgaXRzZWxmIGFuZCBhbnkgImV4dHJhIiBzdG9yYWdlCisgKiBhc3NvY2lhdGVk
IHdpdGggdGhlIFVUZXh0IGlzIGhhbmRsZWQgYnkgdGhlIGNvbW1vbiBVVGV4dCBpbXBsZW1lbnRh
dGlvbgorICogYW5kIGRvZXMgbm90IHJlcXVpcmUgcHJvdmlkZXIgc3BlY2lmaWMgY2xlYW51cCBp
biBhIGNsb3NlIGZ1bmN0aW9uLgorICoKKyAqIE1vc3QgVVRleHQgcHJvdmlkZXIgaW1wbGVtZW50
YXRpb25zIGRvIG5vdCBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEBw
YXJhbSB1dCBBIFVUZXh0IG9iamVjdCB0byBiZSBjbG9zZWQuCisgKgorICogQHN0YWJsZSBJQ1Ug
My40CisgKi8KK3R5cGVkZWYgdm9pZCBVX0NBTExDT05WCitVVGV4dENsb3NlKFVUZXh0ICp1dCk7
CisKKworLyoqCisgICogICAocHVibGljKSAgRnVuY3Rpb24gZGlzcGF0Y2ggdGFibGUgZm9yIFVU
ZXh0LgorICAqICAgICAgICAgICAgIENvbmNlcHR1YWxseSB2ZXJ5IG11Y2ggbGlrZSBhIEMrKyBW
aXJ0dWFsIEZ1bmN0aW9uIFRhYmxlLgorICAqICAgICAgICAgICAgIFRoaXMgc3RydWN0IGRlZmlu
ZXMgdGhlIG9yZ2FuaXphdGlvbiBvZiB0aGUgdGFibGUuCisgICogICAgICAgICAgICAgRWFjaCB0
ZXh0IHByb3ZpZGVyIGltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBhbgorICAqICAgICAgICAg
ICAgICBhY3R1YWwgdGFibGUgdGhhdCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSBhcHByb3ByaWF0
ZSBmdW5jdGlvbnMKKyAgKiAgICAgICAgICAgICAgZm9yIHRoZSB0eXBlIG9mIHRleHQgYmVpbmcg
aGFuZGxlZC4KKyAgKiAgIEBzdGFibGUgSUNVIDMuNgorICAqLworc3RydWN0IFVUZXh0RnVuY3Mg
eworICAgIC8qKgorICAgICAqICAgKHB1YmxpYykgIEZ1bmN0aW9uIHRhYmxlIHNpemUsIHNpemVv
ZihVVGV4dEZ1bmNzKQorICAgICAqICAgICAgICAgICAgIEludGVuZGVkIGZvciB1c2Ugc2hvdWxk
IHRoZSB0YWJsZSBncm93IHRvIGFjY29tb2RhdGUgYWRkZWQKKyAgICAgKiAgICAgICAgICAgICBm
dW5jdGlvbnMgaW4gdGhlIGZ1dHVyZSwgdG8gYWxsb3cgdGVzdHMgZm9yIG9sZGVyIGZvcm1hdAor
ICAgICAqICAgICAgICAgICAgIGZ1bmN0aW9uIHRhYmxlcyB0aGF0IGRvIG5vdCBjb250YWluIHRo
ZSBleHRlbnNpb25zLgorICAgICAqCisgICAgICogICAgICAgICAgICAgRmllbGRzIGFyZSBwbGFj
ZWQgZm9yIG9wdGltYWwgYWxpZ25tZW50IG9uCisgICAgICogICAgICAgICAgICAgMzIvNjQvMTI4
LWJpdC1wb2ludGVyIG1hY2hpbmVzLCBieSBub3JtYWxseSBncm91cGluZyB0b2dldGhlcgorICAg
ICAqICAgICAgICAgICAgIDQgMzItYml0IGZpZWxkcywKKyAgICAgKiAgICAgICAgICAgICA0IHBv
aW50ZXJzLAorICAgICAqICAgICAgICAgICAgIDIgNjQtYml0IGZpZWxkcworICAgICAqICAgICAg
ICAgICAgIGluIHNlcXVlbmNlLgorICAgICAqICAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisg
ICAgaW50MzJfdCAgICAgICB0YWJsZVNpemU7CisKKyAgICAvKioKKyAgICAgICogICAocHJpdmF0
ZSkgIEFsaWdubWVudCBwYWRkaW5nLgorICAgICAgKiAgICAgICAgICAgICAgRG8gbm90IHVzZSwg
cmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrIG9ubHkuCisgICAgICAqICAg
QGludGVybmFsCisgICAgICAqLworICAgIGludDMyX3QgICAgICAgcmVzZXJ2ZWQxLCAvKiogQGlu
dGVybmFsICovIHJlc2VydmVkMiwgLyoqIEBpbnRlcm5hbCAqLyByZXNlcnZlZDM7CisKKworICAg
IC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0Q2xvbmUKKyAg
ICAgKgorICAgICAqIEBzZWUgVVRleHRDbG9uZQorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAg
ICAqLworICAgIFVUZXh0Q2xvbmUgKmNsb25lOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykg
ZnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRMZW5ndGgKKyAgICAgKiBNYXkgYmUgZXhwZW5zaXZl
IHRvIGNvbXB1dGUhCisgICAgICoKKyAgICAgKiBAc2VlIFVUZXh0TGVuZ3RoCisgICAgICogQHN0
YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHROYXRpdmVMZW5ndGggKm5hdGl2ZUxlbmd0
aDsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0
QWNjZXNzLgorICAgICAqCisgICAgICogQHNlZSBVVGV4dEFjY2VzcworICAgICAqIEBzdGFibGUg
SUNVIDMuNgorICAgICAqLworICAgIFVUZXh0QWNjZXNzICphY2Nlc3M7CisKKyAgICAvKioKKyAg
ICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dEV4dHJhY3QuCisgICAgICoK
KyAgICAgKiBAc2VlIFVUZXh0RXh0cmFjdAorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAq
LworICAgIFVUZXh0RXh0cmFjdCAqZXh0cmFjdDsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMp
IEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0UmVwbGFjZS4KKyAgICAgKgorICAgICAqIEBzZWUg
VVRleHRSZXBsYWNlCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRS
ZXBsYWNlICpyZXBsYWNlOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9p
bnRlciBmb3IgVVRleHRDb3B5LgorICAgICAqCisgICAgICogQHNlZSBVVGV4dENvcHkKKyAgICAg
KiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBVVGV4dENvcHkgKmNvcHk7CisKKyAgICAv
KioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dE1hcE9mZnNldFRv
TmF0aXZlLgorICAgICAqCisgICAgICogQHNlZSBVVGV4dE1hcE9mZnNldFRvTmF0aXZlCisgICAg
ICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRNYXBPZmZzZXRUb05hdGl2ZSAq
bWFwT2Zmc2V0VG9OYXRpdmU7CisKKyAgICAvKioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBw
b2ludGVyIGZvciBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNi4KKyAgICAgKgorICAgICAqIEBz
ZWUgVVRleHRNYXBOYXRpdmVJbmRleFRvVVRGMTYKKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAg
ICAgKi8KKyAgICBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNiAqbWFwTmF0aXZlSW5kZXhUb1VU
RjE2OworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRl
eHRDbG9zZS4KKyAgICAgICoKKyAgICAgICogQHNlZSBVVGV4dENsb3NlCisgICAgICAqIEBzdGFi
bGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqY2xvc2U7CisKKyAgICAvKioK
KyAgICAgICogKHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRl
cm5hbAorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqc3BhcmUxOworICAgIAorICAgIC8qKgor
ICAgICAgKiAocHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9uIHBvaW50ZXIKKyAgICAgICogQGludGVy
bmFsCisgICAgICAqLworICAgIFVUZXh0Q2xvc2UgICpzcGFyZTI7CisKKyAgICAvKioKKyAgICAg
ICogKHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAor
ICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqc3BhcmUzOworCit9OworLyoqCisgKiBGdW5jdGlv
biBkaXNwYXRjaCB0YWJsZSBmb3IgVVRleHQKKyAqIEBzZWUgVVRleHRGdW5jcworICovCit0eXBl
ZGVmIHN0cnVjdCBVVGV4dEZ1bmNzIFVUZXh0RnVuY3M7CisKKyAvKioKKyAgKiAgIFVUZXh0IHN0
cnVjdC4gIFByb3ZpZGVzIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBVVGV4dCBh
Y2Nlc3MgY29kZQorICAqICAgICAgICAgICAgICAgICAgYW5kIHRoZSBVVGV4dCBwcm92aWRlciBj
b2RlIHRoYXQgd29ya3Mgb24gc3BlY2lmaWMga2luZHMgb2YKKyAgKiAgICAgICAgICAgICAgICAg
IHRleHQgIChVVEYtOCwgbm9uY29udGlndW91cyBVVEYtMTYsIHdoYXRldmVyLikKKyAgKgorICAq
ICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHByZWRlZmluZWQg
dHlwZXMgb2YgdGV4dCBwcm92aWRlcnMKKyAgKiAgICAgICAgICAgICAgICAgIHRvIHBhc3MgdGV4
dCBkYXRhIHRvIElDVSBzZXJ2aWNlcyB3aWxsIGhhdmUgbm8gbmVlZCB0byB2aWV3IHRoZQorICAq
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzIG9mIHRoZSBVVGV4dCBzdHJ1Y3RzIHRoYXQgdGhl
eSBvcGVuLgorICAqCisgICogQHN0YWJsZSBJQ1UgMy42CisgICovCitzdHJ1Y3QgVVRleHQgewor
ICAgIC8qKgorICAgICAqICAgICAocHJpdmF0ZSkgIE1hZ2ljLiAgVXNlZCB0byBoZWxwIGRldGVj
dCB3aGVuIFVUZXh0IGZ1bmN0aW9ucyBhcmUgaGFuZGVkCisgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICBpbnZhbGlkIG9yIHVuaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCisgICAgICogICAg
ICAgICAgICAgICAgICAgICAgICB1dGV4dF9vcGVuWFlaKCkgZnVuY3Rpb25zIHRha2UgYW4gaW5p
dGlhbGl6ZWQsCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBidXQgbm90IG5lY2Vzc2Fy
aWx5IG9wZW4sIFVUZXh0IHN0cnVjdCBhcyBhbgorICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uYWwgZmlsbC1pbiBwYXJhbWV0ZXIuICBUaGlzIG1hZ2ljIGZpZWxkCisgICAgICog
ICAgICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNoZWNrIGZvciB0aGF0IGluaXRpYWxp
emF0aW9uLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCBwcm92aWRlciBjbG9z
ZSBmdW5jdGlvbnMgbXVzdCBOT1QgY2xlYXIKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAg
IHRoZSBtYWdpYyBmaWVsZCBiZWNhdXNlIHRoYXQgd291bGQgcHJldmVudAorICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgcmV1c2Ugb2YgdGhlIFVUZXh0IHN0cnVjdC4KKyAgICAgKiBAaW50
ZXJuYWwKKyAgICAgKi8KKyAgICB1aW50MzJfdCAgICAgICBtYWdpYzsKKworCisgICAgLyoqCisg
ICAgICogICAgIChwcml2YXRlKSAgRmxhZ3MgZm9yIG1hbmFnaW5nIHRoZSBhbGxvY2F0aW9uIGFu
ZCBmcmVlaW5nIG9mCisgICAgICogICAgICAgICAgICAgICAgbWVtb3J5IGFzc29jaWF0ZWQgd2l0
aCB0aGlzIFVUZXh0LgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIGludDMyX3QgICAg
ICAgIGZsYWdzOworCisKKyAgICAvKioKKyAgICAgICogIFRleHQgcHJvdmlkZXIgcHJvcGVydGll
cy4gIFRoaXMgc2V0IG9mIGZsYWdzIGlzIG1haW50YWludGVkIGJ5IHRoZQorICAgICAgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbi4KKyAg
ICAgICogIEBzdGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgcHJv
dmlkZXJQcm9wZXJ0aWVzOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgc2l6ZU9mU3RydWN0
PXNpemVvZihVVGV4dCkKKyAgICAgKiBBbGxvd3MgcG9zc2libGUgYmFja3dhcmQgY29tcGF0aWJs
ZSBleHRlbnNpb24uCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgKi8KKyAg
ICBpbnQzMl90ICAgICAgICAgc2l6ZU9mU3RydWN0OworICAgIAorICAgIC8qIC0tLS0tLSAxNiBi
eXRlIGFsaWdubWVudCBib3VuZGFyeSAtLS0tLS0tLS0tLSAgKi8KKyAgICAKKworICAgIC8qKgor
ICAgICAgKiAgKHByb3RlY3RlZCkgTmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIg
cG9zaXRpb24gZm9sbG93aW5nCisgICAgICAqICAgICAgICAgICAgICB0aGUgY3VycmVudCBjaHVu
ay4KKyAgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBpbnQ2NF90ICAgICAg
ICAgY2h1bmtOYXRpdmVMaW1pdDsKKworICAgIC8qKgorICAgICAqICAgKHByb3RlY3RlZCkgIFNp
emUgaW4gYnl0ZXMgb2YgdGhlIGV4dHJhIHNwYWNlIChwRXh0cmEpLgorICAgICAqICBAc3RhYmxl
IElDVSAzLjQKKyAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICBleHRyYVNpemU7CisKKyAgICAv
KioKKyAgICAgICogICAgKHByb3RlY3RlZCkgVGhlIGhpZ2hlc3QgY2h1bmsgb2Zmc2V0IHdoZXJl
IG5hdGl2ZSBpbmRleGluZyBhbmQKKyAgICAgICogICAgY2h1bmsgKFVURi0xNikgaW5kZXhpbmcg
Y29ycmVzcG9uZC4gIEZvciBVVEYtMTYgc291cmNlcywgdmFsdWUKKyAgICAgICogICAgd2lsbCBi
ZSBlcXVhbCB0byBjaHVua0xlbmd0aC4KKyAgICAgICoKKyAgICAgICogICAgQHN0YWJsZSBJQ1Ug
My42CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBuYXRpdmVJbmRleGluZ0xpbWl0Owor
CisgICAgLyogLS0tLSAxNiBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tLS0tLSAqLworICAgIAor
ICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSBOYXRpdmUgaW5kZXggb2YgdGhlIGZpcnN0IGNo
YXJhY3RlciBpbiB0aGUgdGV4dCBjaHVuay4KKyAgICAgKiAgQHN0YWJsZSBJQ1UgMy42CisgICAg
ICovCisgICAgaW50NjRfdCAgICAgICAgIGNodW5rTmF0aXZlU3RhcnQ7CisKKyAgICAvKioKKyAg
ICAgKiAgKHByb3RlY3RlZCkgQ3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gd2l0aGluIHRoZSB0
ZXh0IGNodW5rIChVVEYtMTYgYnVmZmVyKS4KKyAgICAgKiAgVGhpcyBpcyB0aGUgaW5kZXggdG8g
dGhlIGNoYXJhY3RlciB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdXRleHRfbmV4dDMyKCkuCisg
ICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIGludDMyX3QgICAgICAgICBjaHVu
a09mZnNldDsKKworICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSBMZW5ndGggdGhlIHRleHQg
Y2h1bmsgKFVURi0xNiBidWZmZXIpLCBpbiBVQ2hhcnMuCisgICAgICogIEBzdGFibGUgSUNVIDMu
NgorICAgICAqLworICAgIGludDMyX3QgICAgICAgICBjaHVua0xlbmd0aDsKKworICAgIC8qIC0t
LS0gMTYgIGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0gKi8KKyAgICAKKworICAgIC8qKgorICAg
ICAqICAocHJvdGVjdGVkKSAgcG9pbnRlciB0byBhIGNodW5rIG9mIHRleHQgaW4gVVRGLTE2IGZv
cm1hdC4KKyAgICAgKiAgTWF5IHJlZmVyIGVpdGhlciB0byBvcmlnaW5hbCBzdG9yYWdlIG9mIHRo
ZSBzb3VyY2Ugb2YgdGhlIHRleHQsIG9yCisgICAgICogIGlmIGNvbnZlcnNpb24gd2FzIHJlcXVp
cmVkLCB0byBhIGJ1ZmZlciBvd25lZCBieSB0aGUgVVRleHQuCisgICAgICogIEBzdGFibGUgSUNV
IDMuNgorICAgICAqLworICAgIGNvbnN0IFVDaGFyICAgICpjaHVua0NvbnRlbnRzOworCisgICAg
IC8qKgorICAgICAgKiAocHVibGljKSAgICAgUG9pbnRlciB0byBEaXNwYXRjaCB0YWJsZSBmb3Ig
YWNjZXNzaW5nIGZ1bmN0aW9ucyBmb3IgdGhpcyBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1Ug
My42CisgICAgICAqLworICAgIGNvbnN0IFVUZXh0RnVuY3MgICAgICpwRnVuY3M7CisKKyAgICAv
KioKKyAgICAgKiAgKHByb3RlY3RlZCkgIFBvaW50ZXIgdG8gYWRkaXRpb25hbCBzcGFjZSByZXF1
ZXN0ZWQgYnkgdGhlCisgICAgICogICAgICAgICAgICAgICB0ZXh0IHByb3ZpZGVyIGR1cmluZyB0
aGUgdXRleHRfb3BlbiBvcGVyYXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICov
CisgICAgdm9pZCAgICAgICAgICAqcEV4dHJhOworCisgICAgLyoqCisgICAgICogKHByb3RlY3Rl
ZCkgUG9pbnRlciB0byBzdHJpbmcgb3IgdGV4dC1jb250YWluaW4gb2JqZWN0IG9yIHNpbWlsYXIu
CisgICAgICogVGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSB0ZXh0IHRoYXQgdGhpcyBVVGV4dCBp
cyB3cmFwcGluZywgaW4gYSBmb3JtYXQKKyAgICAgKiAgdGhhdCBpcyBrbm93biB0byB0aGUgdGV4
dCBwcm92aWRlciBmdW5jdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisg
ICAgY29uc3Qgdm9pZCAgICpjb250ZXh0OworCisgICAgLyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50
IGJvdW5kYXJ5LS0tICovCisKKyAgICAvKioKKyAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZp
ZWxkcyBhdmFpbGFibGUgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAgKiBOb3Qg
dXNlZCBieSBVVGV4dCBjb21tb24gY29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAg
Ki8KKyAgICBjb25zdCB2b2lkICAgICAqcDsgCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkg
UG9pbnRlciBmaWVsZHMgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisg
ICAgICogTm90IHVzZWQgYnkgVVRleHQgY29tbW9uIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1Ug
My42CisgICAgICovCisgICAgY29uc3Qgdm9pZCAgICAgKnE7CisgICAgIC8qKgorICAgICAqIChw
cm90ZWN0ZWQpIFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHBy
b3ZpZGVyLgorICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgorICAgICAqIEBz
dGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBjb25zdCB2b2lkICAgICAqcjsKKworICAgIC8q
KgorICAgICAgKiAgUHJpdmF0ZSBmaWVsZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUg
VVRleHQgZnJhbWV3b3JrCisgICAgICAqICAgICBpdHNlbGYuICBUaGlzIGlzIG5vdCB0byBiZSB0
b3VjaGVkIGJ5IHRoZSB0ZXh0IHByb3ZpZGVycy4KKyAgICAgICogQGludGVybmFsIElDVSAzLjQK
KyAgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKnByaXZQOworCisKKyAgICAvKiAtLS0gMTYg
Ynl0ZSBhbGlnbm1lbnQgYm91bmRhcnktLS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAo
cHJvdGVjdGVkKSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIHRleHQgcHJv
dmlkZXIuCisgICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmssIG9yIGJ5IHRo
ZSBjbGllbnQgKHVzZXIpIG9mIHRoZSBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy40Cisg
ICAgICAqLworICAgIGludDY0X3QgICAgICAgICBhOworCisgICAgLyoqCisgICAgICAqIChwcm90
ZWN0ZWQpIEludGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRl
ci4KKyAgICAgICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZyYW1ld29yaywgb3IgYnkgdGhlIGNs
aWVudCAodXNlcikgb2YgdGhlIFVUZXh0LgorICAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAg
ICovCisgICAgaW50MzJfdCAgICAgICAgIGI7CisKKyAgICAvKioKKyAgICAgICogKHByb3RlY3Rl
ZCkgSW50ZWdlciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgor
ICAgICAgKiBOb3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3b3JrLCBvciBieSB0aGUgY2xpZW50
ICh1c2VyKSBvZiB0aGUgVVRleHQuCisgICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAgKi8K
KyAgICBpbnQzMl90ICAgICAgICAgYzsKKworICAgIC8qICAtLS0tIDE2IGJ5dGUgYWxpZ25tZW50
IGJvdW5kYXJ5LS0tLSAqLworCisKKyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVz
ZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAg
aXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMu
CisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGludDY0X3QgICAgICAg
ICBwcml2QTsKKyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1
dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhp
cyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBp
bnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QjsKKyAg
ICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkg
dGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3QgdG8g
YmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJQ1Ug
My40CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QzsKK307CisKKworLyoqCisg
KiAgQ29tbW9uIGZ1bmN0aW9uIGZvciB1c2UgYnkgVGV4dCBQcm92aWRlciBpbXBsZW1lbnRhdGlv
bnMgdG8gYWxsb2NhdGUgYW5kL29yIGluaXRpYWxpemUKKyAqICBhIG5ldyBVVGV4dCBzdHJ1Y3Qu
ICBUbyBiZSBjYWxsZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHV0ZXh0X29wZW4oKSBmdW5j
dGlvbnMuCisgKiAgSWYgdGhlIHN1cHBsaWVkIFVUZXh0IHBhcmFtZXRlciBpcyBudWxsLCBhIG5l
dyBVVGV4dCBzdHJ1Y3Qgd2lsbCBiZSBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisgKiAgSWYgdGhl
IHN1cHBsaWVkIFVUZXh0IGlzIGFscmVhZHkgb3BlbiwgdGhlIHByb3ZpZGVyJ3MgY2xvc2UgZnVu
Y3Rpb24gd2lsbCBiZSBjYWxsZWQKKyAqICBzbyB0aGF0IHRoZSBzdHJ1Y3QgY2FuIGJlIHJldXNl
ZCBieSB0aGUgb3BlbiB0aGF0IGlzIGluIHByb2dyZXNzLgorICoKKyAqIEBwYXJhbSB1dCAgIHBv
aW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QgdG8gYmUgcmUtdXNlZCwgb3IgbnVsbCBpZiBhIG5ldyBV
VGV4dAorICogICAgICAgICAgICAgc2hvdWxkIGJlIGFsbG9jYXRlZC4KKyAqIEBwYXJhbSBleHRy
YVNwYWNlIFRoZSBhbW91bnQgb2YgYWRkaXRpb25hbCBzcGFjZSB0byBiZSBhbGxvY2F0ZWQgYXMg
cGFydAorICogICAgICAgICAgICAgb2YgdGhpcyBVVGV4dCwgZm9yIHVzZSBieSB0eXBlcyBvZiBw
cm92aWRlcnMgdGhhdCByZXF1aXJlCisgKiAgICAgICAgICAgICBhZGRpdGlvbmFsIHN0b3JhZ2Uu
CisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4g
cG9pbnRlciB0byB0aGUgVVRleHQsIGFsbG9jYXRlZCBpZiBuZWNlc3NhcnksIHdpdGggZXh0cmEg
c3BhY2Ugc2V0IHVwIGlmIHJlcXVlc3RlZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NU
QUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfc2V0dXAoVVRleHQgKnV0LCBpbnQzMl90IGV4
dHJhU3BhY2UsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFM
X0FQSQorLyoqCisgICogQGludGVybmFsCisgICogIFZhbHVlIHVzZWQgdG8gaGVscCBpZGVudGlm
eSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0cy4KKyAgKiAgTm90ZTogIG11c3Qg
YmUgcHVibGljbHkgdmlzaWJsZSBzbyB0aGF0IFVURVhUX0lOSVRJQUxJWkVSIGNhbiBhY2Nlc3Mg
aXQuCisgICovCitlbnVtIHsKKyAgICBVVEVYVF9NQUdJQyA9IDB4MzQ1YWQ4MmMKK307CisjZW5k
aWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KKworLyoqCisgKiBpbml0aWFsaXplciB0byBi
ZSB1c2VkIHdpdGggbG9jYWwgKHN0YWNrKSBpbnN0YW5jZXMgb2YgYSBVVGV4dAorICogIHN0cnVj
dC4gIFVUZXh0IHN0cnVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgcGFzc2luZworICog
IHRoZW0gdG8gb25lIG9mIHRoZSB1dGV4dF9vcGVuIGZ1bmN0aW9ucy4KKyAqCisgKiBAc3RhYmxl
IElDVSAzLjYKKyAqLworI2RlZmluZSBVVEVYVF9JTklUSUFMSVpFUiB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIFVURVhUX01BR0lD
LCAgICAgICAgICAvKiBtYWdpYyAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgLyogZmxhZ3MgICAgICAgICAgICAgICAgKi8gXAorICAg
ICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHByb3ZpZGVyUHJvcHMgICAg
ICAgICovIFwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihVVGV4dCksICAgICAgICAvKiBzaXpl
T2ZTdHJ1Y3QgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgLyogY2h1bmtOYXRpdmVMaW1pdCAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwg
ICAgICAgICAgICAgICAgICAgIC8qIGV4dHJhU2l6ZSAgICAgICAgICAgICovIFwKKyAgICAgICAg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiBuYXRpdmVJbmRleGluZ0xpbWl0ICAq
LyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtOYXRp
dmVTdGFydCAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAg
IC8qIGNodW5rT2Zmc2V0ICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAg
ICAgICAgICAgICAgICAvKiBjaHVua0xlbmd0aCAgICAgICAgICAqLyBcCisgICAgICAgICAgICAg
ICAgICBOVUxMLCAgICAgICAgICAgICAgICAgLyogY2h1bmtDb250ZW50cyAgICAgICAgKi8gXAor
ICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIHBGdW5jcyAgICAgICAg
ICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBw
RXh0cmEgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgLyogY29udGV4dCAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAg
TlVMTCwgTlVMTCwgTlVMTCwgICAgIC8qIHAsIHEsIHIgICAgICAgICAgICAgICovIFwKKyAgICAg
ICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwcml2UCAgICAgICAgICAgICAg
ICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAgICAgICAgICAgICAgLyogYSwgYiwg
YyAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgMCwgMCAgICAgICAgICAg
ICAgIC8qIHByaXZBLEIsQywgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIH0KKwor
CitVX0NERUNMX0VORAorCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDIxNTU5
NjY3NDg0NjgyMTRjMDM2NThkMDNhNWQ3NzQ2ZmZlODA4YTQuLjY2Y2Q3ZjcwMzgyMDA5NzFlMTc2
NzAyY2EyOGRlOTQxMDZjZTgzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNDAsNiArMTQw
LDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgdGV4dC9DU3RyaW5nLmgKICAgICB0ZXh0L0ludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uaAogICAgIHRleHQvTENoYXIuaAorICAgIHRleHQvTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmgKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5oCiAgICAgdGV4dC9T
dHJpbmdDb21tb24uaAogICAgIHRleHQvU3RyaW5nSGFzaC5oCkBAIC0xNDcsOSArMTQ4LDE1IEBA
IHNldChXVEZfSEVBREVSUwogICAgIHRleHQvU3RyaW5nVmlldy5oCiAgICAgdGV4dC9TeW1ib2xJ
bXBsLmgKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKyAgICB0ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmgKKyAgICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaAogICAgIHRleHQv
VW5pcXVlZFN0cmluZ0ltcGwuaAogICAgIHRleHQvV1RGU3RyaW5nLmgKIAorICAgIHRleHQvaWN1
L1VUZXh0UHJvdmlkZXIuaAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAorICAg
IHRleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCisKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oCiAKICAgICB1bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgKQEAgLTIyMSw4ICsyMjgsMTMg
QEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAogICAgIHRleHQv
U3RyaW5nVmlldy5jcHAKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAorICAgIHRleHQvVGV4
dEJyZWFrSXRlcmF0b3IuY3BwCiAgICAgdGV4dC9XVEZTdHJpbmcuY3BwCiAKKyAgICB0ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyLmNwcAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
CisgICAgdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAorCiAgICAgdGhyZWFkcy9CaW5h
cnlTZW1hcGhvcmUuY3BwCiAKICAgICB1bmljb2RlL1VURjguY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDcxYTUyYWU1ZTFlMjdhNGM4ODk1NjU3Y2Q0ZTA1ZjM4YmM2YTBhOWUuLmJh
MTU0NzQ4NzAxOWIyMWMzN2NmOTZmOWUwOTM3MmI4ZGQxZGM4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0xLDYgKzEsOCBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBQ
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAogCisgICAgdGV4dC9lZmwvVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKKwogICAgIGVmbC9EaXNwYXRjaFF1ZXVl
RWZsLmNwcAogICAgIGVmbC9NYWluVGhyZWFkRWZsLmNwcAogICAgIGVmbC9SdW5Mb29wRWZsLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyMGI5Yjk5M2E3YWE3ZjhjNTY1Y2IyODMy
NDZjY2JmZDViMDc1NDAyLi5mNjE5ZGQ1N2M3Nzg4ZGUyYzk1MzcyZDJiYWVhOTk4MGY3NmI1N2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOCw2ICs4LDggQEAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcAogICAgIGdsaWIvUnVuTG9v
cEdMaWIuY3BwCiAgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAKKwor
ICAgIHRleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCiApCiAKIGxp
c3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggY2Uz
ZGRiY2IwODFiZjczNzllNTM1N2QxN2JiOWJiYmRhZDBhOTNlOS4uNDkzYjc5OGQ2MzY2NTJmMjMy
ZWEzZjk2ZDdjZjg5Zjg5MzIzYjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4
LDYgKzE4LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJDRi5j
cHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAgIHRleHQvbWFjL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VNYWMubW0KKwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAgIGNvY29h
L1dvcmtRdWV1ZUNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAzYjNmOThi
YmNjZmQ5MDI5Njk0ZmRlMjUyNjExMjdhNjEyYmRjMzIzLi5hMGJkMTMyYzNlNGMxNzIzYjg5MTVk
MTBiYjk0MzQ0ZWZkZTAyOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdp
bi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMSw1ICsx
LDcgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0gICAgUExhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzV2luLmNwcAorICAgIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1dpbi5j
cHAKKworICAgIHRleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwCiAK
ICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmluZ0NG
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAppbmRleCA2NzhmOGJmZDEyMGEzYTM2MTFiM2NjZThlMWNl
OThmZWM5YWFjMDJkLi45MWIzMWY5ZGRmOTAwYTY2Zjk3ODg4YjljM2YxMWZiYjU2NjEyNTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaW55TFJVQ2FjaGUuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVu
YW1lIFZhbHVlVHlwZT4KIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewpAQCAtNzgsNCArNzgs
NyBAQCBwcml2YXRlOgogCiB9CiAKK3VzaW5nIFdURjo6VGlueUxSVUNhY2hlOwordXNpbmcgV1RG
OjpUaW55TFJVQ2FjaGVQb2xpY3k7CisKICNlbmRpZiAvLyBUaW55TFJVQ2FjaGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDc2NjA3ZDJhOTNkNWY4YjEwNDQ3MGVkODdjNDRkOWNjZjA4OTMxOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAgLTAs
MCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCisjZGVmaW5lIExpbmVCcmVha0l0
ZXJhdG9yUG9vbElDVV9oCisKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1
ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vi
cmsuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIExp
bmVCcmVha0l0ZXJhdG9yUG9vbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJyZWFr
SXRlcmF0b3JQb29sKTsKK3B1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7IH0K
KworICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQorICAgIHsK
KyAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29s
PiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD47
CisgICAgICAgIHJldHVybiAqKnBvb2w7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBtYWtl
TG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJy
ZWFrSXRlcmF0b3JNb2RlIG1vZGUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGxvY2Fs
ZVdpdGhLZXl3b3JkOworICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmQobG9jYWxlKTsK
KyAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgiQGJyZWFrPSIpOworICAg
ICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVV
QVgxNDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKKyAgICAg
ICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoImxvb3NlIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1h
bDoKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIm5vcm1hbCIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTRTdHJpY3Q6CisgICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFs
KCJzdHJpY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBsb2NhbGVXaXRoS2V5d29yZC50b1N0cmluZygpOworICAgIH0KKworICAgIFRleHRCcmVha0l0
ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZyBsb2Nh
bGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7CisgICAgICAgIGlmIChtb2RlID09IExpbmVCcmVh
a0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtL
ZXl3b3JkID0gbG9jYWxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbGVXaXRoT3B0
aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUsIG1v
ZGUpOworCisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IDA7CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBpZiAobV9wb29sW2ldLmZpcnN0ID09IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCkg
eworICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbV9wb29sW2ldLnNlY29uZDsKKyAgICAgICAg
ICAgICAgICBtX3Bvb2wucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpdGVyYXRvcikgeworICAgICAgICAg
ICAgaXRlcmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFsQnJl
YWtLZXl3b3JkLCBtb2RlLCBpc0NKSyk7CisgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQorICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKCFtX3Zl
bmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworICAgICAgICBtX3ZlbmRlZEl0ZXJh
dG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCk7CisgICAg
ICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICB9CisKKyAgICB2b2lkIHB1dChUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IpCisgICAgeworICAgICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBtX3Zl
bmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworCisgICAgICAgIGlmIChtX3Bvb2wu
c2l6ZSgpID09IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJhdG9y
KG1fcG9vbFswXS5zZWNvbmQpOworICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIG1fcG9vbC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMudGFr
ZShpdGVyYXRvciksIGl0ZXJhdG9yKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OworCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRvbWlj
U3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5OworICAgIHR5cGVkZWYgVmVjdG9yPEVu
dHJ5LCBjYXBhY2l0eT4gUG9vbDsKKyAgICBQb29sIG1fcG9vbDsKKyAgICBIYXNoTWFwPFRleHRC
cmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKworICAgIGZy
aWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9y
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ODI0ZTY0MThmNDI4
MmIzZjlkMzUxZTU1MjBjNWRmY2MyYmEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDkyOSBAQAorLyoKKyAq
IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorCisjaW5j
bHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRl
ckxhdGluMS5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgorI2luY2x1ZGUgPG11
dGV4PgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJldHRlciBuYW1lCisjZGVmaW5lIEFE
RElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkpCisKK25hbWVzcGFj
ZSBXVEYgeworCisvLyBJdGVyYXRvciBpbml0aWFsaXphdGlvbgorCitzdGF0aWMgVGV4dEJyZWFr
SXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwgY29u
c3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkpCit7CisgICAgVUVy
cm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrX29w
ZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsg
aXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7
CisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCisjaWYgIVBMQVRGT1JNKElPUykKKworc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3QgY2hh
ciogYnJlYWtSdWxlcykKK3sKKyAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKKyAgICBVRXJy
b3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
c3RybGVuKGJyZWFrUnVsZXMpOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3Ry
aW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnJlYWtSdWxlcyksIGxlbmd0
aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3BlblJ1bGVz
KHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVu
U3RhdHVzKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1cyks
ICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjogJXMgKCVkKSIsIHVfZXJyb3JO
YW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9CisK
KyNlbmRpZgorCisKKy8vIEl0ZXJhdG9yIHRleHQgc2V0dGluZworCitzdGF0aWMgVGV4dEJyZWFr
SXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcmF0b3Is
IFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAg
ICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKKyAgICAgICAgdGV4dExvY2FsLnRleHQgPSBV
VEVYVF9JTklUSUFMSVpFUjsKKyAgICAgICAgdGV4dExvY2FsLnRleHQuZXh0cmFTaXplID0gc2l6
ZW9mKHRleHRMb2NhbC5idWZmZXIpOworICAgICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0cmEgPSB0
ZXh0TG9jYWwuYnVmZmVyOworCisgICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0aW4xVVRleHRQcm92aWRlcigm
dGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCAmb3BlblN0
YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgICAg
IExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5T
dGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAg
ICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVicmtf
c2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRl
eHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVz
KSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0
YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIH0KKworICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVi
cmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwg
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksICZzZXRUZXh0U3RhdHVzKTsK
KyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAmaXRlcmF0b3I7Cit9CisKK3N0YXRpYyBU
ZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRCcmVh
a0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IFVDaGFyKiBwcmlv
ckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICBpZiAoc3RyaW5n
LmlzOEJpdCgpKSB7CisgICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7CisgICAgICAg
IHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7CisgICAgICAgIHRleHRMb2NhbC50
ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKKyAgICAgICAgdGV4dExv
Y2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKKworICAgICAgICBVRXJyb3JDb2Rl
IG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFVUZXh0KiB0ZXh0ID0gb3Blbkxh
dGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgs
ICZvcGVuU3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgeworICAg
ICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlciBm
YWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAg
IGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
dWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdXRleHRfY2xv
c2UodGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVVRleHQgdGV4dExvY2FsID0gVVRFWFRf
SU5JVElBTElaRVI7CisKKyAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VS
Uk9SOworICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJv
dmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCks
IHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CisgICAgICAg
IGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigib3Bl
blVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBv
cGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAg
VUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJrX3Nl
dFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0
LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykp
IHsKKyAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0
dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICB9CisKKyAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CisgICAgfQorCisgICAgcmV0dXJu
ICZpdGVyYXRvcjsKK30KKworCisvLyBTdGF0aWMgaXRlcmF0b3JzCisKK1RleHRCcmVha0l0ZXJh
dG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0aWMg
VGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCUktfV09SRCk7CisgICAgaWYgKCFzdGF0aWNXb3JkQnJlYWtJdGVyYXRvcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9yKCpz
dGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKK30KKworVGV4dEJyZWFrSXRlcmF0b3Iq
IHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0aWMg
VGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciA9IGluaXRpYWxp
emVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKKyAgICBpZiAoIXN0YXRpY1NlbnRlbmNlQnJlYWtJ
dGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4dEZv
ckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Cit9CisKK1Rl
eHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5n
KQoreworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8gVGhpcyBydWxlIHNldCBpcyBiYXNlZCBv
biBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2YgSUNVIDQuMAorICAgIC8vIDxodHRw
Oi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3MvcmVsZWFzZS00LTAv
c291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KKyAgICAvLyBUaGUgbWFqb3IgZGlmZmVyZW5j
ZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVkIGJlbG93OgorICAgIC8vICogUmVw
bGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gU3BhY2luZ01hcmt9XScgd2l0aCAn
W1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9IC0gJEV4dGVuZF0nIGZvciBJQ1Ug
My44IG9yIGVhcmxpZXI7CisgICAgLy8gKiBSZW1vdmVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1
cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJhY3RlcnMgKEJ1ZyAyNDM0Mik7Cisg
ICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3ZpbmcgYWZ0
ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBleGNlcHQgVGFtaWwgKEJ1ZyAxNTc5
MCksIGFuZDsKKyAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBmcm9t
IG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2FyYSB2b2ljZWQgbWFya3Mu
CisgICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwgaW5kaWNhdG9yIHN5bWJvbHMuCisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9CisgICAgICAgICIkQ1IgICAgICA9IFtcXHB7
R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgorICAgICAgICAiJExGICAgICAgPSBbXFxw
e0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKKyAgICAgICAgIiRDb250cm9sID0gW1xc
cHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1dOyIKKyAgICAgICAgIiRWb2ljZU1h
cmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiIC8vIEphcGFuZXNlIGhhbGYtd2lkdGgga2F0YWthbmEg
dm9pY2VkIG1hcmtzCisgICAgICAgICIkRXh0ZW5kICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9C
cmVhayA9IEV4dGVuZH0gJFZvaWNlTWFya3MgLSBbXFx1MEUzMCBcXHUwRTMyIFxcdTBFNDUgXFx1
MEVCMCBcXHUwRUIyXV07IgorICAgICAgICAiJFNwYWNpbmdNYXJrID0gW1tcXHB7R2VuZXJhbF9D
YXRlZ29yeSA9IFNwYWNpbmcgTWFya31dIC0gJEV4dGVuZF07IgorICAgICAgICAiJEwgICAgICAg
PSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMfV07IgorICAgICAgICAiJFYgICAgICAg
PSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBWfV07IgorICAgICAgICAiJFQgICAgICAg
PSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBUfV07IgorICAgICAgICAiJExWICAgICAg
PSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVn1dOyIKKyAgICAgICAgIiRMVlQgICAg
ID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZUfV07IgorICAgICAgICAiJEhpbjAg
ICAgPSBbXFx1MDkwNS1cXHUwOTM5XTsiIC8vIERldmFuYWdhcmkgTGV0dGVyIEEsLi4uLEhhCisg
ICAgICAgICIkSGluViAgICA9IFxcdTA5NEQ7IiAvLyBEZXZhbmFnYXJpIFNpZ24gVmlyYW1hCisg
ICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5MzldOyIgLy8gRGV2YW5hZ2FyaSBMZXR0
ZXIgS2EsLi4uLEhhCisgICAgICAgICIkQmVuMCAgICA9IFtcXHUwOTg1LVxcdTA5QjldOyIgLy8g
QmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRCZW5WICAgID0gXFx1MDlDRDsiIC8v
IEJlbmdhbGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1MDlC
OV07IiAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRQYW4wICAgID0gW1xc
dTBBMDUtXFx1MEEzOV07IiAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRQ
YW5WICAgID0gXFx1MEE0RDsiIC8vIEd1cm11a2hpIFNpZ24gVmlyYW1hCisgICAgICAgICIkUGFu
MSAgICA9IFtcXHUwQTE1LVxcdTBBMzldOyIgLy8gR3VybXVraGkgTGV0dGVyIEthLC4uLixIYQor
ICAgICAgICAiJEd1ajAgICAgPSBbXFx1MEE4NS1cXHUwQUI5XTsiIC8vIEd1amFyYXRpIExldHRl
ciBBLC4uLixIYQorICAgICAgICAiJEd1alYgICAgPSBcXHUwQUNEOyIgLy8gR3VqYXJhdGkgU2ln
biBWaXJhbWEKKyAgICAgICAgIiRHdWoxICAgID0gW1xcdTBBOTUtXFx1MEFCOV07IiAvLyBHdWph
cmF0aSBMZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkT3JpMCAgICA9IFtcXHUwQjA1LVxcdTBC
MzldOyIgLy8gT3JpeWEgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkT3JpViAgICA9IFxcdTBC
NEQ7IiAvLyBPcml5YSBTaWduIFZpcmFtYQorICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIxNS1c
XHUwQjM5XTsiIC8vIE9yaXlhIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRUZWwwICAgID0g
W1xcdTBDMDUtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIk
VGVsViAgICA9IFxcdTBDNEQ7IiAvLyBUZWx1Z3UgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRUZWwx
ICAgID0gW1xcdTBDMTQtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEthLC4uLixIYQorICAg
ICAgICAiJEthbjAgICAgPSBbXFx1MEM4NS1cXHUwQ0I5XTsiIC8vIEthbm5hZGEgTGV0dGVyIEEs
Li4uLEhhCisgICAgICAgICIkS2FuViAgICA9IFxcdTBDQ0Q7IiAvLyBLYW5uYWRhIFNpZ24gVmly
YW1hCisgICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1LVxcdTBDQjldOyIgLy8gS2FubmFkYSBM
ZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRNYWwwICAgID0gW1xcdTBEMDUtXFx1MEQzOV07IiAv
LyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkTWFsViAgICA9IFxcdTBENEQ7
IiAvLyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKKyAgICAgICAgIiRNYWwxICAgID0gW1xcdTBEMTUt
XFx1MEQzOV07IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkUkkgICAg
ICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRpY2F0
b3JzCisgICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7IiAvLyBaZXJvIHdpZHRoIGpvaW5lcgor
ICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgLy8gRW1vamktc3R5bGUgdmFyaWF0aW9u
IHNlbGVjdG9yCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkRW1vamlG
b3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxV
MDAwMUY0OEIgXFxVMDAwMUY1RThdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0og
c2VxdWVuY2VzCisgICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBcXHUy
NzBBLVxcdTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYz
Q0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAw
MUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxV
MDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcg
XFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAwMUY1
OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAw
MUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThdIDsi
IC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKKyNlbHNlCisgICAgICAg
ICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAw
MUY0OEJdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCisgICAg
ICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFGMzg1
IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAwMDFG
NDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAw
MDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxc
VTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTk2
IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFG
NkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0aGF0
IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZW5kaWYKKyAgICAgICAgIiRFbW9qaU1vZHMg
PSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIgLy8gRml0enBhdHJpY2sgbW9kaWZpZXJzCisg
ICAgICAgICIhIWNoYWluOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAg
IiEhUklOb0NoYWluOyIKKyNlbmRpZgorICAgICAgICAiISFmb3J3YXJkOyIKKyAgICAgICAgIiRD
UiAkTEY7IgorICAgICAgICAiJEwgKCRMIHwgJFYgfCAkTFYgfCAkTFZUKTsiCisgICAgICAgICIo
JExWIHwgJFYpICgkViB8ICRUKTsiCisgICAgICAgICIoJExWVCB8ICRUKSAkVDsiCisjaWYgQURE
SVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkUkkgJFJJICRFeHRlbmQqIC8gJFJJOyIK
KyAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCo7IgorICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExG
XSAkRXh0ZW5kOyIKKyAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJrOyIK
KyNlbHNlCisgICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRFeHRlbmQ7IgorICAgICAgICAi
W14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7IgorICAgICAgICAiJFJJICRSSSAvICRS
STsiCisgICAgICAgICIkUkkgJFJJOyIKKyNlbmRpZgorICAgICAgICAiJEhpbjAgJEhpblYgJEhp
bjE7IiAvLyBEZXZhbmFnYXJpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRCZW4wICRCZW5W
ICRCZW4xOyIgLy8gQmVuZ2FsaSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkUGFuMCAkUGFu
ViAkUGFuMTsiIC8vIEd1cm11a2hpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRHdWowICRH
dWpWICRHdWoxOyIgLy8gR3VqYXJhdGkgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE9yaTAg
JE9yaVYgJE9yaTE7IiAvLyBPcml5YSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkVGVsMCAk
VGVsViAkVGVsMTsiIC8vIFRlbHVndSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkS2FuMCAk
S2FuViAkS2FuMTsiIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE1hbDAg
JE1hbFYgJE1hbDE7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJFpX
SiAkRW1vamlGb3JTZXFzOyIgLy8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNlcwor
ICAgICAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IiAvLyBEb24ndCBi
cmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBzZWxl
Y3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCisgICAgICAgICIhIXJldmVyc2U7IgorICAg
ICAgICAiJExGICRDUjsiCisgICAgICAgICIoJEwgfCAkViB8ICRMViB8ICRMVlQpICRMOyIKKyAg
ICAgICAgIigkViB8ICRUKSAoJExWIHwgJFYpOyIKKyAgICAgICAgIiRUICgkTFZUIHwgJFQpOyIK
KyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiRFeHRlbmQqICRSSSAkUkkg
LyAkRXh0ZW5kKiAkUkkgJFJJOyIKKyAgICAgICAgIiRFeHRlbmQqICRSSSAkUkk7IgorICAgICAg
ICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENSICRMRl07IgorICAgICAgICAiJFNwYWNpbmdN
YXJrIFteJENvbnRyb2wgJENSICRMRl07IgorI2Vsc2UKKyAgICAgICAgIiRFeHRlbmQgICAgICBb
XiRDb250cm9sICRDUiAkTEZdOyIKKyAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9sICRD
UiAkTEZdOyIKKyAgICAgICAgIiRSSSAkUkkgLyAkUkkgJFJJOyIKKyAgICAgICAgIiRSSSAkUkk7
IgorI2VuZGlmCisgICAgICAgICIkSGluMSAkSGluViAkSGluMDsiIC8vIERldmFuYWdhcmkgVmly
YW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRCZW4xICRCZW5WICRCZW4wOyIgLy8gQmVuZ2FsaSBW
aXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFBhbjEgJFBhblYgJFBhbjA7IiAvLyBHdXJtdWto
aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEd1ajEgJEd1alYgJEd1ajA7IiAvLyBHdWph
cmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE9yaTEgJE9yaVYgJE9yaTA7IiAvLyBH
dWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFRlbDEgJFRlbFYgJFRlbDA7IiAv
LyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRLYW4xICRLYW5WICRLYW4wOyIg
Ly8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE1hbDEgJE1hbFYgJE1hbDA7
IiAvLyBNYWxheWFsYW0gVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRFbW9qaUZvclNlcXMg
JFpXSjsiIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKKyAgICAgICAgIiRF
bW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2Vl
biByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBG
aXR6cGF0cmljayBtb2RpZmllcgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICAg
ICAiISFzYWZlX3JldmVyc2U7IgorICAgICAgICAiJFJJICRSSSs7IgorICAgICAgICAiWyRFbW9q
aVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIhIXNhZmVfZm9yd2Fy
ZDsiCisgICAgICAgICIkUkkgJFJJKzsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlW
YXIgJEVtb2ppTW9kc10rOyI7CisjZWxzZQorICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlNb2Rz
XSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIgJEVt
b2ppTW9kc10rOyIKKyAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKKyAgICAgICAgIiEhc2FmZV9m
b3J3YXJkOyI7CisjZW5kaWYKKyAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY0N1
cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoa1J1bGVz
KTsKKyNlbHNlIC8vIFBMQVRGT1JNKElPUykKKyAgICAvLyBVc2UgdGhlIHNwZWNpYWwgVGhhaSBj
aGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBsb2NhbGVzCisgICAgc3RhdGljIFRleHRC
cmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0
ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQor
CisgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY0N1cnNvck1v
dmVtZW50SXRlcmF0b3IsIHN0cmluZyk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJl
TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRM
ZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQoreworICAgIFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVk
UG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CisgICAgaWYgKCFpdGVyYXRvcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZv
ckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExl
bmd0aCk7Cit9CisKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7CisK
KyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS5wdXQoaXRlcmF0b3IpOwor
fQorCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9sb2d1ZSA9CisgICAgIiEhY2hhaW47Igor
ICAgICIhIUxCQ01Ob0NoYWluOyIKKyAgICAiISFsb29rQWhlYWRIYXJkQnJlYWs7IjsKKworc3Rh
dGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNCZWZvcmUgPQorICAgIC8vIGV4cGxpY2l0
bHkgZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lvbnMgcHJpb3IgdG8gNDkgZG9uJ3Qgc3Vw
cG9ydCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6CisgICAgIiRDSiA9
IFsiCisjaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJTSU9O
X01JTk9SX05VTSA+PSA5KQorICAgICI6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0
YXJ0ZXI6IgorI2Vsc2UKKyAgICAiXFx1MzA0MVxcdTMwNDNcXHUzMDQ1XFx1MzA0N1xcdTMwNDlc
XHUzMDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4RVxcdTMwOTVcXHUzMDk2XFx1MzBBMVxc
dTMwQTNcXHUzMEE1XFx1MzBBNyIKKyAgICAiXFx1MzBBOVxcdTMwQzNcXHUzMEUzXFx1MzBFNVxc
dTMwRTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZDIgorICAgICJcXHUzMUYwXFx1MzFGMVxc
dTMxRjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2XFx1MzFGN1xcdTMxRjhcXHUzMUY5XFx1
MzFGQVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVcXHUzMUZGIgorICAgICJcXHVGRjY3XFx1
RkY2OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNcXHVGRjZEXFx1RkY2RVxcdUZGNkZcXHVG
RjcwIgorI2VuZGlmCisgICAgIl07IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdu
bWVudHNDdXN0b21Mb29zZUNKSyA9CisgICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNdOyIK
KyAgICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxcdUZGMDFcXHVGRjFGXTsiCisgICAgIiRJ
RF9TVUIgPSAnJzsiCisgICAgIiRJTl9TVUIgPSBbXFx1MjAyNVxcdTIwMjZdOyIKKyAgICAiJElT
X1NVQiA9IFtcXHUwMDNBXFx1MDAzQl07IgorICAgICIkTlNfU1VCID0gW1xcdTIwM0NcXHUyMDQ3
XFx1MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMwQTBc
XHUzMEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYxQlxcdUZGNjVdOyIKKyAgICAiJFBPX1NV
QiA9IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMwXFx1MjAzMlxcdTIwMzNcXHUyMTAzXFx1
RkYwNVxcdUZGRTBdOyIKKyAgICAiJFBSX1NVQiA9IFtcXHUwMDI0XFx1MDBBM1xcdTAwQTVcXHUy
MEFDXFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07IgorICAgICIkSURfQUREID0gWyRDSiAk
QkFfU1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICROU19TVUIgJFBPX1NVQiAkUFJfU1VCXTsi
CisgICAgIiROU19BREQgPSAnJzsiOworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbUxvb3NlTm9uQ0pLID0KKyAgICAiJEJBX1NVQiA9ICcnOyIKKyAgICAiJEVYX1NV
QiA9ICcnOyIKKyAgICAiJElEX1NVQiA9ICcnOyIKKyAgICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1
MjAyNl07IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMDVcXHUz
MDNCXFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07IgorICAgICIkUE9fU1VCID0gJyc7Igor
ICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0gWyRDSiAkSU5fU1VCICROU19TVUJd
OyIKKyAgICAiJE5TX0FERCA9ICcnOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tTm9ybWFsQ0pLID0KKyAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAxM107
IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSURfU1VC
ID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMUNcXHUz
MEEwXTsiCisgICAgIiRQT19TVUIgPSAnJzsiCisgICAgIiRQUl9TVUIgPSAnJzsiCisgICAgIiRJ
RF9BREQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07IgorICAgICIkTlNfQUREID0gJyc7IjsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksgPQor
ICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VCID0g
Jyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNf
U1VCID0gJyc7IgorICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7IgorICAg
ICIkSURfQUREID0gWyRDSl07IgorICAgICIkTlNfQUREID0gJyc7IjsKKworc3RhdGljIGNvbnN0
IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgPQorICAgICIkQkFfU1VCID0g
Jyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIkSU5f
U1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gJyc7IgorICAg
ICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0gJyc7
IgorICAgICIkTlNfQUREID0gWyRDSl07IjsKKworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3Vz
dG9tU3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSworI2Rl
ZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyAgICAgICAgdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbU5vcm1hbENKSworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVs
dE5vbkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdE5vbkNKSworCitzdGF0aWMg
Y29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVyID0KKyAgICAiJEFJID0gWzpMaW5lQnJl
YWsgPSBBbWJpZ3VvdXM6XTsiCisgICAgIiRBTCA9IFs6TGluZUJyZWFrID0gQWxwaGFiZXRpYzpd
OyIKKyAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJlYWtfQWZ0ZXI6XSAtICRCQV9TVUJdOyIK
KyAgICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19CZWZvcmU6XTsiCisgICAgIiRCSyA9IFs6
TGluZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07IgorICAgICIkQjIgPSBbOkxpbmVCcmVhayA9
IEJyZWFrX0JvdGg6XTsiCisgICAgIiRDQiA9IFs6TGluZUJyZWFrID0gQ29udGluZ2VudF9CcmVh
azpdOyIKKyAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QdW5jdHVhdGlvbjpdOyIKKyAg
ICAiJENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdfTWFyazpdOyIKKyAgICAiJENQID0gWzpM
aW5lQnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIKKyAgICAiJENSID0gWzpMaW5lQnJlYWsg
PSBDYXJyaWFnZV9SZXR1cm46XTsiCisgICAgIiRFWCA9IFtbOkxpbmVCcmVhayA9IEV4Y2xhbWF0
aW9uOl0gLSAkRVhfU1VCXTsiCisgICAgIiRHTCA9IFs6TGluZUJyZWFrID0gR2x1ZTpdOyIKKyNp
ZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlOT1Jf
TlVNID49IDkpCisgICAgIiRITCA9IFs6TGluZUJyZWFrID0gSGVicmV3X0xldHRlcjpdOyIKKyNl
bHNlCisgICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpMZXR0ZXI6XV07IgorI2VuZGlmCisgICAg
IiRIWSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07IgorICAgICIkSDIgPSBbOkxpbmVCcmVhayA9
IEgyOl07IgorICAgICIkSDMgPSBbOkxpbmVCcmVhayA9IEgzOl07IgorICAgICIkSUQgPSBbW1tb
OkxpbmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pdICRJRF9BRERdIC0gJElEX1NVQl07Igor
ICAgICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFyYWJsZTpdIC0gJElOX1NVQl07IgorICAg
ICIkSVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1lcmljOl0gLSAkSVNfU1VCXTsiCisgICAg
IiRKTCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCisgICAgIiRKViA9IFs6TGluZUJyZWFrID0gSlY6
XTsiCisgICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6XTsiCisgICAgIiRMRiA9IFs6TGluZUJy
ZWFrID0gTGluZV9GZWVkOl07IgorICAgICIkTkwgPSBbOkxpbmVCcmVhayA9IE5leHRfTGluZTpd
OyIKKyAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBOb25zdGFydGVyOl0gLSAkQ0pdICROU19B
RERdIC0gJE5TX1NVQl07IgorICAgICIkTlUgPSBbOkxpbmVCcmVhayA9IE51bWVyaWM6XTsiCisg
ICAgIiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5jdHVhdGlvbjpdOyIKKyAgICAiJFBPID0g
W1s6TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0gLSAkUE9fU1VCXTsiCisgICAgIiRQUiA9
IFtbOkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0gLSAkUFJfU1VCXTsiCisgICAgIiRRVSA9
IFs6TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgorICAgICIkUkkgPSBbXFxVMDAwMUYxRTYtXFxV
MDAwMUYxRkZdOyIKKyAgICAiJFNBID0gWzpMaW5lQnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6XTsi
CisgICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9nYXRlOl07IgorICAgICIkU1AgPSBbOkxp
bmVCcmVhayA9IFNwYWNlOl07IgorICAgICIkU1kgPSBbOkxpbmVCcmVhayA9IEJyZWFrX1N5bWJv
bHM6XTsiCisgICAgIiRXSiA9IFs6TGluZUJyZWFrID0gV29yZF9Kb2luZXI6XTsiCisgICAgIiRY
WCA9IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKKyAgICAiJFpXID0gWzpMaW5lQnJlYWsgPSBa
V1NwYWNlOl07IgorICAgICIkWldKID0gXFx1MjAwRDsiCisgICAgIiRFbW9qaVZhciA9IFxcdUZF
MEY7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkRW1vamlGb3JTZXFzID0g
W1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEIg
XFxVMDAwMUY1RThdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI2RjkgXFx1
MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFG
M0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAw
MDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxc
VTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3
IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAwMDFG
NTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAw
MDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4XSA7
IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZWxzZQorICAgICIk
RW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0
OEJdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1MjcwQyBcXFUw
MDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAxRjNDQSBc
XFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAxRjQ2
Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUwMDAx
RjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBcXFUw
MDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBc
XFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIgLy8gRW1v
amkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycworI2VuZGlmCisgICAgIiRFbW9qaU1v
ZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIKKyAgICAiJGRpY3Rpb25hcnkgPSBbOkxp
bmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKKyAgICAiJEFMUGx1cyA9IFskQUwgJEFJICRT
QSAkU0cgJFhYXTsiCisgICAgIiRBTGNtID0gJEFMUGx1cyAkQ00qOyIKKyAgICAiJEJBY20gPSAk
QkEgJENNKjsiCisgICAgIiRCQmNtID0gJEJCICRDTSo7IgorICAgICIkQjJjbSA9ICRCMiAkQ00q
OyIKKyAgICAiJENMY20gPSAkQ0wgJENNKjsiCisgICAgIiRDUGNtID0gJENQICRDTSo7IgorICAg
ICIkRVhjbSA9ICRFWCAkQ00qOyIKKyAgICAiJEdMY20gPSAkR0wgJENNKjsiCisgICAgIiRITGNt
ID0gJEhMICRDTSo7IgorICAgICIkSFljbSA9ICRIWSAkQ00qOyIKKyAgICAiJEgyY20gPSAkSDIg
JENNKjsiCisgICAgIiRIM2NtID0gJEgzICRDTSo7IgorICAgICIkSURjbSA9ICRJRCAkQ00qOyIK
KyAgICAiJElOY20gPSAkSU4gJENNKjsiCisgICAgIiRJU2NtID0gJElTICRDTSo7IgorICAgICIk
SkxjbSA9ICRKTCAkQ00qOyIKKyAgICAiJEpWY20gPSAkSlYgJENNKjsiCisgICAgIiRKVGNtID0g
JEpUICRDTSo7IgorICAgICIkTlNjbSA9ICROUyAkQ00qOyIKKyAgICAiJE5VY20gPSAkTlUgJENN
KjsiCisgICAgIiRPUGNtID0gJE9QICRDTSo7IgorICAgICIkUE9jbSA9ICRQTyAkQ00qOyIKKyAg
ICAiJFBSY20gPSAkUFIgJENNKjsiCisgICAgIiRRVWNtID0gJFFVICRDTSo7IgorICAgICIkUklj
bSA9ICRRVSAkQ00qOyIKKyAgICAiJFNZY20gPSAkU1kgJENNKjsiCisgICAgIiRXSmNtID0gJFdK
ICRDTSo7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0Rm9yd2FyZCA9CisgICAgIiEhZm9y
d2FyZDsiCisgICAgIiRDQU5fQ00gPSBbXiRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07Igor
ICAgICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKKyAgICAiJEFM
X0ZPTExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCisgICAgIiRBTF9GT0xM
T1dfQ00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kgJFdKICRHTCAkT1AgJFFVICRCQSAkSFkg
JE5TICRJTiAkTlUgJEFMUGx1c107IgorICAgICIkQUxfRk9MTE9XID0gWyRBTF9GT0xMT1dfTk9D
TSAkQUxfRk9MTE9XX0NNXTsiCisgICAgIiRMQjRCcmVha3MgPSBbJEJLICRDUiAkTEYgJE5MXTsi
CisgICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1IgJExGICROTF07IgorICAgICIkTEI4QnJl
YWtzID0gWyRMQjRCcmVha3MgJFpXXTsiCisgICAgIiRMQjhOb25CcmVha3MgPSBbWyRMQjROb25C
cmVha3NdIC0gWyRaV11dOyIKKyAgICAiJExCMThOb25CcmVha3MgPSBbJExCOE5vbkJyZWFrcyAt
IFskU1BdXTsiCisgICAgIiRMQjE4QnJlYWtzID0gWyRMQjhCcmVha3MgJFNQXTsiCisgICAgIiRM
QjIwTm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0gJENCXTsiCisgICAgIiRBTFBsdXMgJENN
KzsiCisgICAgIiRCQSAkQ00rOyIKKyAgICAiJEJCICRDTSs7IgorICAgICIkQjIgJENNKzsiCisg
ICAgIiRDTCAkQ00rOyIKKyAgICAiJENQICRDTSs7IgorICAgICIkRVggJENNKzsiCisgICAgIiRH
TCAkQ00rOyIKKyAgICAiJEhMICRDTSs7IgorICAgICIkSFkgJENNKzsiCisgICAgIiRIMiAkQ00r
OyIKKyAgICAiJEgzICRDTSs7IgorICAgICIkSUQgJENNKzsiCisgICAgIiRJTiAkQ00rOyIKKyAg
ICAiJElTICRDTSs7IgorICAgICIkSkwgJENNKzsiCisgICAgIiRKViAkQ00rOyIKKyAgICAiJEpU
ICRDTSs7IgorICAgICIkTlMgJENNKzsiCisgICAgIiROVSAkQ00rOyIKKyAgICAiJE9QICRDTSs7
IgorICAgICIkUE8gJENNKzsiCisgICAgIiRQUiAkQ00rOyIKKyAgICAiJFFVICRDTSs7IgorICAg
ICIkU1kgJENNKzsiCisgICAgIiRXSiAkQ00rOyIKKyAgICAiJENSICRMRiB7MTAwfTsiCisgICAg
IiRMQjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07IgorICAgICIkQ0FOX0NNICRDTSogJExC
NEJyZWFrcyB7MTAwfTsiCisgICAgIiRDTSsgJExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRMQjRO
b25CcmVha3MgWyRTUCAkWlddOyIKKyAgICAiJENBTl9DTSAkQ00qIFskU1AgJFpXXTsiCisgICAg
IiRDTSsgWyRTUCAkWlddOyIKKyAgICAiJEVtb2ppRm9yU2VxcyAkRW1vamlWYXI/ICRFbW9qaU1v
ZHM/ICRaV0ogJEVtb2ppRm9yU2VxczsiCisgICAgIiRDQU5fQ00gJENNKzsiCisgICAgIiRDTSs7
IgorICAgICIkQ0FOX0NNICRDTSogJFdKY207IgorICAgICIkTEI4Tm9uQnJlYWtzICRXSmNtOyIK
KyAgICAiJENNKyAkV0pjbTsiCisgICAgIiRXSmNtICRDQU5UX0NNOyIKKyAgICAiJFdKY20gJENB
Tl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENBTlRf
Q007IgorICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRTUCAkQkEgJEhZXV0gJENNKiAkR0xjbTsi
CisgICAgIiRDTSsgR0xjbTsiCisgICAgIiRMQjhOb25CcmVha3MgJENMOyIKKyAgICAiJENBTl9D
TSAkQ00qICRDTDsiCisgICAgIiRDTSsgJENMOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkQ1A7Igor
ICAgICIkQ0FOX0NNICRDTSogJENQOyIKKyAgICAiJENNKyAkQ1A7IgorICAgICIkTEI4Tm9uQnJl
YWtzICRFWDsiCisgICAgIiRDQU5fQ00gJENNKiAkRVg7IgorICAgICIkQ00rICRFWDsiCisgICAg
IiRMQjhOb25CcmVha3MgJElTOyIKKyAgICAiJENBTl9DTSAkQ00qICRJUzsiCisgICAgIiRDTSsg
JElTOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkU1k7IgorICAgICIkQ0FOX0NNICRDTSogJFNZOyIK
KyAgICAiJENNKyAkU1k7IgorICAgICIkT1BjbSAkU1AqICRDQU5fQ00gJENNKjsiCisgICAgIiRP
UGNtICRTUCogJENBTlRfQ007IgorICAgICIkT1BjbSAkU1ArICRDTSsgJEFMX0ZPTExPVz87Igor
ICAgICIkUVVjbSAkU1AqICRPUGNtOyIKKyAgICAiKCRDTGNtIHwgJENQY20pICRTUCogJE5TY207
IgorICAgICIkQjJjbSAkU1AqICRCMmNtOyIKKyAgICAiJExCMThOb25CcmVha3MgJENNKiAkUVVj
bTsiCisgICAgIiRDTSsgJFFVY207IgorICAgICIkUVVjbSAuPzsiCisgICAgIiRRVWNtICRMQjE4
Tm9uQnJlYWtzICRDTSo7IgorICAgICIkTEIyME5vbkJyZWFrcyAkQ00qICgkQkFjbSB8ICRIWWNt
IHwgJE5TY20pOyAiCisgICAgIiRCQmNtIFteJENCXTsiCisgICAgIiRCQmNtICRMQjIwTm9uQnJl
YWtzICRDTSo7IgorICAgICIkSExjbSAoJEhZY20gfCAkQkFjbSkgW14kQ0JdPzsiCisgICAgIigk
QUxjbSB8ICRITGNtKSAkSU5jbTsiCisgICAgIiRDTSsgJElOY207IgorICAgICIkSURjbSAkSU5j
bTsiCisgICAgIiRJTmNtICRJTmNtOyIKKyAgICAiJE5VY20gJElOY207IgorICAgICIkSURjbSAk
UE9jbTsiCisgICAgIiRBTGNtICROVWNtOyIKKyAgICAiJEhMY20gJE5VY207IgorICAgICIkQ00r
ICROVWNtOyIKKyAgICAiJE5VY20gJEFMY207IgorICAgICIkTlVjbSAkSExjbTsiCisgICAgIiRQ
UmNtICRJRGNtOyIKKyAgICAiJFBSY20gKCRBTGNtIHwgJEhMY20pOyIKKyAgICAiJFBPY20gKCRB
TGNtIHwgJEhMY20pOyIKKyAgICAiKCRQUmNtIHwgJFBPY20pPyAoJE9QY20gfCAkSFljbSk/ICRO
VWNtICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENMY20gfCAkQ1BjbSk/ICgkUFJjbSB8ICRQ
T2NtKT87IgorICAgICIkSkxjbSAoJEpMY20gfCAkSlZjbSB8ICRIMmNtIHwgJEgzY20pOyIKKyAg
ICAiKCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNtKTsiCisgICAgIigkSlRjbSB8ICRIM2Nt
KSAkSlRjbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAk
SU5jbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAkUE9j
bTsiCisgICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKTsi
CisgICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAkSExjbSk7IgorICAgICIkQ00rICgkQUxj
bSB8ICRITGNtKTsiCisgICAgIiRJU2NtICgkQUxjbSB8ICRITGNtKTsiCisgICAgIigkQUxjbSB8
ICRITGNtIHwgJE5VY20pICRPUGNtOyIKKyAgICAiJENNKyAkT1BjbTsiCisgICAgIiRDUGNtICgk
QUxjbSB8ICRITGNtIHwgJE5VY20pOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAg
ICAiJFJJY20gJFJJY207IgorI2VuZGlmCisgICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFyPyAk
RW1vamlNb2RzOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFJldmVyc2UgPQorICAgICIh
IXJldmVyc2U7IgorICAgICIkQ00rICRBTFBsdXM7IgorICAgICIkQ00rICRCQTsiCisgICAgIiRD
TSsgJEJCOyIKKyAgICAiJENNKyAkQjI7IgorICAgICIkQ00rICRDTDsiCisgICAgIiRDTSsgJENQ
OyIKKyAgICAiJENNKyAkRVg7IgorICAgICIkQ00rICRHTDsiCisgICAgIiRDTSsgJEhMOyIKKyAg
ICAiJENNKyAkSFk7IgorICAgICIkQ00rICRIMjsiCisgICAgIiRDTSsgJEgzOyIKKyAgICAiJENN
KyAkSUQ7IgorICAgICIkQ00rICRJTjsiCisgICAgIiRDTSsgJElTOyIKKyAgICAiJENNKyAkSkw7
IgorICAgICIkQ00rICRKVjsiCisgICAgIiRDTSsgJEpUOyIKKyAgICAiJENNKyAkTlM7IgorICAg
ICIkQ00rICROVTsiCisgICAgIiRDTSsgJE9QOyIKKyAgICAiJENNKyAkUE87IgorICAgICIkQ00r
ICRQUjsiCisgICAgIiRDTSsgJFFVOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAg
ICAiJENNKyAkUkk7IgorI2VuZGlmCisgICAgIiRDTSsgJFNZOyIKKyAgICAiJENNKyAkV0o7Igor
ICAgICIkQ00rOyIKKyAgICAiJEFMX0ZPTExPVyAkQ00rIC8gKFskQksgJENSICRMRiAkTkwgJFpX
IHtlb2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRDTSogKFteJE9QICRDTSAkU1BdIHwgWyRB
TCB7ZW9mfV0pKTsiCisgICAgIlskUFJdIC8gJENNKyBbJEJLICRDUiAkTEYgJE5MICRaVyAkU1Ag
e2VvZn1dOyIKKyAgICAiJExCNEJyZWFrcyBbJExCNE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJExC
NEJyZWFrcyAkQ00rICRDQU5fQ007IgorICAgICIkTEYgJENSOyIKKyAgICAiWyRTUCAkWlddIFsk
TEI0Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJFNQICRaV10gJENNKyAkQ0FOX0NNOyIKKyAgICAi
JEVtb2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRFbW9qaVZhcj8gJEVtb2ppRm9yU2Vxczsi
CisgICAgIiRDTSsgJENBTl9DTTsiCisgICAgIiRDTSogJFdKICRDTSogJENBTl9DTTsiCisgICAg
IiRDTSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIkQ0FOVF9DTSAkQ00qICRXSjsi
CisgICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCisgICAgIiRDTSogJEdMICRDTSogWyRMQjhO
b25CcmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKKyAgICAiJENBTlRfQ00gJENNKiAkR0w7Igor
ICAgICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgorICAgICIkQ0wgJENNKyAkQ0FOX0NNOyIKKyAg
ICAiJENQICRDTSsgJENBTl9DTTsiCisgICAgIiRFWCAkQ00rICRDQU5fQ007IgorICAgICIkSVMg
JENNKyAkQ0FOX0NNOyIKKyAgICAiJFNZICRDTSsgJENBTl9DTTsiCisgICAgIiRDTCBbJExCOE5v
bkJyZWFrcy0kQ01dOyIKKyAgICAiJENQIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIkRVgg
WyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRJUyBbJExCOE5vbkJyZWFrcy0kQ01dOyIKKyAg
ICAiJFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJENMICRDUCAkRVggJElTICRTWV0g
JENNKyAkU1ArICRDTSogJE9QOyAiCisgICAgIiRDTSogJENBTl9DTSAkU1AqICRDTSogJE9QOyIK
KyAgICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCisgICAgIiRBTF9GT0xMT1c/ICRDTSsgJFNQ
ICRTUCogJENNKiAkT1A7IgorICAgICIkQUxfRk9MTE9XX05PQ00gJENNKyAkU1ArICRDTSogJE9Q
OyIKKyAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsgJFNQKyAkQ00qICRPUDsiCisgICAgIiRT
WSAkQ00gJFNQKyAkT1A7IgorICAgICIkQ00qICRPUCAkU1AqICRDTSogJFFVOyIKKyAgICAiJENN
KiAkTlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAgICAiJENNKiAkQjIgJFNQKiAkQ00qICRC
MjsiCisgICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsiCisgICAgIiRDTSogJFFVICRMQjE4Tm9u
QnJlYWtzOyIKKyAgICAiJENNKiAkQ0FOX0NNICRDTSogJFFVOyIKKyAgICAiJENBTlRfQ00gJENN
KiAkUVU7IgorICAgICIkQ00qICgkQkEgfCAkSFkgfCAkTlMpICRDTSogWyRMQjIwTm9uQnJlYWtz
LSRDTV07IgorICAgICIkQ00qIFskTEIyME5vbkJyZWFrcy0kQ01dICRDTSogJEJCOyIKKyAgICAi
W14kQ0JdICRDTSogJEJCOyIKKyAgICAiW14kQ0JdICRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7
IgorICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCisgICAgIiRDTSogJElOICRD
TSogJElEOyIKKyAgICAiJENNKiAkSU4gJENNKiAkSU47IgorICAgICIkQ00qICRJTiAkQ00qICRO
VTsiCisgICAgIiRDTSogJFBPICRDTSogJElEOyIKKyAgICAiJENNKiAkTlUgJENNKiAoJEFMUGx1
cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICROVTsiCisgICAgIiRD
TSogJElEICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUFI7Igor
ICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQTzsiCisgICAgIigkQ00qICgkUFIgfCAk
UE8pKT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAoJE5VIHwgJElTIHwgJFNZKSkqICRDTSog
JE5VICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQUiB8ICRQTykpPzsiCisgICAgIiRDTSog
KCRIMyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7IgorICAgICIkQ00qICgkSlQgfCAkSlYp
ICRDTSogKCRIMiB8ICRKVik7IgorICAgICIkQ00qICRKVCAkQ00qICgkSDMgfCAkSlQpOyIKKyAg
ICAiJENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCisgICAgIiRD
TSogJFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCk7IgorICAgICIkQ00qICgk
SDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFMUGx1
cyB8ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhM
KSAkQ00qICRJUzsiCisgICAgIiRDTSogJE9QICRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUpOyIK
KyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkgJENNKiAkQ1A7IgorI2lmIEFERElUSU9O
QUxfRU1PSklfU1VQUE9SVAorICAgICIkQ00qICRSSSAkQ00qICRSSTsiCisjZW5kaWYKKyAgICAi
JEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IjsKKworc3RhdGljIGNvbnN0IGNo
YXIqIHVheDE0U2FmZUZvcndhcmQgPQorICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgIlskQ00g
JE9QICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAkU1AgJGRpY3Rpb25hcnldKyBbXiRDTSAk
T1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRkaWN0aW9uYXJ5XTsiCisgICAgIiRkaWN0
aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFNhZmVSZXZl
cnNlID0KKyAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICIkQ00rIFteJENNICRCSyAkQ1IgJExG
ICROTCAkWlcgJFNQXTsiCisgICAgIiRDTSsgJFNQIC8gLjsiCisgICAgIiRTUCsgJENNKiAkT1A7
IgorICAgICIkU1ArICRDTSogJFFVOyIKKyAgICAiJFNQKyAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAg
ICAiJFNQKyAkQ00qICRCMjsiCisgICAgIiRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7IgorICAg
ICIoJENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIKKyAgICAiKCRDTCB8ICRDUCkgJENNKiAo
JE5VIHwgJElTIHwgJFNZKTsiCisgICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0
YXRpYyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMoTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgU3RyaW5nQnVpbGRlciBydWxlc0J1aWxkZXI7
CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFByb2xvZ3VlKTsKKyAgICBydWxlc0J1aWxk
ZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUpOworICAgIHN3aXRjaCAobW9kZSkgewor
ICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6CisgICAgICAgIHJ1bGVzQnVpbGRl
ci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyA6IHVheDE0
QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgorICAgICAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLIDogdWF4MTRBc3Np
Z25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5l
QnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxDSksgOiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tTm9ybWFsTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lQnJl
YWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChp
c0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tU3RyaWN0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJ1bGVzQnVp
bGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVyKTsKKyAgICBydWxlc0J1aWxkZXIuYXBw
ZW5kKHVheDE0Rm9yd2FyZCk7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFJldmVyc2Up
OworICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRTYWZlRm9yd2FyZCk7CisgICAgcnVsZXNC
dWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsKKyAgICByZXR1cm4gcnVsZXNCdWlsZGVy
LnRvU3RyaW5nKCk7Cit9CisKKy8vIFJlY29nbml6ZSBCQ1A0NyBjb21wbGlhbnQgcHJpbWFyeSBs
YW5ndWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tvJworLy8gKGluIGFueSBjb21iaW5hdGlv
biBvZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBzdWJ0YWdzLiBEb24ndAorLy8gcmVj
b2duaXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6aG8nLCAnanBuJywgb3IgJ2tvcicgc2lu
Y2UgQkNQNDcKKy8vIHJlcXVpcmVzIHVzZSBvZiBzaG9ydGVzdCBsYW5ndWFnZSB0YWcuCitib29s
IGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQoreworICAgIHNpemVfdCBs
ZW5ndGggPSBsb2NhbGUubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvIGMxID0gbG9jYWxlWzBdOworICAgIGF1dG8gYzIgPSBsb2Nh
bGVbMV07CisgICAgYXV0byBjMyA9IGxlbmd0aCA9PSAyID8gMCA6IGxvY2FsZVsyXTsKKyAgICBp
ZiAoIWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycgfHwgYzMgPT0gJ0AnKSB7CisgICAgICAg
IGlmIChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQorICAgICAgICAgICAgcmV0dXJuIGMyID09ICdo
JyB8fCBjMiA9PSAnSCc7CisgICAgICAgIGlmIChjMSA9PSAnaicgfHwgYzEgPT0gJ0onKQorICAg
ICAgICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9PSAnQSc7CisgICAgICAgIGlmIChjMSA9
PSAnaycgfHwgYzEgPT0gJ0snKQorICAgICAgICAgICAgcmV0dXJuIGMyID09ICdvJyB8fCBjMiA9
PSAnTyc7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworVGV4dEJyZWFrSXRlcmF0b3Iq
IG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJy
ZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgVUJyZWFrSXRlcmF0b3Iq
IHVicmtJdGVyOworICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAg
ICBib29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNFbXB0eSgpOworICAgIGlmIChtb2RlID09
IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICB1YnJrSXRlciA9IHVicmtfb3Bl
bihVQlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSA6
IGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAmb3BlblN0YXR1cyk7CisgICAg
ZWxzZSB7CisgICAgICAgIFVQYXJzZUVycm9yIHBhcnNlU3RhdHVzOworICAgICAgICBhdXRvIHJ1
bGVzID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMobW9kZSwgaXNDSkspOworICAgICAgICB1
YnJrSXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1ZpZXcocnVsZXMpLnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1
cyk7CisgICAgfQorICAgIC8vIGxvY2FsZSBjb21lcyBmcm9tIGEgd2ViIHBhZ2UgYW5kIGl0IGNh
biBiZSBpbnZhbGlkLCBsZWFkaW5nIElDVQorICAgIC8vIHRvIGZhaWwsIGluIHdoaWNoIGNhc2Ug
d2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICBpZiAoIWxvY2FsZUlzRW1w
dHkgJiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIG9wZW5TdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgY3VycmVu
dFRleHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKKyAgICB9CisKKyAgICBp
ZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIExPR19FUlJPUigidWJya19vcGVu
IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVy
YXRvcio+KHVicmtJdGVyKTsKK30KKwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IpCit7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKKyAgICBBU1NF
UlQodWJya0l0ZXIpOworICAgIHVicmtfY2xvc2UodWJya0l0ZXIpOworICAgIGl0ZXJhdG9yID0g
bnVsbHB0cjsKK30KKworc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yOworCitzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3YXBOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBlY3RlZCwg
VGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQoreworICAgIHJldHVybiBXVEY6OndlYWtDb21w
YXJlQW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciwgZXhwZWN0ZWQsIG5l
d1ZhbHVlKTsKK30KKworTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBtX2l0ZXJh
dG9yID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKKworICAgIGJvb2wgY3JlYXRl
ZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7CisgICAgaWYgKCFjcmVhdGVkSXRlcmF0b3Ip
CisgICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIp
OworICAgIGlmICghbV9pdGVyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pdGVyYXRv
ciA9IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRvciwgc3RyaW5nKTsKK30KKworTm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoKQoreworICAgIGlmICghY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yKDAsIG1faXRlcmF0b3IpKQorICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7Cit9CisKKworLy8gSXRlcmF0b3IgaW1w
bGVtZW5hdGlvbi4KKworaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvcikKK3sKKyAgICByZXR1cm4gdWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oaXRlcmF0b3IpKTsKK30KKworaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX2xhc3QocmVpbnRlcnByZXRfY2Fz
dDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9CisKK2ludCB0ZXh0QnJlYWtOZXh0KFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19uZXh0KHJlaW50
ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitpbnQgdGV4dEJy
ZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1
YnJrX3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikp
OworfQorCitpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciwgaW50IHBvcykKK3sKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcocmVpbnRlcnByZXRfY2Fz
dDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zKTsKK30KKworaW50IHRleHRCcmVha0Zv
bGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCit7CisgICAgcmV0
dXJuIHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvciksIHBvcyk7Cit9CisKK2ludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19jdXJyZW50KHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitib29sIGlzVGV4dEJyZWFrKFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0aW9uKQoreworICAgIHJldHVybiB1YnJr
X2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwg
cG9zaXRpb24pOworfQorCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciog
aXRlcmF0b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMocmVp
bnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7CisgICAgcmV0dXJuIHJ1
bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisKK3Vuc2lnbmVkIG51bUdyYXBoZW1lQ2x1
c3RlcnMoY29uc3QgU3RyaW5nJiBzKQoreworICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IHMu
bGVuZ3RoKCk7CisgICAgCisgICAgaWYgKCFzdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVybiAw
OworCisgICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlz
IENSIExGCisgICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCisgICAgICAg
IHJldHVybiBzdHJpbmdMZW5ndGg7CisKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yIGl0KHMpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisK
KyAgICB1bnNpZ25lZCBudW0gPSAwOworICAgIHdoaWxlICh0ZXh0QnJlYWtOZXh0KGl0KSAhPSBU
ZXh0QnJlYWtEb25lKQorICAgICAgICArK251bTsKKyAgICByZXR1cm4gbnVtOworfQorCit1bnNp
Z25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHMs
IHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCit7CisgICAgdW5zaWduZWQgc3RyaW5nTGVu
Z3RoID0gcy5sZW5ndGgoKTsKKworICAgIGlmICghc3RyaW5nTGVuZ3RoKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3Rl
ciBpcyBDUiBMRgorICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQorICAg
ICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsK
KworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7CisgICAgaWYgKCFp
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVDbHVz
dGVycyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR3JhcGhlbWVDbHVzdGVy
czsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0QnJlYWtOZXh0KGl0KSA9PSBUZXh0QnJlYWtEb25l
KQorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKKyAgICB9CisgICAgcmV0dXJuIHRl
eHRCcmVha0N1cnJlbnQoaXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTQ1MzQ2OGZiOGNjMjNkNjNm
YTJjM2EzNDg1MTYwNGI2NmI1ODAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9yX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3Jf
aAorCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVGV4dEJyZWFrSXRl
cmF0b3I7CisKKy8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkgdW50
aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNxdWly
ZUxpbmVCcmVha0l0ZXJhdG9yLgorCitlbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7CisgICAg
TGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCisgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFY
MTRMb29zZSwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKKyAgICBMaW5l
QnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKK307CisKKy8vIFRoaXMgaXMgc2ltaWxhciB0
byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9zdCBjYXNlcywgYnV0IGlzIHN1YmplY3Qg
dG8KKy8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBPbmUgbm90YWJsZSBleGFtcGxlIHdoZXJl
IHRoaXMgY2FuIGJlIGRpZmZlcmVudAorLy8gZnJvbSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3Ig
aXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBidWcgMjQzNDIuCisvLyBVc2UgdGhpcyBm
b3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KK1dURl9FWFBP
UlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJp
bmdWaWV3KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVy
YXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOworCitXVEZfRVhQT1JUX1BS
SVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdW
aWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4
dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJv
b2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJh
dG9yKFRleHRCcmVha0l0ZXJhdG9yKik7CitUZXh0QnJlYWtJdGVyYXRvciogb3BlbkxpbmVCcmVh
a0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1v
ZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0
ZXJhdG9yKiYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0ZpcnN0KFRleHRC
cmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0xhc3QoVGV4
dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrTmV4dChU
ZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtQcmV2
aW91cyhUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJl
YWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRl
eHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitXVEZfRVhQT1JUX1BS
SVZBVEUgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciosIGlu
dCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRl
cmF0b3IqKTsKKworY29uc3QgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKKworV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisKK2NsYXNzIExh
enlMaW5lQnJlYWtJdGVyYXRvciB7CitwdWJsaWM6CisgICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9y
KCkKKyAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCisgICAgICAgICwgbV9jYWNoZWRQcmlv
ckNvbnRleHQobnVsbHB0cikKKyAgICAgICAgLCBtX21vZGUoTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTQpCisgICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKKyAgICAgICAg
LCBtX2lzQ0pLKGZhbHNlKQorICAgIHsKKyAgICAgICAgcmVzZXRQcmlvckNvbnRleHQoKTsKKyAg
ICB9CisKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
IG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKKyAgICAgICAgOiBtX3N0cmluZyhz
dHJpbmcpCisgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQorICAgICAgICAsIG1faXRlcmF0b3Io
bnVsbHB0cikKKyAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQorICAgICAg
ICAsIG1fbW9kZShtb2RlKQorICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoKDAp
CisgICAgeworICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOworICAgICAgICBtX2lzQ0pLID0g
aXNDSktMb2NhbGUobG9jYWxlKTsKKyAgICB9CisKKyAgICB+TGF6eUxpbmVCcmVha0l0ZXJhdG9y
KCkKKyAgICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFzZUxp
bmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgIH0KKworICAgIFN0cmluZyBzdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIGJvb2wgaXNMb29zZUNKS01vZGUoKSBj
b25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGVV
QVgxNExvb3NlOyB9CisKKyAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09
IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwor
ICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07CisgICAgfQorCisgICAgVUNoYXIgc2Vj
b25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJU
KFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9y
X3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICByZXR1cm4gbV9wcmlv
ckNvbnRleHRbMF07CisgICAgfQorCisgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIgbGFz
dCwgVUNoYXIgc2Vjb25kVG9MYXN0KQorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RG
X0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5l
eHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIG1fcHJpb3JDb250ZXh0WzBd
ID0gc2Vjb25kVG9MYXN0OworICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7CisgICAg
fQorCisgICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQoVUNoYXIgbGFzdCkKKyAgICB7CisgICAg
ICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIs
IFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOworICAg
ICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JDb250ZXh0WzFdOworICAgICAgICBtX3By
aW9yQ29udGV4dFsxXSA9IGxhc3Q7CisgICAgfQorCisgICAgdm9pZCByZXNldFByaW9yQ29udGV4
dCgpCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJp
b3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRl
eHRfbGVuZ3RoKTsKKyAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOworICAgICAgICBtX3By
aW9yQ29udGV4dFsxXSA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCA9
IDA7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRl
eHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5n
dGgpOworICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMV0pIHsKKyAgICAgICAgICAgICsrcHJp
b3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzBdKQorICAg
ICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgfQorCisgICAgLy8gT2J0YWluIHRleHQgYnJl
YWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJh
dG9yIGlzIChvciBoYXMgYmVlbikKKyAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZp
b3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1
c2luZworICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5
LgorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRl
eHRDYXBhY2l0eSk7CisgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNv
bnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlv
ckNvbnRleHRMZW5ndGhdIDogMDsKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yKSB7CisgICAgICAg
ICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKG1fc3RyaW5nLCBtX2xv
Y2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsIG1fbW9kZSwgbV9pc0NKSyk7
CisgICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dDsKKyAgICAg
ICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gcHJpb3JDb250ZXh0TGVuZ3RoOwor
ICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAhPSBtX2NhY2hlZFByaW9yQ29udGV4dCB8
fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgpIHsKKyAg
ICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKG1fc3RyaW5nLCBtX2xvY2Fs
ZSwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JDb250ZXh0TGVu
Z3RoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKKyAgICB9CisKKyAg
ICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAgICB7
CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVha0l0
ZXJhdG9yKG1faXRlcmF0b3IpOworICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsKKyAgICAgICAg
bV9sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIG1faXRlcmF0b3IgPSBudWxscHRyOworICAgICAg
ICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fbW9kZSA9IG1vZGU7
CisgICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOworICAgICAgICBtX2NhY2hl
ZFByaW9yQ29udGV4dExlbmd0aCA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9IDI7CisgICAgU3RyaW5nIG1fc3Ry
aW5nOworICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKKyAgICBUZXh0QnJlYWtJdGVyYXRvciog
bV9pdGVyYXRvcjsKKyAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQ7CisgICAg
TGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKKyAgICB1bnNpZ25lZCBtX2NhY2hlZFByaW9y
Q29udGV4dExlbmd0aDsKKyAgICBVQ2hhciBtX3ByaW9yQ29udGV4dFtwcmlvckNvbnRleHRDYXBh
Y2l0eV07CisgICAgYm9vbCBtX2lzQ0pLOworfTsKKworLy8gSXRlcmF0ZXMgb3ZlciAiZXh0ZW5k
ZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCisvLyBOb3RlIHRo
YXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBiZSBsZXNzIHNvcGhpc3RpY2F0ZWQgLSBl
LmcuIElDVSBwcmlvciB0bworLy8gdmVyc2lvbiA0LjAgb25seSBzdXBwb3J0cyAibGVnYWN5IGdy
YXBoZW1lIGNsdXN0ZXJzIi4KKy8vIFVzZSB0aGlzIGZvciBnZW5lcmFsIHRleHQgcHJvY2Vzc2lu
ZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KKworY2xhc3MgTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcik7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCk7CisKKyAgICBvcGVyYXRvciBU
ZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9CisKK3ByaXZh
dGU6CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3I7Cit9OworCisvLyBDb3VudHMg
dGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4gQSBzdXJyb2dhdGUgcGFpciBvciBhIHNl
cXVlbmNlCisvLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hhcmFjdGVyIGFuZCBmb2xsb3dpbmcgY29t
YmluaW5nIGNoYXJhY3RlcnMgaXMKKy8vIGNvdW50ZWQgYXMgMSBncmFwaGVtZSBjbHVzdGVyLgor
V1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3Ry
aW5nJik7CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxsIGJl
IGxlc3MgdGhhbiBvciBlcXVhbCB0bworLy8gdGhlIHNwZWNpZmllZCBncmFwaGVtZSBjbHVzdGVy
IGxlbmd0aC4KK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFw
aGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCk7CisKK30KKwordXNpbmcg
V1RGOjpMaW5lQnJlYWtJdGVyYXRvck1vZGU7Cit1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9y
TW9kZVVBWDE0OwordXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6
Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OlRleHRCcmVha0Rv
bmU7Cit1c2luZyBXVEY6OlRleHRCcmVha0l0ZXJhdG9yOworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWNkNDU1OWRkNmNiNWUwOWNiN2NlNDNmYThhNmFkNjkyOTE2N2YwMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5o
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVV9oCisKKy8vIEZJWE1F
OiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9jYWxlcyBmb3IgSUNVLCBub3QganVzdCBmb3IgdGV4
dCBicmVha2luZywKKy8vIHRoaXMgZmlsZSBhbmQgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb24g
ZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQT1JU
X1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCk7Citjb25zdCBjaGFy
KiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKKworfQorCit1c2luZyBXVEY6OmN1cnJlbnRT
ZWFyY2hMb2NhbGVJRDsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAwNTY4NjlmMTQ1ZGQ3NjgxZGZlYmI2ODg4OTViYzE5NTUxZTEzYmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
RWZsLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBU
b2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0
b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIqIGN1
cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lzdGVt
IGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJl
YWtMb2NhbGVJRCgpCit7CisgICAgcmV0dXJuICJlbl91cyI7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVlNWEwNWZhNDkxOTVmYjMwYmY2OWRlZDU2MmQ1NDNiOGI2
MTAxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRCcmVh
a0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQorewor
ICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICIiOwor
fQorCitjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQoreworICAgIC8vIEZJ
WE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICJlbl91cyI7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzM4OGZkYmY3Y2E0OWJhNjU5ODk0Mzc3ZjJiMWM1NmFkYWQwZGVjYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQ
cm92aWRlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0cmluZy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworLy8gUmVsb2NhdGUgcG9pbnRlciBmcm9tIHNvdXJjZSBpbnRv
IGRlc3RpbmF0aW9uIGFzIHJlcXVpcmVkLgorc3RhdGljIGlubGluZSB2b2lkIGZpeFBvaW50ZXIo
Y29uc3QgVVRleHQqIHNvdXJjZSwgVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiYgcG9p
bnRlcikKK3sKKyAgICBpZiAocG9pbnRlciA+PSBzb3VyY2UtPnBFeHRyYSAmJiBwb2ludGVyIDwg
c3RhdGljX2Nhc3Q8Y2hhcio+KHNvdXJjZS0+cEV4dHJhKSArIHNvdXJjZS0+ZXh0cmFTaXplKSB7
CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgZXh0cmEgYnVmZmVyLgorICAg
ICAgICBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uLT5wRXh0cmEpICsg
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAtIHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihzb3VyY2UtPnBFeHRyYSkpOworICAgIH0gZWxzZSBpZiAocG9pbnRlciA+PSBzb3VyY2Ug
JiYgcG9pbnRlciA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkgKyBzb3Vy
Y2UtPnNpemVPZlN0cnVjdCkgeworICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291cmNl
IHRleHQgc3RydWN0dXJlLCBidXQgbm90IHNvdXJjZSBleHRyYSBidWZmZXIuCisgICAgICAgIHBv
aW50ZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0aW5hdGlvbikgKyAoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
c291cmNlKSk7CisgICAgfQorfQorCitVVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3Rp
bmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0
dXMpCit7CisgICAgQVNTRVJUX1VOVVNFRChkZWVwLCAhZGVlcCk7CisgICAgaWYgKFVfRkFJTFVS
RSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaW50MzJfdCBleHRyYVNp
emUgPSBzb3VyY2UtPmV4dHJhU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiA9IHV0ZXh0X3NldHVwKGRl
c3RpbmF0aW9uLCBleHRyYVNpemUsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAgIHZvaWQqIGV4dHJhTmV3ID0gZGVz
dGluYXRpb24tPnBFeHRyYTsKKyAgICBpbnQzMl90IGZsYWdzID0gZGVzdGluYXRpb24tPmZsYWdz
OworICAgIGludCBzaXplVG9Db3B5ID0gc3RkOjptaW4oc291cmNlLT5zaXplT2ZTdHJ1Y3QsIGRl
c3RpbmF0aW9uLT5zaXplT2ZTdHJ1Y3QpOworICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291cmNl
LCBzaXplVG9Db3B5KTsKKyAgICBkZXN0aW5hdGlvbi0+cEV4dHJhID0gZXh0cmFOZXc7CisgICAg
ZGVzdGluYXRpb24tPmZsYWdzID0gZmxhZ3M7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLT5wRXh0
cmEsIHNvdXJjZS0+cEV4dHJhLCBleHRyYVNpemUpOworICAgIGZpeFBvaW50ZXIoc291cmNlLCBk
ZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPmNvbnRleHQpOworICAgIGZpeFBvaW50ZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnApOworICAgIGZpeFBvaW50ZXIoc291cmNlLCBk
ZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnEpOworICAgIEFTU0VSVCghZGVzdGluYXRpb24tPnIp
OworICAgIGNvbnN0IHZvaWQqIGNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCB2b2lk
Kj4oZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMpOworICAgIGZpeFBvaW50ZXIoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY2h1bmtDb250ZW50cyk7CisgICAgZGVzdGluYXRpb24tPmNodW5rQ29udGVu
dHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGNodW5rQ29udGVudHMpOworICAgIHJldHVy
biBkZXN0aW5hdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwYWY5OTcyMzkwZGQwMWJjMjNlYjAy
ZjZhY2Y5MmM1NDg5MzQ3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXIuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVVRleHRQcm92aWRlcl9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJfaAorCisjaW5jbHVkZSA8
dW5pY29kZS91dGV4dC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworZW51bSBjbGFzcyBVVGV4dFBy
b3ZpZGVyQ29udGV4dCB7CisgICAgTm9Db250ZXh0LAorICAgIFByaW9yQ29udGV4dCwKKyAgICBQ
cmltYXJ5Q29udGV4dAorfTsKKworaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHVUZXh0UHJv
dmlkZXJDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9v
bCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+YiB8fCBuYXRpdmVJbmRleCA+IHRleHQtPmIp
CisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQ7Cisg
ICAgaWYgKG5hdGl2ZUluZGV4ID09IHRleHQtPmIpCisgICAgICAgIHJldHVybiBmb3J3YXJkID8g
VVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0IDogVVRleHRQcm92aWRlckNvbnRl
eHQ6OlByaW9yQ29udGV4dDsKKyAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9y
Q29udGV4dDsKK30KKworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJv
dmlkZXIoVVRleHQqIHRleHQsIGNvbnN0IFVUZXh0RnVuY3MqIGZ1bmNzLCBjb25zdCB2b2lkKiBz
dHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHBy
aW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICB0ZXh0LT5wRnVuY3MgPSBmdW5jczsKKyAgICB0ZXh0
LT5wcm92aWRlclByb3BlcnRpZXMgPSAxIDw8IFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVOS1M7
CisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAgICB0ZXh0LT5wID0gc3RyaW5nOworICAg
IHRleHQtPmEgPSBsZW5ndGg7CisgICAgdGV4dC0+cSA9IHByaW9yQ29udGV4dDsKKyAgICB0ZXh0
LT5iID0gcHJpb3JDb250ZXh0TGVuZ3RoOworfQorCisvLyBTaGFyZWQgaW1wbGVtZW50YXRpb24g
Zm9yIHRoZSBVVGV4dENsb25lIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK1VUZXh0KiB1VGV4
dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29s
IGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cyk7CisKKworLy8gSGVscGVycyBmb3IgdGhlIFVUZXh0
QWNjZXNzIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK2lubGluZSBpbnQ2NF90IHVUZXh0QWNj
ZXNzUGluSW5kZXgoaW50NjRfdCYgaW5kZXgsIGludDY0X3QgbGltaXQpCit7CisgICAgaWYgKGlu
ZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGVsc2UgaWYgKGluZGV4ID4gbGltaXQp
CisgICAgICAgIGluZGV4ID0gbGltaXQ7CisgICAgcmV0dXJuIGluZGV4OworfQorCitpbmxpbmUg
Ym9vbCB1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UoVVRleHQqIHRleHQsIGludDY0X3Qg
bmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkLCBVQm9vbCYg
aXNBY2Nlc3NpYmxlKQoreworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGlmIChuYXRpdmVJ
bmRleCA+PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDwgdGV4dC0+Y2h1
bmtOYXRpdmVMaW1pdCkgeworICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRl
eCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgICAgICAgICAvLyBFbnN1cmUgY2h1bmsg
b2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3Qg
cmFuZ2UuCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkpOworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMy
X3Q+KG9mZnNldCkgOiAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChuYXRpdmVJbmRleCA+
PSBuYXRpdmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBuYXRpdmVMZW5ndGgp
IHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Cisg
ICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID4gdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5jaHVua05hdGl2ZUxp
bWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+
Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMg
d2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KKyAg
ICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0
KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4IDw9IDAgJiYgIXRl
eHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEwZTFl
ODY0YjI5NzE0ODFlMzA5YzQzNTRlNDMxMDYxYjQ1YzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAKQEAgLTAsMCArMSwz
OTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQ
cm92aWRlckxhdGluMS5oIgorCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIExhdGluMSBw
cm92aWRlcgorCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ2xvbmUoVVRleHQqLCBjb25zdCBV
VGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU5h
dGl2ZUxlbmd0aChVVGV4dCopOworc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0
KiwgaW50NjRfdCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVU
ZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7Citz
dGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0Kik7
CitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMU1hcE5hdGl2ZUluZGV4VG9VVEYxNihjb25zdCBV
VGV4dCosIGludDY0X3QpOworc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4dCopOwor
CitzdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdVRleHRMYXRpbjFGdW5jcyA9IHsKKyAg
ICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgdVRleHRM
YXRpbjFDbG9uZSwKKyAgICB1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dExhdGlu
MUFjY2VzcywKKyAgICB1VGV4dExhdGluMUV4dHJhY3QsCisgICAgbnVsbHB0ciwKKyAgICBudWxs
cHRyLAorICAgIHVUZXh0TGF0aW4xTWFwT2Zmc2V0VG9OYXRpdmUsCisgICAgdVRleHRMYXRpbjFN
YXBOYXRpdmVJbmRleFRvVVRGMTYsCisgICAgdVRleHRMYXRpbjFDbG9zZSwKKyAgICBudWxscHRy
LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIFVUZXh0KiB1VGV4dExh
dGluMUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wg
ZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwgIWRl
ZXApOworCisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBVVGV4dCogcmVzdWx0ID0gdXRleHRfc2V0dXAoZGVzdGluYXRpb24sIHNpemVvZihVQ2hh
cikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSwgc3RhdHVzKTsKKyAgICBpZiAoVV9G
QUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CisgICAgCisgICAg
cmVzdWx0LT5wcm92aWRlclByb3BlcnRpZXMgPSBzb3VyY2UtPnByb3ZpZGVyUHJvcGVydGllczsK
KyAgICAKKyAgICAvLyBQb2ludCBhdCB0aGUgc2FtZSBwb3NpdGlvbiwgYnV0IHdpdGggYW4gZW1w
dHkgYnVmZmVyLgorICAgIHJlc3VsdC0+Y2h1bmtOYXRpdmVTdGFydCA9IHNvdXJjZS0+Y2h1bmtO
YXRpdmVTdGFydDsKKyAgICByZXN1bHQtPmNodW5rTmF0aXZlTGltaXQgPSBzb3VyY2UtPmNodW5r
TmF0aXZlU3RhcnQ7CisgICAgcmVzdWx0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oc291cmNlLT5jaHVua05hdGl2ZVN0YXJ0KTsKKyAgICByZXN1bHQtPmNodW5r
T2Zmc2V0ID0gMDsKKyAgICByZXN1bHQtPmNvbnRleHQgPSBzb3VyY2UtPmNvbnRleHQ7CisgICAg
cmVzdWx0LT5hID0gc291cmNlLT5hOworICAgIHJlc3VsdC0+cEZ1bmNzID0gJnVUZXh0TGF0aW4x
RnVuY3M7CisgICAgcmVzdWx0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKilyZXN1bHQtPnBFeHRy
YTsKKyAgICBtZW1zZXQoY29uc3RfY2FzdDxVQ2hhcio+KHJlc3VsdC0+Y2h1bmtDb250ZW50cyks
IDAsIHNpemVvZihVQ2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSk7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU5hdGl2ZUxl
bmd0aChVVGV4dCogdVRleHQpCit7CisgICAgcmV0dXJuIHVUZXh0LT5hOworfQorCitzdGF0aWMg
VUJvb2wgdVRleHRMYXRpbjFBY2Nlc3MoVVRleHQqIHVUZXh0LCBpbnQ2NF90IGluZGV4LCBVQm9v
bCBmb3J3YXJkKQoreworICAgIGludDY0X3QgbGVuZ3RoID0gdVRleHQtPmE7CisKKyAgICBpZiAo
Zm9yd2FyZCkgeworICAgICAgICBpZiAoaW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAm
JiBpbmRleCA+PSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgLy8gQWxy
ZWFkeSBpbnNpZGUgdGhlIGJ1ZmZlci4gU2V0IHRoZSBuZXcgb2Zmc2V0LgorICAgICAgICAgICAg
dVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoICYmIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID09
IGxlbmd0aCkgeworICAgICAgICAgICAgLy8gT2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgYnV0
IHdlIGNhbid0IGdldCBpdC4KKyAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOworICAgICAg
ICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGluZGV4IDw9IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ICYmIGluZGV4ID4gdVRleHQtPmNodW5r
TmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgaW5zaWRlIHRoZSBidWZmZXIu
IFNldCB0aGUgbmV3IG9mZnNldC4KKyAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOworICAg
ICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpbmRleCAmJiAh
dVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgYXQgdGhl
IGJlZ2lubmluZzsgY2FuJ3QgZ28gYW55IGZhcnRoZXIuCisgICAgICAgICAgICB1VGV4dC0+Y2h1
bmtPZmZzZXQgPSAwOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZVN0
YXJ0ID0gaW5kZXg7CisgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgKyBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eTsKKyAgICAgICAg
aWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQorICAgICAgICAgICAgdVRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7CisKKyAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0
ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IGlu
ZGV4OworICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBsZW5ndGgpCisgICAg
ICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IGxlbmd0aDsKKworICAgICAgICB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gVVRleHRXaXRo
QnVmZmVySW5saW5lQ2FwYWNpdHk7CisgICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dCA8IDApCisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7CisKKyAgICAg
ICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgfQorICAgIHVUZXh0LT5jaHVua0xlbmd0aCA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdVRleHQtPmNodW5r
TmF0aXZlU3RhcnQpOworCisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNo
YXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odVRl
eHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKKworICAgIHVUZXh0LT5uYXRpdmVJbmRleGluZ0xp
bWl0ID0gdVRleHQtPmNodW5rTGVuZ3RoOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRp
YyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCogdVRleHQsIGludDY0X3Qgc3RhcnQs
IGludDY0X3QgbGltaXQsIFVDaGFyKiBkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwgVUVycm9y
Q29kZSogc3RhdHVzKQoreworICAgIGludDY0X3QgbGVuZ3RoID0gdVRleHQtPmE7CisgICAgaWYg
KFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZGVzdENh
cGFjaXR5IDwgMCB8fCAoIWRlc3QgJiYgZGVzdENhcGFjaXR5ID4gMCkpIHsKKyAgICAgICAgKnN0
YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+IGxpbWl0IHx8IChsaW1pdCAtIHN0YXJ0
KSA+IElOVDMyX01BWCkgeworICAgICAgICAqc3RhdHVzID0gVV9JTkRFWF9PVVRPRkJPVU5EU19F
UlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHN0YXJ0ID4gbGVuZ3Ro
KQorICAgICAgICBzdGFydCA9IGxlbmd0aDsKKyAgICBpZiAobGltaXQgPiBsZW5ndGgpCisgICAg
ICAgIGxpbWl0ID0gbGVuZ3RoOworCisgICAgbGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAgICAK
KyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZGVzdENhcGFj
aXR5ID4gMCAmJiAhZGVzdCkgeworICAgICAgICBpbnQzMl90IHRyaW1tZWRMZW5ndGggPSBzdGF0
aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOworICAgICAgICBpZiAodHJpbW1lZExlbmd0aCA+IGRl
c3RDYXBhY2l0eSkKKyAgICAgICAgICAgIHRyaW1tZWRMZW5ndGggPSBkZXN0Q2FwYWNpdHk7CisK
KyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRlc3QsIHN0YXRpY19jYXN0PGNvbnN0IExD
aGFyKj4odVRleHQtPmNvbnRleHQpICsgc3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0cmlt
bWVkTGVuZ3RoKSk7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCA8IGRlc3RDYXBhY2l0eSkgewor
ICAgICAgICBkZXN0W2xlbmd0aF0gPSAwOworICAgICAgICBpZiAoKnN0YXR1cyA9PSBVX1NUUklO
R19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HKQorICAgICAgICAgICAgKnN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSBkZXN0Q2FwYWNpdHkpCisgICAgICAgICpz
dGF0dXMgPSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HOworICAgIGVsc2UKKyAgICAg
ICAgKnN0YXR1cyA9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOworCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludDMyX3Q+KGxlbmd0aCk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4x
TWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQqIHVUZXh0KQoreworICAgIHJldHVybiB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCArIHVUZXh0LT5jaHVua09mZnNldDsKK30KKworc3RhdGljIGlu
dDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3QgVVRleHQqIHVUZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4KQoreworICAgIEFTU0VSVF9VTlVTRUQodVRleHQsIHVUZXh0
LT5jaHVua05hdGl2ZVN0YXJ0ID49IG5hdGl2ZUluZGV4KTsKKyAgICBBU1NFUlRfVU5VU0VEKHVU
ZXh0LCBuYXRpdmVJbmRleCA8IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0KTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50MzJfdD4obmF0aXZlSW5kZXgpOworfQorCitzdGF0aWMgdm9pZCB1VGV4
dExhdGluMUNsb3NlKFVUZXh0KiB1VGV4dCkKK3sKKyAgICB1VGV4dC0+Y29udGV4dCA9IG51bGxw
dHI7Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZmZXIq
IHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBVRXJy
b3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgeworICAgICAg
ICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisgICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVmZmVy
LT50ZXh0LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0dXMpOworICAgIGlmIChV
X0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAgICB0
ZXh0LT5hID0gbGVuZ3RoOworICAgIHRleHQtPnBGdW5jcyA9ICZ1VGV4dExhdGluMUZ1bmNzOwor
ICAgIHRleHQtPmNodW5rQ29udGVudHMgPSAoVUNoYXIqKXRleHQtPnBFeHRyYTsKKyAgICBtZW1z
ZXQoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCAwLCBzaXplb2YoVUNo
YXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOworCisgICAgcmV0dXJuIHRleHQ7
Cit9CisKKworLy8gTGF0aW4xQ29udGV4dEF3YXJlIHByb3ZpZGVyCisKK3N0YXRpYyBVVGV4dCog
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZShVVGV4dCosIGNvbnN0IFVUZXh0KiwgVUJvb2ws
IFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0
aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVB
Y2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7CitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGlu
MUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGlu
dDMyX3QsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJl
Q2xvc2UoVVRleHQqKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRMYXRp
bjFDb250ZXh0QXdhcmVGdW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwK
KyAgICAwLAorICAgIDAsCisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSwKKyAgICB1
VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dExhdGluMUNvbnRl
eHRBd2FyZUFjY2VzcywKKyAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QsCisgICAg
bnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICB1
VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwK
KyAgICBudWxscHRyCit9OworCitzdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRl
eHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCkK
K3sKKyAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMpCisgICAgICAgIHJldHVybiBVVGV4dFBy
b3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRlbnRz
ID09IHRleHQtPnBFeHRyYSA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6
IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRl
eHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50
NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7
CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKKyAgICBp
ZiAoZm9yd2FyZCkgeworICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPj0gdGV4dC0+YiAmJiBu
YXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCk7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3Rh
cnQgPSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2
ZUluZGV4ICsgdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgaWYgKHRl
eHQtPmNodW5rTmF0aXZlTGltaXQgPiBuYXRpdmVMZW5ndGgpCisgICAgICAgICAgICB0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVChuYXRpdmVJbmRleCA+IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3Ro
KTsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4OworICAgICAg
ICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5leHRyYVNpemUg
LyBzaXplb2YoVUNoYXIpOworICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA8IHRl
eHQtPmIpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdGV4dC0+YjsKKyAg
ICB9CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+
Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVm
aW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgIEFTU0VS
VChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4
dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAgIHRleHQtPm5hdGl2
ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICB0ZXh0LT5jaHVua09mZnNl
dCA9IGZvcndhcmQgPyAwIDogdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgU3RyaW5nSW1wbDo6Y29w
eUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGljX2Nh
c3Q8Y29uc3QgTENoYXIqPih0ZXh0LT5wKSArICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IC0gdGV4
dC0+YiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0LT5jaHVua0xlbmd0aCkpOworfQorCitz
dGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dChV
VGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVC
b29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQt
PmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0
YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cEV4dHJhKTsKKyAgICB0ZXh0TGF0aW4xQ29u
dGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVN
b3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0
X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXgg
PCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChu
YXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2
ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3
YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVM
ZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNodW5r
TmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsK
KyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAg
aW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Cisg
ICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zm
c2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJUKG9m
ZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5j
aHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5r
TGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5h
dGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29u
dGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOworICAgIHRleHQt
PmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAg
IHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5k
ZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyBVVGV4dCogdVRleHRMYXRp
bjFDb250ZXh0QXdhcmVDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3Vy
Y2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICByZXR1cm4gdVRleHRD
bG9uZUltcGwoZGVzdGluYXRpb24sIHNvdXJjZSwgZGVlcCwgc3RhdHVzKTsKK30KKworc3RhdGlj
IGludDY0X3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgoVVRleHQqIHRleHQp
Cit7CisgICAgcmV0dXJuIHRleHQtPmEgKyB0ZXh0LT5iOworfQorCitzdGF0aWMgVUJvb2wgdVRl
eHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5k
ZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAgICBy
ZXR1cm4gRkFMU0U7CisgICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dExhdGluMUNvbnRl
eHRBd2FyZU5hdGl2ZUxlbmd0aCh0ZXh0KTsKKyAgICBVQm9vbCBpc0FjY2Vzc2libGU7CisgICAg
aWYgKHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0
aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0FjY2Vzc2libGUpKQorICAgICAgICByZXR1cm4gaXNBY2Nl
c3NpYmxlOworICAgIG5hdGl2ZUluZGV4ID0gdVRleHRBY2Nlc3NQaW5JbmRleChuYXRpdmVJbmRl
eCwgbmF0aXZlTGVuZ3RoKTsKKyAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBjdXJyZW50Q29udGV4
dCA9IHRleHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKKyAgICBV
VGV4dFByb3ZpZGVyQ29udGV4dCBuZXdDb250ZXh0ID0gdVRleHRQcm92aWRlckNvbnRleHQodGV4
dCwgbmF0aXZlSW5kZXgsIGZvcndhcmQpOworICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IFVUZXh0
UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQpOworICAgIGlmIChuZXdDb250ZXh0ID09IGN1cnJl
bnRDb250ZXh0KSB7CisgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVy
Q29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3
YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwg
Zm9yd2FyZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdh
cmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9y
d2FyZCk7CisgICAgfSBlbHNlIGlmIChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0
OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7
CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJD
b250ZXh0OjpQcmlvckNvbnRleHQpOworICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dp
dGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4dExh
dGluMUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhcios
IGludDMyX3QsIFVFcnJvckNvZGUqIGVycm9yQ29kZSkKK3sKKyAgICAvLyBJbiB0aGUgcHJlc2Vu
dCBjb250ZXh0LCB0aGlzIHRleHQgcHJvdmlkZXIgaXMgdXNlZCBvbmx5IHdpdGggSUNVIGZ1bmN0
aW9ucworICAgIC8vIHRoYXQgZG8gbm90IHBlcmZvcm0gYW4gZXh0cmFjdCBvcGVyYXRpb24uCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgKmVycm9yQ29kZSA9IFVfVU5TVVBQT1JURURf
RVJST1I7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ29udGV4
dEF3YXJlQ2xvc2UoVVRleHQqIHRleHQpCit7CisgICAgdGV4dC0+Y29udGV4dCA9IG51bGxwdHI7
Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dFdp
dGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVu
Z3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBV
RXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgeworICAgICAgICAq
c3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVmZmVyLT50ZXh0LCBz
aXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUo
KnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIodGV4dCwgJnRl
eHRMYXRpbjFDb250ZXh0QXdhcmVGdW5jcywgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4dCwg
cHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICByZXR1cm4gdGV4dDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
TGF0aW4xLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjE3YjM0ZDU2NjUzY2E0ZDdhOGNhNDE0ZTE0NzkwM2UwY2E3MjgwMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRp
bjEuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVVGV4dFByb3ZpZGVy
TGF0aW4xX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlckxhdGluMV9oCisKKyNpbmNsdWRlIDx1bmlj
b2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK2NvbnN0IGludCBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSA9IDE2OworCitz
dHJ1Y3QgVVRleHRXaXRoQnVmZmVyIHsKKyAgICBVVGV4dCB0ZXh0OworICAgIFVDaGFyIGJ1ZmZl
cltVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eV07Cit9OworCitVVGV4dCogb3BlbkxhdGlu
MVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFy
KiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKK1VUZXh0KiBv
cGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZmZXIqIHV0V2l0
aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hh
ciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0
dXMpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJMYXRp
bjFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlclVU
RjE2LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTFmYzJlYWI5YTQ1N2YxNzc0OWY3MjNmNTIwN2YzODFkZjI5ZmFhZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCisKKyNpbmNsdWRlICJVVGV4dFByb3Zp
ZGVyLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVVRG
MTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4
dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7Citz
dGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0Kik7
CitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCosIGludDY0
X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0
KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7
CitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKKworc3Rh
dGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNzID0g
eworICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICB1
VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZU5h
dGl2ZUxlbmd0aCwKKyAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzLAorICAgIHVUZXh0
VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAg
ICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3Nl
LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyCit9OworCitzdGF0aWMg
aW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJl
bnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQoreworICAgIGlmICghdGV4dC0+Y2h1bmtDb250
ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7Cisg
ICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJD
b250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRl
eHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlD
b250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxl
bmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9
PSB0ZXh0LT5wKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJ
bmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5V
U0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2
ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRl
eHQtPmI7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKKyAgICBp
bnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2
ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNv
bXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgQVNTRVJUKGxlbmd0aCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua0xl
bmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdM
aW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5k
ZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQg
aXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ug
b3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lk
IHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQs
IGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJk
KQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRl
bnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KHRleHQtPnApOworICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblBy
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQo
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQt
PnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZl
SW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndh
cmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxl
bmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXgg
PCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQt
PmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0
LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRpdmVJ
bmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQgPSBu
YXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5r
IG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJf
dCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6
bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKworc3Rh
dGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQq
IHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBm
b3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnApOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1v
dmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKK30KKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQq
IGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2Rl
KiBzdGF0dXMpCit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGRlZXAsIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVURjE2
Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQoreworICAgIHJldHVybiB0ZXh0
LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVB
Y2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCit7
CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgaW50
NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKHRl
eHQpOworICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKKyAgICBpZiAodVRleHRBY2Nlc3NJbkNodW5r
T3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlz
QWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7CisgICAgbmF0aXZlSW5k
ZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOworICAg
IFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2Q29udGV4dEF3
YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3
Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJk
KTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250
ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgeworICAgICAgICBp
ZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0
KQorICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0
LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9IGVsc2UgaWYgKG5l
d0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAg
ICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIGVsc2UgeworICAgICAgICBBU1NF
UlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKKyAg
ICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgfQorICAgIHJldHVybiBUUlVF
OworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChVVGV4
dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JD
b2RlKQoreworICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRl
ciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCisgICAgLy8gdGhhdCBkbyBub3QgcGVy
Zm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQorewor
ICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOworfQorCitVVGV4dCogb3BlblVURjE2Q29udGV4
dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0
TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewor
ICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisgICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7Cisg
ICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgeworICAgICAgICBBU1NFUlQoIXRleHQpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQ
cm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3Ro
LCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRleHQ7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9p
Y3UvVVRleHRQcm92aWRlclVURjE2LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyVVRGMTYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2MyYzJjOGU2YzVmYWRhNzViNWQ1MWY5NmJiOGFj
ZTBhNzA0YWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRl
eHRQcm92aWRlclVURjE2LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VVRleHRQcm92aWRlclVURjE2X2gKKyNkZWZpbmUgVVRleHRQcm92aWRlclVURjE2X2gKKworI2lu
Y2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1VUZXh0KiBvcGVu
VVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRM
ZW5ndGgsIFVFcnJvckNvZGUqKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBV
VGV4dFByb3ZpZGVyVVRGMTZfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9tYWMv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
bWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVmNWRh
YTY0Mjg4ODIxZTIwZjI2MjhjNjg1NWVlOGU4OGEzODkyYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0K
QEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGNvbnN0IGludCBtYXhMb2NhbGVT
dHJpbmdMZW5ndGggPSAzMjsKKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UoKQoreworICAgIFJldGFpblB0cjxDRlByb3BlcnR5
TGlzdFJlZj4gbG9jYWxlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weVZhbHVlKENGU1RSKCJB
cHBsZVRleHRCcmVha0xvY2FsZSIpLAorICAgICAgICBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0
aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKTsK
KyAgICBpZiAoIWxvY2FsZSB8fCBDRkdldFR5cGVJRChsb2NhbGUuZ2V0KCkpICE9IENGU3RyaW5n
R2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4obG9jYWxlLmdldCgpKTsKK30KKworc3RhdGljIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gbGFuZ3VhZ2VzQXJyYXkgPSBhZG9wdENGKENGTG9jYWxlQ29weVByZWZlcnJlZExh
bmd1YWdlcygpKTsKKyAgICBpZiAoIWxhbmd1YWdlc0FycmF5KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBpZiAoIUNGQXJyYXlHZXRDb3VudChsYW5ndWFnZXNBcnJheS5nZXQoKSkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1Jl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXNBcnJheS5nZXQoKSwgMCkpOworfQor
CitzdGF0aWMgdm9pZCBnZXRMb2NhbGUoQ0ZTdHJpbmdSZWYgbG9jYWxlLCBjaGFyIGxvY2FsZVN0
cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQoreworICAgIC8vIEVtcHR5IHN0cmlu
ZyBtZWFucyAicm9vdCBsb2NhbGUiLCBhbmQgdGhhdCBpcyB3aGF0IHdlIHVzZSBpZiB3ZSBjYW4n
dCBnZXQgYSBwcmVmZXJlbmNlLgorICAgIGxvY2FsZVN0cmluZ0J1ZmZlclswXSA9IDA7CisgICAg
aWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybjsKKyAgICBDRlN0cmluZ0dldENTdHJpbmcobG9j
YWxlLCBsb2NhbGVTdHJpbmdCdWZmZXIsIG1heExvY2FsZVN0cmluZ0xlbmd0aCwga0NGU3RyaW5n
RW5jb2RpbmdBU0NJSSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFNlYXJjaExvY2FsZShjaGFyIGxv
Y2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQoreworICAgIGdldExvY2Fs
ZSh0b3BMYW5ndWFnZVByZWZlcmVuY2UoKS5nZXQoKSwgbG9jYWxlU3RyaW5nQnVmZmVyKTsKK30K
KworY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICBzdGF0aWMgY2hh
ciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXTsKKyAgICBzdGF0aWMg
Ym9vbCBnb3RTZWFyY2hMb2NhbGUgPSBmYWxzZTsKKyAgICBpZiAoIWdvdFNlYXJjaExvY2FsZSkg
eworICAgICAgICBnZXRTZWFyY2hMb2NhbGUobG9jYWxlU3RyaW5nQnVmZmVyKTsKKyAgICAgICAg
Z290U2VhcmNoTG9jYWxlID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGxvY2FsZVN0cmluZ0J1
ZmZlcjsKK30KKworc3RhdGljIHZvaWQgZ2V0VGV4dEJyZWFrTG9jYWxlKGNoYXIgbG9jYWxlU3Ry
aW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0pCit7CisgICAgLy8gSWYgdGhlcmUgaXMg
bm8gdGV4dCBicmVhayBsb2NhbGUsIHVzZSB0aGUgdG9wIGxhbmd1YWdlIHByZWZlcmVuY2UuCisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGUgPSB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJl
bmNlKCk7CisgICAgaWYgKGxvY2FsZSkgeworICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjYW5vbmljYWxMb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTGFu
Z3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2NhbGUuZ2V0
KCkpKSkKKyAgICAgICAgICAgIGxvY2FsZSA9IGNhbm9uaWNhbExvY2FsZTsKKyAgICB9IGVsc2UK
KyAgICAgICAgbG9jYWxlID0gdG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCk7CisgICAgZ2V0TG9jYWxl
KGxvY2FsZS5nZXQoKSwgbG9jYWxlU3RyaW5nQnVmZmVyKTsKK30KKworY29uc3QgY2hhciogY3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKCkKK3sKKyAgICBzdGF0aWMgY2hhciBsb2NhbGVTdHJpbmdC
dWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXTsKKyAgICBzdGF0aWMgYm9vbCBnb3RUZXh0QnJl
YWtMb2NhbGUgPSBmYWxzZTsKKyAgICBpZiAoIWdvdFRleHRCcmVha0xvY2FsZSkgeworICAgICAg
ICBnZXRUZXh0QnJlYWtMb2NhbGUobG9jYWxlU3RyaW5nQnVmZmVyKTsKKyAgICAgICAgZ290VGV4
dEJyZWFrTG9jYWxlID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGxvY2FsZVN0cmluZ0J1ZmZl
cjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC93aW4vVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9UZXh0
QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDE3ZTE3MDVlZjU0
YjkzOTIxNGRhMTg0ODBkYjdhMzJjMzJjOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNo
YXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ug
c3lzdGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgLy8gVXNpbmcgZW5fVVNfUE9TSVggbm93IHNvIHdv
cmQgc2VsZWN0aW9uIGluIGFkZHJlc3MgZmllbGQgd29ya3MgYXMgZXhwZWN0ZWQgYXMgYmVmb3Jl
IChkb3VibGUtY2xpY2tpbmcKKyAgICAvLyBpbiBhIFVSTCBzZWxlY3RzIGEgd29yZCBkZWxpbWl0
ZWQgYnkgcGVyaW9kcyByYXRoZXIgdGhhbiBzZWxlY3RpbmcgdGhlIGVudGlyZSBVUkwpLgorICAg
IC8vIEhvd2V2ZXIsIHRoaXMgaXMgbm90IGVudGlyZWx5IGNvcnJlY3QgLSB3ZSBzaG91bGQgaG9u
b3IgdGhlIHN5c3RlbSBsb2NhbGUgaW4gdGhlIG5vcm1hbCBjYXNlLgorICAgIC8vIEZJWE1FOiA8
cmRhcjovL3Byb2JsZW0vNjc4NjcwMz4gU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlIGZvciB0ZXh0
IGJyZWFraW5nCisgICAgcmV0dXJuICJlbl9VU19QT1NJWCI7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggOTA0Mzc3ZmNlYmRkNTZlNjBlNjYyZGU1Mjc0MDYxNTY2NTQyODc2YS4uZTc4
YjA0MmIxMDQwMWUxZjRlZTNhMmFiMWEwNTJjMjE4YzNhMTFlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTIzNzAsNyArMjM3MCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0
cmluZy5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAotICAgIHBsYXRm
b3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWMuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCiAgICAgcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC0yMzgzLDEwICsyMzgyLDYgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCiAg
ICAgcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC9pY3Uv
VVRleHRQcm92aWRlci5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcAotICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKLQog
ICAgIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5
LmNwcAogICAgIHBsdWdpbnMvRE9NUGx1Z2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCAzZmU2MDM3OGMyNmNmMDhlNDVmMzczZWQ1MzM4N2RlZjc4NDU2Y2EzLi41MTQ1MDRlNmVj
MjVhYTVlNDNiOTkzOThkNWUzNWNlZWVhNzY2YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQpAQCAtMjEyLDggKzIxMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1Uu
Y3BwCiAKLSAgICBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
RWZsLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5j
cHAKIAogICAgIHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBjMjI0MDViNzRlMTVlN2I3NWY3NGFjODBmODE1
N2M3NzNhOWM5ZWMwLi42NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgyLDggKzE4Miw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2Vy
RW5jaGFudC5jcHAKIAotICAgIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VHdGsuY3BwCi0KICAgICBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxp
Ykh5cGhlbi5jcHAKIAogICAgIHBsYXRmb3JtL3VuaXgvTG9nZ2luZ1VuaXguY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IDM5ODk2Zjk4NDM1MjYxMmE5ZWVkNDliMjQwMTE0YjRjMWQ4
NDk1OTguLjlmNmY0OTZiNmNjNGVmNmU0Yjc0ZDg0YWMwYWE5ZGVhNTVhMDIzN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01NjYsNyArNTY2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KICAgICBwbGF0
Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQotICAgIHBsYXRmb3JtL3RleHQvbWFjL1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KICAgICBwbGF0Zm9ybS90ZXh0L21hYy9U
ZXh0Q29kZWNNYWMuY3BwCiAKICAgICByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggY2NiMWE1NzFlOWE2ZGU1NmFjZDA1NGE5MzM2NTM5ZDA4
ZTYwZjNmZi4uOGQ3OTBmYTcwOTFmYjYxMmYxNTE4OTU2OWM1N2Q5NmE5NWNjZDVkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwOSw4ICsxMDksNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKIAot
ICAgIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3Bw
Ci0KICAgICBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS93aW4vQml0bWFw
SW5mby5jcHAKICAgICBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGZiYTU3Zjg0OTliMTZkYjBlMDY4ZmQ5ZDc1M2ViOTE1MjJjOWViODQuLmMxMWJjNDdlNWNhZDYz
MGEzNjU3Y2RlMWFkOWY3Yjc2YTBhNTVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MTgsMTEgKzE1MTgsMTEgQEAKIAkJ
MzdGNTdBQkExQTUwNzI2RjAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBOUUx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwICovOyB9Owog
CQkzN0Y1N0FCQjFBNTA3MjczMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQTlG
MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwICovOyB9Owog
CQkzN0Y1N0FCQzFBNTA3Mjc3MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FB
MDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgKi87IH07
CisJCTM3RjU3QUJDMUE1MDcyODQwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgx
QUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwICov
OyB9OwogCQkzN0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBQTEx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNwcCAqLzsgfTsKIAkJMzdGNTdB
QkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQUEyMTMxODIyRUMwMEQx
MkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgKi87IH07CiAJCTM3RjU3QUJGMUE1MDcy
ODEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBMzEzMTgyMkVDMDBEMTJG
MkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwICovOyB9OwogCQkzN0Y1N0FDMDFB
NTA3Mjg0MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBQTQxMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKLQkJMzdGNTdB
QkMxQTUwNzI4NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFBQkM0MTMxODIy
RUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgKi87IH07CiAJCTM3
RjU3QUMxMUE1MDcyODcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg1NzA5MjE1Q0M1
MzJEMDA2MzU1Q0QgLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwICovOyB9OwogCQkzN0Y1
N0FDMjFBNTA3MjhCMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBNTEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi87IH07CiAJCTM3RjU3QUMzMUE1MDcy
OEYwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQwOUM5ODIxMTZEMERERDAw
NzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi87IH07CkBAIC0x
NjkzLDEwICsxNjkzLDggQEAKIAkJNDM5MDQ2REQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTE1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwICovOyB9
OwogCQk0MzkwNDZERTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0ExMkRBMjVF
ODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguaCAqLzsgfTsKIAkJNDM5MDQ2REYxMkRBMjVF
MTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQjEyREEyNUUxN0JBRjgwQTIg
LyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCAqLzsgfTsKLQkJNDM5MTc2REYxMkRBMjVF
MTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTE3NkNCMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHls
ZS5jcHAgKi87IH07CiAJCTQzOTA0NkRGMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxP
cGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwICov
OyB9OwogCQk0MzkwNDZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Mzkw
NDZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi87IH07
Ci0JCTQzOTE3NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0MxMkRBMjVFMTdCQUY4
MEEyIC8qIE1hdGhNTFN0eWxlLmggKi87IH07CiAJCTQzOTA0NkUwMTJEQTI1RTgwMEFGODBBMiAv
KiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE9w
ZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkUxMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRo
TUxSb290LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzOTA0NkNEMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLzsgfTsK
IAkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNFMTJEQTI1RTgw
MEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmggKi87IH07CkBAIC0xNzEwLDYgKzE3MDgsOCBA
QAogCQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENjEyREEyNUU4MTJB
RjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkVCMTJEQTI1RTgwMEFGODBB
OSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1M
VG9rZW4uY3BwICovOyB9OwogCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0
aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oICovOyB9Owor
CQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0IxMkRBMjVFMTdCQUY4
MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLzsgfTsKKwkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLzsgfTsK
IAkJNDM5RDMzNDMxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDAxM0E2OTExQzAw
QzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oICovOyB9OwogCQk0MzlEMzM0NDEzQTY5MTFDMDBD
MjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdB
bmltYXRlZFR5cGVBbmltYXRvci5oICovOyB9OwogCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYg
LyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0
b3J5LmggKi87IH07CkBAIC0yODE0LDEyICsyODE0LDYgQEAKIAkJN0M3M0ZCMTExOTFFRjZGNDAw
N0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBKU1Vz
ZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CiAJCTdDNzNGQjEyMTkxRUY2RjQwMDdERTA2MSAv
KiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VI
YW5kbGVyLmggKi87IH07CiAJCTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTcxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDNzRENDMzMTg4MjNB
OTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLzsgfTsKLQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3
IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
TGF0aW4xLmggKi87IH07Ci0JCTdDNzRENDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLzsgfTsKLQkJN0M3
NEQ0MzgxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAv
KiBVVGV4dFByb3ZpZGVyLmggKi87IH07Ci0JCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi87IH07Ci0JCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
VVRGMTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKIAkJ
N0M3OTQxRTQxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMjFD
NTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsKIAkJ
N0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUzMUM1
NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi87IH07CiAJCTdD
ODNERTg2MUQwNENDNUQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAv
KiBTcHJpbmdTb2x2ZXIuaCAqLzsgfTsKQEAgLTQyNzUsNyArNDI2OSw2IEBACiAJCUE1QTJBRjBC
MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovOyB9
OwogCQlBNUE3QUE0MzEzMkYwRUNDMDBEM0EzQzIgLyogV2ViQXV0b2NhcGl0YWxpemUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTdBQTQyMTMyRjBF
Q0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBM
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBS
YW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLzsgfTsKIAkJQTVBRkIz
NTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBS
YW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsKQEAgLTUxMTAsNyArNTEwMyw2IEBACiAJCUIyQUZGQzgw
MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDNzgwRDAwQTVDMTAwMzAwNzREIC8q
IEZvbnRDYXNjYWRlQ29jb2EubW0gKi87IH07CiAJCUIyQUZGQzgzMEQwMEE1QzEwMDMwMDc0RCAv
KiBHbHlwaFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjJBRkZDN0IwRDAwQTVDMTAwMzAwNzREIC8qIEdseXBoUGFnZU1hYy5jcHAgKi87
IH07CiAJCUIyQUZGQzk3MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzhDMEQwMEE1
REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSAqLzsgfTsKLQkJQjJBRkZDOTgwRDAwQTVE
RjAwMzAwNzREIC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RDBEMDBBNURGMDAz
MDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLzsgfTsKIAkJQjJB
RkZDOTkwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RTBEMDBBNURGMDAzMDA3NEQg
LyogVGV4dENvZGVjTWFjLmNwcCAqLzsgfTsKIAkJQjJBRkZDOUEwRDAwQTVERjAwMzAwNzREIC8q
IFRleHRDb2RlY01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjJBRkZDOEYwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5oICovOyB9Owog
CQlCMkIxRjcxNjBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQjFGNzE0MEQw
MENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovOyB9OwpAQCAtNTEy
Miw4ICs1MTE0LDYgQEAKIAkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0
cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLzsgfTsKIAkJ
QjJDM0RBMkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0Q5RkYwRDAwNkMxRDAwRUY2
RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTM0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRh
cmllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJD
M0RBMDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjJDM0RBMzYwRDAwNkMxRDAwRUY2
RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwNjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRl
cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQlCMkMzREEzODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RB
MDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREEzOTBE
MDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTA5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29k
ZWMuY3BwICovOyB9OwogCQlCMkMzREEzQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwQTBE
MDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBM0IwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRD
b2RlY0lDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMkMzREEwQjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjSUNVLmNwcCAqLzsgfTsKQEAg
LTU4MDcsNyArNTc5Nyw2IEBACiAJCUJDRDBGQzRGMERCRDcyMEIwMEIyRjYzMCAvKiBET01SR0JD
b2xvckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0QwRkM0RTBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5oICov
OyB9OwogCQlCQ0Q0MUFCQjBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRDQxQUJBMEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwICovOyB9OwogCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291
cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRl
ci5oICovOyB9OwotCQlCQ0Q4QTVGMDE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRlcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNE
OEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJ
QkNEOUMyNjIwQzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjVFMEMxN0FBNjcw
MDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi87IH07CiAJCUJDRDlDMjYzMEMxN0FB
NjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyog
SlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwICovOyB9OwogCQlCQ0Q5QzI2NDBDMTdBQTY3MDA1Qzkw
QTIgLyogSlNOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRDlDMjYwMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20uY3Bw
ICovOyB9OwpAQCAtODY5MSw2ICs4NjgwLDcgQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBG
IC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1
cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRv
SW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdC
RTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4MUFCQzQxMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RTEzMTgyMkVDMDBEMTJGMkEgLyogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNB
OUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODY5OSw3ICs4Njg5LDYgQEAKIAkJMjk4MUNBQTIxMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlMaXN0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4
MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vz
c2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjk4MUFC
QzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2li
aWxpdHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3Bl
Y2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJMjk4MUNBQTYxMzE4
MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI5ODFDQUE3MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTAzNiw4ICs5MDI1LDggQEAKIAkJMzFG
QjFBNkIxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXZpY2VNb3Rpb25FdmVudEN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIwODYw
MDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMxRkY2N0RFMTk3QjU3MzkzQzQ2QUE3IC8qIFJlbmRlck1h
dGhNTFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhN
TFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMUZGNjdERTE5N0I1NzM5
M0M0NkE3RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyTWF0aE1MUGFkZGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZp
Y2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb24uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90
aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3
RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRo
ID0gTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
MzExLDEwICs5MzAwLDggQEAKIAkJNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTE1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
TWF0aE1MTWF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNBMTJE
QTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTE1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDM5MDQ2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFy
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxPcGVyYXRv
ckRpY3Rpb25hcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzkxNzZDQjEy
REEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWF0aE1MU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDQzEyREEyNUUxN0JB
RjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3R5bGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1h
dGhNTE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1h
dGhNTE9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNEMTJE
QTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MzkwNDZDRTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9v
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxSb290Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzI4LDYgKzkzMTUsOCBAQAogCQk0Mzkw
NDZENjEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGhPcGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZEODEyREEyNUU4MDBBRjgwQTkg
LyogUmVuZGVyTWF0aE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyTWF0aE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM5MTc2
Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAv
KiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NTcsMTIgKzEwNTQ2LDYgQEAKIAkJN0M3M0ZC
MEYxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpT
VXNlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
VXNlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNzNG
QjE3MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGluMS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1
NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
N0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8q
IFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNv
ZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4M0RFODUxRDA0
Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcHJpbmdTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
MDc1LDcgKzEyMDU4LDYgQEAKIAkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1
Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1
Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMEExODI5NzM0
MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
QTdBQTQyMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvY2FwaXRhbGl6ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0
RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleUV2ZW50Q29jb2EuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTA4LDcgKzEzMDkwLDYgQEAKIAkJQjJBRkZDODYwRDAwQTVE
RjAwMzAwNzREIC8qIG1hYy1lbmNvZGluZ3MudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAi
bWFjLWVuY29kaW5ncy50eHQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4
NzBEMDBBNURGMDAzMDA3NEQgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnBlcmw7IHBhdGggPSAibWFrZS1jaGFyc2V0LXRhYmxlLnBsIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3Vu
ZGFyaWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRC
b3VuZGFyaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkFGRkM4RDBEMDBB
NURGMDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4RTBEMDBB
NURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXh0Q29kZWNNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMkFGRkM4RjBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjJCMUY3MTQwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNI
aXRSdWxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRl
ckV2ZW50c0hpdFJ1bGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTIw
LDggKzEzMTAxLDYgQEAKIAkJQjJDM0Q5RkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0
cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VnbWVudGVk
U3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0Q5RkYwRDAwNkMx
RDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VnbWVudGVkU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJvdW5kYXJpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjJDM0RBMDYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkMzREEwODBEMDA2QzFEMDBFRjZG
MjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVj
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwQTBEMDA2QzFEMDBFRjZGMjYg
LyogVGV4dENvZGVjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29k
ZWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBMEIwRDAwNkMxRDAwRUY2
RjI2IC8qIFRleHRDb2RlY0lDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGV4dENvZGVjSUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
ODMxLDcgKzEzODEwLDYgQEAKIAkJQkNEMEZDNEUwREJENzIwQjAwQjJGNjMwIC8qIERPTVJHQkNv
bG9ySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUkdCQ29s
b3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q0MUFCQTBDMDYw
REU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0
NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkNEOEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCcmVha0l0
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNEOUMyNUUwQzE3QUE2
NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRDlDMjVGMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYW1lZE5v
ZGVNYXBDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q5QzI2MDBD
MTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU05vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTg0MjUsMTkgKzE4NDAzLDYgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBp
Y3UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTdDNzRE
NDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLywKLQkJCQk3Qzc0RDQz
NjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovLAotCQkJCTdDNzRENDMxMTg4
MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLywKLQkJCQk3Qzc0RDQz
MjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovLAotCQkJCTdDNzRE
NDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovLAotCQkJCTdD
NzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLywKLQkJCSk7
Ci0JCQlwYXRoID0gaWN1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJN0U0
REUxMEIxOThCMTA4MTAwNTFDQjAyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIyMzM1LDcgKzIyMzAwLDYgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8qIGNm
ICovLAotCQkJCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBpY3UgKi8sCiAJCQkJQTUxNkU4
QjIxMzZFMDRDMDAwNzZDM0MwIC8qIGlvcyAqLywKIAkJCQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZG
MjYgLyogbWFjICovLAogCQkJCUIyQzNEOUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4
dC5jcHAgKi8sCkBAIC0yMjM0Nyw3ICsyMjMxMSw2IEBACiAJCQkJNDUzRUI2MzUxNTlDNTcwNDAw
MDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggKi8sCiAJCQkJQ0VDQ0ZDM0ExNDE5NzNENTAwMkEw
QUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQzQzgw
MEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAotCQkJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdF
MyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywKIAkJCQk4OUI1RUE5RjExRTgwMDNE
MDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJODlCNUVBQTAxMUU4MDAzRDAwRjIz
NjdFIC8qIExpbmVFbmRpbmcuaCAqLywKIAkJCQk3NjMzQTcyNDEzRDhCMzNBMDA4NTAxQjYgLyog
TG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggKi8sCkBAIC0yMjM2Myw5ICsyMjMyNiw2IEBACiAJCQkJ
OTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLywKIAkJCQkzNzJDMDBD
MzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwICovLAogCQkJCUIyQzNEQTA0
MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovLAotCQkJCUJDRDhBNUVGMTVG
NTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCi0JCQkJQjJDM0RBMDYw
RDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggKi8sCi0JCQkJQjJDM0RBMDgw
RDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywKIAkJ
CQlBNzE1MUJENzEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCAqLywKIAkJ
CQlBNzdEMDAxMTEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggKi8sCiAJCQkJQjJD
M0RBMDkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlYy5jcHAgKi8sCkBAIC0yMjQwOSw3ICsy
MjM2OSw2IEBACiAJCQkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGluZ3Mu
dHh0ICovLAogCQkJCUIyQUZGQzg3MEQwMEE1REYwMDMwMDc0RCAvKiBtYWtlLWNoYXJzZXQtdGFi
bGUucGwgKi8sCiAJCQkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVz
Lm1tICovLAotCQkJCUIyQUZGQzhEMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tICovLAogCQkJCUIyQUZGQzhFMEQwMEE1REYwMDMwMDc0RCAvKiBU
ZXh0Q29kZWNNYWMuY3BwICovLAogCQkJCUIyQUZGQzhGMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0
Q29kZWNNYWMuaCAqLywKIAkJCSk7CkBAIC0yNzQwMCw3ICsyNzM1OSw2IEBACiAJCQkJQkNGRjY0
OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0
NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAw
MEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUI1RUFBMjEx
RTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZFRkFC
MkExODM4MERBMDAwNTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yODYyMiw4ICsyODU4MCw2IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYxODgx
MDUxRDAwM0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMz
REEzNDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICovLAot
CQkJCUIyQzNEQTM2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJQjJDM0RBMzgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYwMDVB
MEY2NCAvKiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RDAwMTIx
MzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
QkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODc2Niw5ICsyODcyMiw2IEBACiAJCQkJQkM4QkYxNTExMDU4MTNCRjAwQTQwQTA3
IC8qIFVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCRjE1QTEwNTgxNDE4
MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNE
RjMxN0MxMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmggaW4g
SGVhZGVycyAqLywKLQkJCQk3Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0
UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDNzRENDNDMTg4MjQwMDQwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQUZCRjE5
MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJF
M0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggaW4gSGVhZGVycyAqLywKIAkJCQlGNUEx
NTQyODEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJzICov
LApAQCAtMzIxODMsOCArMzIxMzYsNiBAQAogCQkJCTBGNTREQ0U1MTg4MTA1MUQwMDNFRURCQiAv
KiBUZXh0QXV0b1NpemluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzJDMDBDNDEyOTYxMUYx
MDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZD
OTcwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUIyQUZGQzk4MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEQkY4REQxMjc2OTE5
QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkMzREEzOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyQzNEQTNCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNJQ1UuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zMjMwMyw5ICszMjI1NCw2IEBACiAJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjRE
OTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERjMxN0IxMUY4RDY4MzAwM0M1QkY4IC8qIFVz
ZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNzRENDM3
MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
VVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8q
IFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFM0JCRjA3MTE2MkRBMTEwMEI5
NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQwMEQw
QjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBkNTMzYzM3MGNlNjc1ZmZhNTg2NGM2NDY2YTg0MTQ3
M2JmNDFlMTY3Li5iMmQ3ZGFlNzI5NWQwYTI0ODA4ZDAwZGQzNGJiNDMzNTAyYjkzMzVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVk
ZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2lu
Y2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGI2OTUyZTJiODZmMTljZWM2NmRjYmFm
Y2U5NjYyMWI2ZDUxMTk5YjkuLmYxODY1NDk2N2RkZTU3NzU2ZTVkMzU5Nzg3M2Q1MmI5MmFjNDc3
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2Vs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJWaXNpYmxlUG9zaXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAppbmRleCBjYjc0YWY5NjMwZGI0ZTI1ODg1MDZlNzU3MjZlZDNhMDBmZTExY2Y2Li4wN2Fh
YjYxNmNiNjdmOTZmODdlZmYxYzQ2N2ZkYmRmOTUzMDYxNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiU2ltcGxl
TGluZUxheW91dC5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2lu
Y2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiAhVUNPTkZJR19OT19DT0xMQVRJT04KLSNp
bmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCiAjaW5jbHVkZSA8dW5pY29k
ZS91c2VhcmNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVS5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggZWQ2YTY4YTFhYTY2NDYwMGE5NjNj
NjkyZTJjYjg4YzAzODUzZTRiZS4uZTBkYzQwNTVlYWVkZjhiMzg4YjM0ZWIyYmU4MjZiMWQ0NTJm
NmQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMzcsNyAr
MzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJUZXh0Lmgi
CiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRv
ci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUg
Imh0bWxlZGl0aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCAwMjNhYzMzOTBmMmJkYTJiNzUzZjdhYmI4MzA2OTM5YTRkMzZmMDUyLi4zNGI0Y2NjYWVk
N2I5ZjM1OGE5NzM2ODllM2IwNzZhYjU3YWU1N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlICJTY29wZWRFdmVu
dFF1ZXVlLmgiCiAjaW5jbHVkZSAiU2VhcmNoSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVk
ZSAiVG91Y2hFdmVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKaW5kZXggZjkyMTA4YWNhNmYxZDhhM2Q5Y2VkYWNkYjBiODA4MmRkZjM4MmM4ZC4uY2Yy
YThhODg3MDYxOGQwMGUzZjU2ZWUxMmEyYmI3NmNmZjRjNTJhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJU
ZXh0Tm9kZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNhYWY0
MTQ1ZWQxOGNkZDA3YzViNDk4N2ZlNzc3OTBjNDAzMjYwMTkuLjg5MWI2YmJmYTljYTYzYmM1NWQx
MzBjZmJiZjA5NTEyOTg4YzA4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTcw
LDcgKzcwLDcgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5w
dXRUeXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSAiVGV4
dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogI2luY2x1ZGUgIlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1lSW5wdXRUeXBlLmgi
CiAjaW5jbHVkZSAiVVJMSW5wdXRUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHAKaW5kZXggYWQxZDRlMzQ4MDA2OWY3YWEwZDE3NDFkMTFiMzhkMDc0ODQ0
YzI0ZC4uMjY2ODgxMzkxOGRmNmUxZGU3ZDU5Mzg3MzY4YTEyOGMzYjE5MmQ4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNTEsNyArNTEsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRl
clRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0
ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNs
dWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIK
ICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUu
Y3BwCmluZGV4IGI1NGU5YjJlN2Q5ZDEyOGIxY2M5NTMzNjE0ZDhmMDRhNzc1Y2U2ODguLmY2ZjAy
NzZkMThkODY4MDQwZGJmYjYyNTg4MmI3MDhjMzM2NThlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0SW5wdXRUeXBlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ljdS91
bmljb2RlL3V0ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGV4dC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDMxOTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIyMjE1
ZTY0ZmYzMzllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ljdS91bmljb2RlL3V0ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
NjAwICswLDAgQEAKLS8qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qICAgQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKLSogICBDb3Jw
b3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSoKLSoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKLSogICBmaWxlIG5hbWU6ICB1dGV4dC5oCi0qICAgZW5jb2Rpbmc6ICAgVVMt
QVNDSUkKLSogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKLSogICBpbmRlbnRhdGlvbjo0Ci0q
Ci0qICAgY3JlYXRlZCBvbjogMjAwNG9jdDA2Ci0qICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNj
aGVyZXIKLSovCi0KLSNpZm5kZWYgX19VVEVYVF9IX18KLSNkZWZpbmUgX19VVEVYVF9IX18KLQot
LyoqCi0gKiBcZmlsZQotICogXGJyaWVmIEMgQVBJOiBBYnN0cmFjdCBVbmljb2RlIFRleHQgQVBJ
Ci0gKgotICogVGhlIFRleHQgQWNjZXNzIEFQSSBwcm92aWRlcyBhIG1lYW5zIHRvIGFsbG93IHRl
eHQgdGhhdCBpcyBzdG9yZWQgaW4gYWx0ZXJuYXRpdmUKLSAqIGZvcm1hdHMgdG8gd29yayB3aXRo
IElDVSBzZXJ2aWNlcy4gIElDVSBub3JtYWxseSBvcGVyYXRlcyBvbiB0ZXh0IHRoYXQgaXMKLSAq
IHN0b3JlZCBpbiBVVEYtMTYgZm9ybWF0LCBpbiAoVUNoYXIgKikgYXJyYXlzIGZvciB0aGUgQyBB
UElzIG9yIGFzIHR5cGUKLSAqIFVuaWNvZGVTdHJpbmcgZm9yIEMrKyBBUElzLgotICoKLSAqIElD
VSBUZXh0IEFjY2VzcyBhbGxvd3Mgb3RoZXIgZm9ybWF0cywgc3VjaCBhcyBVVEYtOCBvciBub24t
Y29udGlndW91cwotICogVVRGLTE2IHN0cmluZ3MsIHRvIGJlIHBsYWNlZCBpbiBhIFVUZXh0IHdy
YXBwZXIgYW5kIHRoZW4gcGFzc2VkIHRvIElDVSBzZXJ2aWNlcy4KLSAqCi0gKiBUaGVyZSBhcmUg
dGhyZWUgZ2VuZXJhbCBjbGFzc2VzIG9mIHVzYWdlIGZvciBVVGV4dDoKLSAqCi0gKiAgICAgQXBw
bGljYXRpb24gTGV2ZWwgVXNlLiAgVGhpcyBpcyB0aGUgc2ltcGxlc3QgdXNhZ2UgLSBhcHBsaWNh
dGlvbnMgd291bGQKLSAqICAgICB1c2Ugb25lIG9mIHRoZSB1dGV4dF9vcGVuKCkgZnVuY3Rpb25z
IG9uIHRoZWlyIGlucHV0IHRleHQsIGFuZCBwYXNzCi0gKiAgICAgdGhlIHJlc3VsdGluZyBVVGV4
dCB0byB0aGUgZGVzaXJlZCBJQ1Ugc2VydmljZS4KLSAqCi0gKiAgICAgU2Vjb25kIGlzIHVzYWdl
IGluIElDVSBTZXJ2aWNlcywgc3VjaCBhcyBicmVhayBpdGVyYXRpb24sIHRoYXQgd2lsbCBuZWVk
IHRvCi0gKiAgICAgb3BlcmF0ZSBvbiBpbnB1dCBwcmVzZW50ZWQgdG8gdGhlbSBhcyBhIFVUZXh0
LiAgVGhlc2UgaW1wbGVtZW50YXRpb25zCi0gKiAgICAgd2lsbCBuZWVkIHRvIHVzZSB0aGUgaXRl
cmF0aW9uIGFuZCByZWxhdGVkIFVUZXh0IGZ1bmN0aW9ucyB0byBnYWluCi0gKiAgICAgYWNjZXNz
IHRvIHRoZSBhY3R1YWwgdGV4dC4KLSAqCi0gKiAgICAgVGhlIHRoaXJkIGNsYXNzIG9mIFVUZXh0
IHVzZXJzIGFyZSAidGV4dCBwcm92aWRlcnMuIiAgVGhlc2UgYXJlIHRoZQotICogICAgIFVUZXh0
IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdGV4dCBzdG9yYWdlIGZvcm1hdHMuICBB
biBhcHBsaWNhdGlvbgotICogICAgIG9yIHN5c3RlbSB3aXRoIGEgdW5pcXVlIHRleHQgc3RvcmFn
ZSBmb3JtYXQgY2FuIGltcGxlbWVudCBhIHNldCBvZgotICogICAgIFVUZXh0IHByb3ZpZGVyIGZ1
bmN0aW9ucyBmb3IgdGhhdCBmb3JtYXQsIHdoaWNoIHdpbGwgdGhlbiBhbGxvdwotICogICAgIElD
VSBzZXJ2aWNlcyB0byBvcGVyYXRlIG9uIHRoYXQgZm9ybWF0LgotICoKLSAqCi0gKiA8ZW0+SXRl
cmF0aW5nIG92ZXIgdGV4dDwvZW0+Ci0gKgotICogSGVyZSBpcyBzYW1wbGUgY29kZSBmb3IgYSBm
b3J3YXJkIGl0ZXJhdGlvbiBvdmVyIHRoZSBjb250ZW50cyBvZiBhIFVUZXh0Ci0gKgotICogXGNv
ZGUKLSAqICAgIFVDaGFyMzIgIGM7Ci0gKiAgICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZlcigpOwot
ICoKLSAqICAgIGZvciAoYz11dGV4dF9uZXh0MzJGcm9tKHV0LCAwKTsgYz49MDsgYz11dGV4dF9u
ZXh0MzIodXQpKSB7Ci0gKiAgICAgICAvLyBkbyB3aGF0ZXZlciB3aXRoIHRoZSBjb2RlcG9pbnQg
YyBoZXJlLgotICogICAgfQotICogXGVuZGNvZGUKLSAqCi0gKiBBbmQgaGVyZSBpcyBzaW1pbGFy
IGNvZGUgdG8gaXRlcmF0ZSBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGZyb20gdGhlIGVuZAot
ICogb2YgdGhlIHRleHQgdG93YXJkcyB0aGUgYmVnaW5uaW5nLgotICoKLSAqIFxjb2RlCi0gKiAg
ICBVQ2hhcjMyICBjOwotICogICAgVVRleHQgICAgKnV0ID0gd2hhdGV2ZXIoKTsKLSAqICAgIGlu
dCAgICAgIHRleHRMZW5ndGggPSB1dGV4dF9uYXRpdmVMZW5ndGgodXQpOwotICogICAgZm9yIChj
PXV0ZXh0X3ByZXZpb3VzMzJGcm9tKHV0LCB0ZXh0TGVuZ3RoKTsgYz49MDsgYz11dGV4dF9wcmV2
aW91czMyKHV0KSkgewotICogICAgICAgLy8gZG8gd2hhdGV2ZXIgd2l0aCB0aGUgY29kZXBvaW50
IGMgaGVyZS4KLSAqICAgIH0KLSAqIFxlbmRjb2RlCi0gKgotICogPGVtPkNoYXJhY3RlcnMgYW5k
IEluZGV4aW5nPC9lbT4KLSAqCi0gKiBJbmRleGluZyBpbnRvIHRleHQgYnkgVVRleHQgZnVuY3Rp
b25zIGlzIG5lYXJseSBhbHdheXMgaW4gdGVybXMgb2YgdGhlIG5hdGl2ZQotICogaW5kZXhpbmcg
b2YgdGhlIHVuZGVybHlpbmcgdGV4dCBzdG9yYWdlLiAgVGhlIHN0b3JhZ2UgZm9ybWF0IGNvdWxk
IGJlIFVURi04Ci0gKiBvciBVVEYtMzIsIGZvciBleGFtcGxlLiAgV2hlbiBjb2RpbmcgdG8gdGhl
IFVUZXh0IGFjY2VzcyBBUEksIG5vIGFzc3VtcHRpb25zCi0gKiBjYW4gYmUgbWFkZSByZWdhcmRp
bmcgdGhlIHNpemUgb2YgY2hhcmFjdGVycywgb3IgaG93IGZhciBhbiBpbmRleAotICogbWF5IG1v
dmUgd2hlbiBpdGVyYXRpbmcgYmV0d2VlbiBjaGFyYWN0ZXJzLgotICoKLSAqIEFsbCBpbmRpY2Vz
IHN1cHBsaWVkIHRvIFVUZXh0IGZ1bmN0aW9ucyBhcmUgcGlubmVkIHRvIHRoZSBsZW5ndGggb2Yg
dGhlCi0gKiB0ZXh0LiAgQW4gb3V0LW9mLWJvdW5kcyBpbmRleCBpcyBub3QgY29uc2lkZXJlZCB0
byBiZSBhbiBlcnJvciwgYnV0IGlzCi0gKiBhZGp1c3RlZCB0byBiZSBpbiB0aGUgcmFuZ2UgIDAg
PD0gaW5kZXggPD0gbGVuZ3RoIG9mIGlucHV0IHRleHQuCi0gKgotICoKLSAqIFdoZW4gYW4gaW5k
ZXggcG9zaXRpb24gaXMgcmV0dXJuZWQgZnJvbSBhIFVUZXh0IGZ1bmN0aW9uLCBpdCB3aWxsIGJl
Ci0gKiBhIG5hdGl2ZSBpbmRleCB0byB0aGUgdW5kZXJseWluZyB0ZXh0LiAgSW4gdGhlIGNhc2Ug
b2YgbXVsdGktdW5pdCBjaGFyYWN0ZXJzLAotICogaXQgd2lsbCAgYWx3YXlzIHJlZmVyIHRvIHRo
ZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyLAotICogbmV2ZXIgdG8gdGhlIGludGVy
aW9yLiAgVGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSB0aGluZyBhcyBzYXlpbmcgdGhhdAot
ICogYSByZXR1cm5lZCBpbmRleCB3aWxsIGFsd2F5cyBwb2ludCB0byBhIGJvdW5kYXJ5IGJldHdl
ZW4gY2hhcmFjdGVycy4KLSAqCi0gKiBXaGVuIGEgbmF0aXZlIGluZGV4IGlzIHN1cHBsaWVkIHRv
IGEgVVRleHQgZnVuY3Rpb24sIGFsbCBpbmRpY2VzIHRoYXQKLSAqIHJlZmVyIHRvIGFueSBwYXJ0
IG9mIGEgbXVsdGktdW5pdCBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gYXJlIGNvbnNpZGVyZWQK
LSAqIHRvIGJlIGVxdWl2YWxlbnQuICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11bml0IGNoYXJhY3Rl
cnMsIGFuIGluY29taW5nIGluZGV4Ci0gKiB3aWxsIGJlIGxvZ2ljYWxseSBub3JtYWxpemVkIHRv
IHJlZmVyIHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgotICogCi0gKiBJdCBpcyBwb3Nz
aWJsZSB0byB0ZXN0IHdoZXRoZXIgYSBuYXRpdmUgaW5kZXggaXMgb24gYSBjb2RlIHBvaW50IGJv
dW5kYXJ5Ci0gKiBieSBkb2luZyBhIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCkgZm9sbG93ZWQgYnkg
YSB1dGV4dF9nZXROYXRpdmVJbmRleCgpLgotICogSWYgdGhlIGluZGV4IGlzIHJldHVybmVkIHVu
Y2hhbmdlZCwgaXQgd2FzIG9uIGEgY29kZSBwb2ludCBib3VuZGFyeS4gIElmCi0gKiBhbiBhZGp1
c3RlZCBpbmRleCBpcyByZXR1cm5lZCwgdGhlIG9yaWdpbmFsIGluZGV4IHJlZmVycmVkIHRvIHRo
ZQotICogaW50ZXJpb3Igb2YgYSBjaGFyYWN0ZXIuCi0gKgotICogPGVtPkNvbnZlbnRpb25zIGZv
ciBjYWxsaW5nIFVUZXh0IGZ1bmN0aW9uczwvZW0+Ci0gKgotICogTW9zdCBVVGV4dCBhY2Nlc3Mg
ZnVuY3Rpb25zIGhhdmUgYXMgdGhlaXIgZmlyc3QgcGFyYW1ldGVyIGEgKFVUZXh0ICopIHBvaW50
ZXIsCi0gKiB3aGljaCBzcGVjaWZpZXMgdGhlIFVUZXh0IHRvIGJlIHVzZWQuICBVbmxlc3Mgb3Ro
ZXJ3aXNlIG5vdGVkLCB0aGUKLSAqIHBvaW50ZXIgbXVzdCByZWZlciB0byBhIHZhbGlkLCBvcGVu
IFVUZXh0LiAgQXR0ZW1wdGluZyB0bwotICogdXNlIGEgY2xvc2VkIFVUZXh0IG9yIHBhc3Npbmcg
YSBOVUxMIHBvaW50ZXIgaXMgYSBwcm9ncmFtbWluZyBlcnJvciBhbmQKLSAqIHdpbGwgcHJvZHVj
ZSB1bmRlZmluZWQgcmVzdWx0cyBvciBOVUxMIHBvaW50ZXIgZXhjZXB0aW9ucy4KLSAqIAotICog
VGhlIFVUZXh0X09wZW4gZmFtaWx5IG9mIGZ1bmN0aW9ucyBjYW4gZWl0aGVyIG9wZW4gYW4gZXhp
c3RpbmcgKGNsb3NlZCkKLSAqIFVUZXh0LCBvciBoZWFwIGFsbG9jYXRlIGEgbmV3IFVUZXh0LiAg
SGVyZSBpcyBzYW1wbGUgY29kZSBmb3IgY3JlYXRpbmcKLSAqIGEgc3RhY2stYWxsb2NhdGVkIFVU
ZXh0LgotICoKLSAqIFxjb2RlCi0gKiAgICBjaGFyICAgICAqcyA9IHdoYXRldmVyKCk7ICAvLyBB
IHV0Zi04IHN0cmluZyAKLSAqICAgIFVfRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAqICAgIFVUZXh0ICAgIHV0ID0gVVRFWFRfSU5JVElBTElaRVI7Ci0gKiAgICB1dGV4dF9vcGVu
VVRGOCh1dCwgcywgLTEsICZzdGF0dXMpOwotICogICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
Ci0gKiAgICAgICAgLy8gZXJyb3IgaGFuZGxpbmcKLSAqICAgIH0gZWxzZSB7Ci0gKiAgICAgICAg
Ly8gd29yayB3aXRoIHRoZSBVVGV4dAotICogICAgfQotICogXGVuZGNvZGUKLSAqCi0gKiBBbnkg
ZXhpc3RpbmcgVVRleHQgcGFzc2VkIHRvIGFuIG9wZW4gZnVuY3Rpb24gX211c3RfIGhhdmUgYmVl
biBpbml0aWFsaXplZCwgCi0gKiBlaXRoZXIgYnkgdGhlIFVURVhUX0lOSVRJQUxJWkVSLCBvciBi
eSBoYXZpbmcgYmVlbiBvcmlnaW5hbGx5IGhlYXAtYWxsb2NhdGVkCi0gKiBieSBhbiBvcGVuIGZ1
bmN0aW9uLiAgUGFzc2luZyBOVUxMIHdpbGwgY2F1c2UgdGhlIG9wZW4gZnVuY3Rpb24gdG8KLSAq
IGhlYXAtYWxsb2NhdGUgYW5kIGZ1bGx5IGluaXRpYWxpemUgYSBuZXcgVVRleHQuCi0gKgotICov
Ci0KLQotCi0jaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKLSNpbmNsdWRlICJ1bmljb2RlL3Vj
aGFyLmgiCi0jaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKLSNpbmNsdWRlICJ1bmljb2RlL2xvY2Fs
cG9pbnRlci5oIgotI2luY2x1ZGUgInVuaWNvZGUvcmVwLmgiCi0jaW5jbHVkZSAidW5pY29kZS91
bmlzdHIuaCIKLSNpbmNsdWRlICJ1bmljb2RlL2NoYXJpdGVyLmgiCi0jZW5kaWYKLQotCi1VX0NE
RUNMX0JFR0lOCi0KLXN0cnVjdCBVVGV4dDsKLXR5cGVkZWYgc3RydWN0IFVUZXh0IFVUZXh0OyAv
Kio8IEMgdHlwZWRlZiBmb3Igc3RydWN0IFVUZXh0LiBAc3RhYmxlIElDVSAzLjYgKi8KLQotCi0v
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogICBDIEZ1bmN0aW9ucyBmb3Ig
Y3JlYXRpbmcgVVRleHQgd3JhcHBlcnMgYXJvdW5kIHZhcmlvdXMga2luZHMgb2YgdGV4dCBzdHJp
bmdzLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLS8qKgotICAq
IENsb3NlIGZ1bmN0aW9uIGZvciBVVGV4dCBpbnN0YW5jZXMuCi0gICogQ2xlYW5zIHVwLCByZWxl
YXNlcyBhbnkgcmVzb3VyY2VzIGJlaW5nIGhlbGQgYnkgYW4gb3BlbiBVVGV4dC4KLSAgKiA8cD4K
LSAgKiAgIElmIHRoZSBVVGV4dCB3YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQgYnkgb25lIG9mIHRo
ZSB1dGV4dF9vcGVuIGZ1bmN0aW9ucywKLSAgKiAgIHRoZSBzdG9yYWdlIGFzc29jaWF0ZWQgd2l0
aCB0aGUgdXRleHQgd2lsbCBhbHNvIGJlIGZyZWVkLgotICAqICAgSWYgdGhlIFVUZXh0IHN0b3Jh
Z2Ugb3JpZ2luYXRlZCB3aXRoIHRoZSBhcHBsaWNhdGlvbiwgYXMgaXQgd291bGQgd2l0aAotICAq
ICAgYSBsb2NhbCBvciBzdGF0aWMgaW5zdGFuY2UsIHRoZSBzdG9yYWdlIHdpbGwgbm90IGJlIGRl
bGV0ZWQuCi0gICoKLSAgKiAgIEFuIG9wZW4gVVRleHQgY2FuIGJlIHJlc2V0IHRvIHJlZmVyIHRv
IG5ldyBzdHJpbmcgYnkgdXNpbmcgb25lIG9mIHRoZSB1dGV4dF9vcGVuKCkKLSAgKiAgIGZ1bmN0
aW9ucyB3aXRob3V0IGZpcnN0IGNsb3NpbmcgdGhlIFVUZXh0LiAgCi0gICoKLSAgKiBAcGFyYW0g
dXQgIFRoZSBVVGV4dCB0byBiZSBjbG9zZWQuCi0gICogQHJldHVybiAgICBOVUxMIGlmIHRoZSBV
VGV4dCBzdHJ1Y3Qgd2FzIGRlbGV0ZWQgYnkgdGhlIGNsb3NlLiAgSWYgdGhlIFVUZXh0IHN0cnVj
dAotICAqICAgICAgICAgICAgd2FzIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciB0
byB0aGUgb3BlbiBmdW5jdGlvbiwgaXQgaXMKLSAgKiAgICAgICAgICAgIHJldHVybmVkIGJ5IHRo
aXMgZnVuY3Rpb24sIGFuZCBtYXkgYmUgc2FmZWx5IHVzZWQgYWdhaW4gaW4KLSAgKiAgICAgICAg
ICAgIGEgc3Vic2VxdWVudCB1dGV4dF9vcGVuLgotICAqCi0gICogQHN0YWJsZSBJQ1UgMy40Ci0g
ICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfY2xvc2UoVVRleHQgKnV0KTsK
LQotI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCi0KLVVfTkFNRVNQQUNFX0JFR0lOCi0KLS8qKgot
ICogXGNsYXNzIExvY2FsVVRleHRQb2ludGVyCi0gKiAiU21hcnQgcG9pbnRlciIgY2xhc3MsIGNs
b3NlcyBhIFVUZXh0IHZpYSB1dGV4dF9jbG9zZSgpLgotICogRm9yIG1vc3QgbWV0aG9kcyBzZWUg
dGhlIExvY2FsUG9pbnRlckJhc2UgYmFzZSBjbGFzcy4KLSAqCi0gKiBAc2VlIExvY2FsUG9pbnRl
ckJhc2UKLSAqIEBzZWUgTG9jYWxQb2ludGVyCi0gKiBAc3RhYmxlIElDVSA0LjQKLSAqLwotVV9E
RUZJTkVfTE9DQUxfT1BFTl9QT0lOVEVSKExvY2FsVVRleHRQb2ludGVyLCBVVGV4dCwgdXRleHRf
Y2xvc2UpOwotCi1VX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmCi0KLS8qKgotICogT3BlbiBhIHJl
YWQtb25seSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBmb3IgVVRGLTggc3RyaW5ncy4KLSAqIAotICog
XGh0bWxvbmx5Ci0gKiBBbnkgaW52YWxpZCBVVEYtOCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBoYW5k
bGVkIGluIHRoaXMgd2F5OgotICogYSBzZXF1ZW5jZSBvZiBieXRlcyB0aGF0IGhhcyB0aGUgZm9y
bSBvZiBhIHRydW5jYXRlZCwgYnV0IG90aGVyd2lzZSB2YWxpZCwKLSAqIFVURi04IHNlcXVlbmNl
IHdpbGwgYmUgcmVwbGFjZWQgYnkgYSBzaW5nbGUgdW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0
ZXIsIFx1RkZGRC4gCi0gKiBBbnkgb3RoZXIgaWxsZWdhbCBieXRlcyB3aWxsIGVhY2ggYmUgcmVw
bGFjZWQgYnkgYSBcdUZGRkQuCi0gKiBcZW5kaHRtbG9ubHkKLSAqIAotICogQHBhcmFtIHV0ICAg
ICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBi
ZSBjcmVhdGVkLgotICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCByZWZlciB0byBh
biBpbml0aWFsaXplZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdpbGwgdGhlbgotICogICAgICAgICAg
ICAgICBiZSByZXNldCB0byByZWZlcmVuY2UgdGhlIHNwZWNpZmllZCBVVEYtOCBzdHJpbmcuCi0g
KiBAcGFyYW0gcyAgICAgIEEgVVRGLTggc3RyaW5nLiAgTXVzdCBub3QgYmUgTlVMTC4KLSAqIEBw
YXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgVVRGLTggc3RyaW5nIGluIGJ5dGVzLCBvciAt
MSBpZiB0aGUgc3RyaW5nIGlzCi0gKiAgICAgICAgICAgICAgIHplcm8gdGVybWluYXRlZC4KLSAq
IEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgotICogQHJldHVybiAgICAg
ICBBIHBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYgYSBwcmUtYWxsb2NhdGVkIFVUZXh0IHdhcyBw
cm92aWRlZCwgaXQKLSAqICAgICAgICAgICAgICAgd2lsbCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0
dXJuZWQuCi0gKiBAc3RhYmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9S
VDIKLXV0ZXh0X29wZW5VVEY4KFVUZXh0ICp1dCwgY29uc3QgY2hhciAqcywgaW50NjRfdCBsZW5n
dGgsIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotLyoqCi0gKiBPcGVuIGEgcmVhZC1vbmx5IFVU
ZXh0IGZvciBVQ2hhciAqIHN0cmluZy4KLSAqIAotICogQHBhcmFtIHV0ICAgICBQb2ludGVyIHRv
IGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgot
ICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCByZWZlciB0byBhbiBpbml0aWFsaXpl
ZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdpbGwgdGhlbgotICogICAgICAgICAgICAgICBiZSByZXNl
dCB0byByZWZlcmVuY2UgdGhlIHNwZWNpZmllZCBVQ2hhciBzdHJpbmcuCi0gKiBAcGFyYW0gcyAg
ICAgIEEgVUNoYXIgKFVURi0xNikgc3RyaW5nCi0gKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1iZXIg
b2YgVUNoYXJzIGluIHRoZSBpbnB1dCBzdHJpbmcsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMKLSAq
ICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMg
YXJlIHJldHVybmVkIGhlcmUuCi0gKiBAcmV0dXJuICAgICAgIEEgcG9pbnRlciB0byB0aGUgVVRl
eHQuICBJZiBhIHByZS1hbGxvY2F0ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBpdAotICogICAgICAg
ICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KLSAqIEBzdGFibGUgSUNV
IDMuNAotICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfb3BlblVDaGFycyhV
VGV4dCAqdXQsIGNvbnN0IFVDaGFyICpzLCBpbnQ2NF90IGxlbmd0aCwgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKLQotCi0jaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKLS8qKgotICogT3BlbiBhIHdyaXRh
YmxlIFVUZXh0IGZvciBhIG5vbi1jb25zdCBVbmljb2RlU3RyaW5nLiAKLSAqIAotICogQHBhcmFt
IHV0ICAgICAgUG9pbnRlciB0byBhIFVUZXh0IHN0cnVjdC4gIElmIE5VTEwsIGEgbmV3IFVUZXh0
IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCBy
ZWZlciB0byBhbiBpbml0aWFsaXplZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdpbGwgdGhlbgotICog
ICAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIGlucHV0
IHN0cmluZy4KLSAqIEBwYXJhbSBzICAgICAgIEEgVW5pY29kZVN0cmluZy4KLSAqIEBwYXJhbSBz
dGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgotICogQHJldHVybiAgICAgICAgUG9pbnRl
ciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwgdGhpcwot
ICogICAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVybmVkLgotICog
QHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCi11dGV4dF9v
cGVuVW5pY29kZVN0cmluZyhVVGV4dCAqdXQsIGljdTo6VW5pY29kZVN0cmluZyAqcywgVUVycm9y
Q29kZSAqc3RhdHVzKTsKLQotCi0vKioKLSAqIE9wZW4gYSBVVGV4dCBmb3IgYSBjb25zdCBVbmlj
b2RlU3RyaW5nLiAgIFRoZSByZXN1bHRpbmcgVVRleHQgd2lsbCBub3QgYmUgd3JpdGFibGUuCi0g
KiAKLSAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwg
YSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgotICogICAgICAgICAgICAgICBJZiBub24tTlVM
TCwgbXVzdCByZWZlciB0byBhbiBpbml0aWFsaXplZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdpbGwg
dGhlbgotICogICAgICAgICAgICAgICBiZSByZXNldCB0byByZWZlcmVuY2UgdGhlIHNwZWNpZmll
ZCBpbnB1dCBzdHJpbmcuCi0gKiBAcGFyYW0gcyAgICAgIEEgY29uc3QgVW5pY29kZVN0cmluZyB0
byBiZSB3cmFwcGVkLgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUu
Ci0gKiBAcmV0dXJuICAgICAgIFBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYgYSBVVGV4dCB3YXMg
c3VwcGxpZWQgYXMgaW5wdXQsIHRoaXMKLSAqICAgICAgICAgICAgICAgd2lsbCBhbHdheXMgYmUg
dXNlZCBhbmQgcmV0dXJuZWQuCi0gKiBAc3RhYmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVVRl
eHQgKiBVX0VYUE9SVDIKLXV0ZXh0X29wZW5Db25zdFVuaWNvZGVTdHJpbmcoVVRleHQgKnV0LCBj
b25zdCBpY3U6OlVuaWNvZGVTdHJpbmcgKnMsIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotLyoq
Ci0gKiBPcGVuIGEgd3JpdGFibGUgVVRleHQgaW1wbGVtZW50YXRpb24gZm9yIGFuIElDVSBSZXBs
YWNlYWJsZSBvYmplY3QuCi0gKiBAcGFyYW0gdXQgICAgUG9pbnRlciB0byBhIFVUZXh0IHN0cnVj
dC4gIElmIE5VTEwsIGEgbmV3IFVUZXh0IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAgICAgICAg
ICAgSWYgbm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4dCwg
d2hpY2ggd2lsbCB0aGVuCi0gKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0
aGUgc3BlY2lmaWVkIHJlcGxhY2VhYmxlIHRleHQuCi0gKiBAcGFyYW0gcmVwICAgIEEgUmVwbGFj
ZWFibGUgdGV4dCBvYmplY3QuCi0gKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQg
aGVyZS4KLSAqIEByZXR1cm4gICAgICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0
IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwgdGhpcwotICogICAgICAgICAgICAgICB3aWxsIGFsd2F5
cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KLSAqIEBzZWUgUmVwbGFjZWFibGUKLSAqIEBzdGFibGUg
SUNVIDMuNAotICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfb3BlblJlcGxh
Y2VhYmxlKFVUZXh0ICp1dCwgaWN1OjpSZXBsYWNlYWJsZSAqcmVwLCBVRXJyb3JDb2RlICpzdGF0
dXMpOwotCi0vKioKLSAqIE9wZW4gYSAgVVRleHQgaW1wbGVtZW50YXRpb24gb3ZlciBhbiBJQ1Ug
Q2hhcmFjdGVySXRlcmF0b3IuCi0gKiBAcGFyYW0gdXQgICAgUG9pbnRlciB0byBhIFVUZXh0IHN0
cnVjdC4gIElmIE5VTEwsIGEgbmV3IFVUZXh0IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAgICAg
ICAgICAgSWYgbm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4
dCwgd2hpY2ggd2lsbCB0aGVuCi0gKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5j
ZSB0aGUgc3BlY2lmaWVkIHJlcGxhY2VhYmxlIHRleHQuCi0gKiBAcGFyYW0gY2kgICAgIEEgQ2hh
cmFjdGVyIEl0ZXJhdG9yLgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhl
cmUuCi0gKiBAcmV0dXJuICAgICAgIFBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYgYSBVVGV4dCB3
YXMgc3VwcGxpZWQgYXMgaW5wdXQsIHRoaXMKLSAqICAgICAgICAgICAgICAgd2lsbCBhbHdheXMg
YmUgdXNlZCBhbmQgcmV0dXJuZWQuCi0gKiBAc2VlIFJlcGxhY2VhYmxlCi0gKiBAc3RhYmxlIElD
VSAzLjQKLSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X29wZW5DaGFyYWN0
ZXJJdGVyYXRvcihVVGV4dCAqdXQsIGljdTo6Q2hhcmFjdGVySXRlcmF0b3IgKmNpLCBVRXJyb3JD
b2RlICpzdGF0dXMpOwotCi0jZW5kaWYKLQotCi0vKioKLSAgKiAgQ2xvbmUgYSBVVGV4dC4gIFRo
aXMgaXMgbXVjaCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3aGVyZSB0aGUgc291cmNlIHRleHQgaXMg
aXRzZWxmCi0gICogIGFub3RoZXIgVVRleHQuCi0gICoKLSAgKiAgQSBkZWVwIGNsb25lIHdpbGwg
Y29weSBib3RoIHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSB1bmRlcmx5aW5nIHRl
eHQuCi0gICogIFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVkIFVUZXh0IHdpbGwgb3BlcmF0ZSBjb21w
bGV0ZWx5IGluZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlvbnMKLSAgKiAgbWFkZSB0byB0aGUgdGV4
dCBpbiBvbmUgd2lsbCBub3QgYWZmZWN0IHRoZSBvdGhlci4gIFRleHQgcHJvdmlkZXJzIGFyZSBu
b3QKLSAgKiAgcmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVwIGNsb25lcy4gIFRoZSB1c2VyIG9mIGNs
b25lKCkgbXVzdCBjaGVjayB0aGUgc3RhdHVzIHJldHVybgotICAqICBhbmQgYmUgcHJlcGFyZWQg
dG8gaGFuZGxlIGZhaWx1cmVzLgotICAqCi0gICogIFRoZSBzdGFuZGFyZCBVVGV4dCBpbXBsZW1l
bnRhdGlvbnMgZm9yIFVURjgsIFVDaGFyICosIFVuaWNvZGVTdHJpbmcgYW5kCi0gICogIFJlcGxh
Y2VhYmxlIGFsbCBzdXBwb3J0IGRlZXAgY2xvbmluZy4KLSAgKgotICAqICBUaGUgVVRleHQgcmV0
dXJuZWQgZnJvbSBhIGRlZXAgY2xvbmUgd2lsbCBiZSB3cml0YWJsZSwgYXNzdW1pbmcgdGhhdCB0
aGUgdGV4dAotICAqICBwcm92aWRlciBpcyBhYmxlIHRvIHN1cHBvcnQgd3JpdGluZywgZXZlbiBp
ZiB0aGUgc291cmNlIFVUZXh0IGhhZCBiZWVuIG1hZGUKLSAgKiAgbm9uLXdyaXRhYmxlIGJ5IG1l
YW5zIG9mIFVUZXh0X2ZyZWV6ZSgpLgotICAqCi0gICogIEEgc2hhbGxvdyBjbG9uZSByZXBsaWNh
dGVzIG9ubHkgdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlczsgaXQgZG9lcyBub3QgbWFrZQotICAq
ICBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgdGV4dC4gIFNoYWxsb3cgY2xvbmVzIGNhbiBiZSB1
c2VkIGFzIGFuIGVmZmljaWVudCB3YXkgdG8gCi0gICogIGhhdmUgbXVsdGlwbGUgaXRlcmF0b3Jz
IGFjdGl2ZSBpbiBhIHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0IGlzIG5vdCBiZWluZwotICAqICBt
b2RpZmllZC4KLSAgKgotICAqICBBIHNoYWxsb3cgY2xvbmUgb3BlcmF0aW9uIHdpbGwgbm90IGZh
aWwsIGJhcnJpbmcgdHJ1bHkgZXhjZXB0aW9uYWwgY29uZGl0aW9ucyBzdWNoCi0gICogIGFzIG1l
bW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLgotICAqCi0gICogIFNoYWxsb3cgVVRleHQgY2xvbmVz
IHNob3VsZCBiZSBhdm9pZGVkIGlmIHRoZSBVVGV4dCBmdW5jdGlvbnMgdGhhdCBtb2RpZnkgdGhl
Ci0gICogIHRleHQgYXJlIGV4cGVjdGVkIHRvIGJlIHVzZWQsIGVpdGhlciBvbiB0aGUgb3JpZ2lu
YWwgb3IgdGhlIGNsb25lZCBVVGV4dC4KLSAgKiAgQW55IHN1Y2ggbW9kaWZpY2F0aW9ucyAgY2Fu
IGNhdXNlIHVucHJlZGljdGFibGUgYmVoYXZpb3IuICBSZWFkIE9ubHkKLSAgKiAgc2hhbGxvdyBj
bG9uZXMgcHJvdmlkZSBzb21lIHByb3RlY3Rpb24gYWdhaW5zdCBlcnJvcnMgb2YgdGhpcyB0eXBl
IGJ5Ci0gICogIGRpc2FibGluZyB0ZXh0IG1vZGlmaWNhdGlvbiB2aWEgdGhlIGNsb25lZCBVVGV4
dC4KLSAgKgotICAqICBBIHNoYWxsb3cgY2xvbmUgbWFkZSB3aXRoIHRoZSByZWFkT25seSBwYXJh
bWV0ZXIgPT0gRkFMU0Ugd2lsbCBwcmVzZXJ2ZSB0aGUgCi0gICogIHV0ZXh0X2lzV3JpdGFibGUo
KSBzdGF0ZSBvZiB0aGUgc291cmNlIG9iamVjdC4gIE5vdGUsIGhvd2V2ZXIsIHRoYXQKLSAgKiAg
d3JpdGUgb3BlcmF0aW9ucyBtdXN0IGJlIGF2b2lkZWQgd2hpbGUgbW9yZSB0aGFuIG9uZSBVVGV4
dCBleGlzdHMgdGhhdCByZWZlcgotICAqICB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIHRleHQuCi0g
ICoKLSAgKiAgQSBVVGV4dCBhbmQgaXRzIGNsb25lIG1heSBiZSBzYWZlbHkgY29uY3VycmVudGx5
IGFjY2Vzc2VkIGJ5IHNlcGFyYXRlIHRocmVhZHMuCi0gICogIFRoaXMgaXMgdHJ1ZSBmb3IgcmVh
ZCBhY2Nlc3Mgb25seSB3aXRoIHNoYWxsb3cgY2xvbmVzLCBhbmQgZm9yIGJvdGggcmVhZCBhbmQK
LSAgKiAgd3JpdGUgYWNjZXNzIHdpdGggZGVlcCBjbG9uZXMuCi0gICogIEl0IGlzIHRoZSByZXNw
b25zaWJpbGl0eSBvZiB0aGUgVGV4dCBQcm92aWRlciB0byBlbnN1cmUgdGhhdCB0aGlzIHRocmVh
ZCBzYWZldHkKLSAgKiAgY29uc3RyYWludCBpcyBtZXQuCi0gICoKLSAgKiAgQHBhcmFtIGRlc3Qg
ICBBIFVUZXh0IHN0cnVjdCB0byBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBj
bG9uZSBvcGVyYXRpb24sCi0gICogICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGUgY2xvbmUg
ZnVuY3Rpb24gc2hvdWxkIGhlYXAtYWxsb2NhdGUgYSBuZXcgVVRleHQgc3RydWN0LgotICAqICAg
ICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGFscmVhZHkgZXhpc3Rp
bmcgVVRleHQsIHdoaWNoIHdpbGwgdGhlbgotICAqICAgICAgICAgICAgICAgIGJlIHJlc2V0IHRv
IGJlY29tZSB0aGUgY2xvbmUuCi0gICogIEBwYXJhbSBzcmMgICAgVGhlIFVUZXh0IHRvIGJlIGNs
b25lZC4KLSAgKiAgQHBhcmFtIGRlZXAgICBUUlVFIHRvIHJlcXVlc3QgYSBkZWVwIGNsb25lLCBG
QUxTRSBmb3IgYSBzaGFsbG93IGNsb25lLgotICAqICBAcGFyYW0gcmVhZE9ubHkgVFJVRSB0byBy
ZXF1ZXN0IHRoYXQgdGhlIGNsb25lZCBVVGV4dCBoYXZlIHJlYWQgb25seSBhY2Nlc3MgdG8gdGhl
IAotICAqICAgICAgICAgICAgICAgIHVuZGVybHlpbmcgdGV4dC4gIAotCi0gICogIEBwYXJhbSBz
dGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLiAgRm9yIGRlZXAgY2xvbmVzLCBVX1VOU1VQ
UE9SVEVEX0VSUk9SCi0gICogICAgICAgICAgICAgICAgd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUg
dGV4dCBwcm92aWRlciBpcyB1bmFibGUgdG8gY2xvbmUgdGhlCi0gICogICAgICAgICAgICAgICAg
b3JpZ2luYWwgdGV4dC4KLSAgKiAgQHJldHVybiAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBjbG9u
ZSwgb3IgTlVMTCBpZiB0aGUgY2xvbmUgb3BlcmF0aW9uIGZhaWxlZC4KLSAgKiAgQHN0YWJsZSBJ
Q1UgMy40Ci0gICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfY2xvbmUoVVRl
eHQgKmRlc3QsIGNvbnN0IFVUZXh0ICpzcmMsIFVCb29sIGRlZXAsIFVCb29sIHJlYWRPbmx5LCBV
RXJyb3JDb2RlICpzdGF0dXMpOwotCi0KLS8qKgotICAqICBDb21wYXJlIHR3byBVVGV4dCBvYmpl
Y3RzIGZvciBlcXVhbGl0eS4KLSAgKiAgVVRleHRzIGFyZSBlcXVhbCBpZiB0aGV5IGFyZSBpdGVy
YXRpbmcgb3ZlciB0aGUgc2FtZSB0ZXh0LCBhbmQKLSAgKiAgICBoYXZlIHRoZSBzYW1lIGl0ZXJh
dGlvbiBwb3NpdGlvbiB3aXRoaW4gdGhlIHRleHQuCi0gICogICAgSWYgZWl0aGVyIG9yIGJvdGgg
b2YgdGhlIHBhcmFtZXRlcnMgYXJlIE5VTEwsIHRoZSBjb21wYXJpc29uIGlzIEZBTFNFLgotICAq
Ci0gICogIEBwYXJhbSBhICAgVGhlIGZpcnN0IG9mIHRoZSB0d28gVVRleHRzIHRvIGNvbXBhcmUu
Ci0gICogIEBwYXJhbSBiICAgVGhlIG90aGVyIFVUZXh0IHRvIGJlIGNvbXBhcmVkLgotICAqICBA
cmV0dXJuICAgIFRSVUUgaWYgdGhlIHR3byBVVGV4dHMgYXJlIGVxdWFsLgotICAqICBAc3RhYmxl
IElDVSAzLjYKLSAgKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdXRleHRfZXF1YWxzKGNv
bnN0IFVUZXh0ICphLCBjb25zdCBVVGV4dCAqYik7Ci0KLQotLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKgotICogICBGdW5jdGlvbnMgdG8gd29yayB3aXRoIHRoZSB0ZXh0IHJlcHJlc2V0ZWQgYnkg
YSBVVGV4dCB3cmFwcGVyCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioKLSAgKiBH
ZXQgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4gIERlcGVuZGluZyBvbiB0aGUgY2hhcmFjdGVyaXN0
aWNzCi0gICogb2YgdGhlIHVuZGVybHlpbmcgdGV4dCByZXByZXNlbnRhdGlvbiwgdGhpcyBtYXkg
YmUgZXhwZW5zaXZlLiAgCi0gICogQHNlZSAgdXRleHRfaXNMZW5ndGhFeHBlbnNpdmUoKQotICAq
Ci0gICoKLSAgKiBAcGFyYW0gdXQgIHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICAqIEByZXR1
cm4gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCwgZXhwcmVzc2VkIGluIG5hdGl2ZSB1bml0cy4KLSAg
KgotICAqIEBzdGFibGUgSUNVIDMuNAotICAqLwotVV9TVEFCTEUgaW50NjRfdCBVX0VYUE9SVDIK
LXV0ZXh0X25hdGl2ZUxlbmd0aChVVGV4dCAqdXQpOwotCi0vKioKLSAqICBSZXR1cm4gVFJVRSBp
ZiBjYWxjdWxhdGluZyB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGNvdWxkIGJlIGV4cGVuc2l2ZS4K
LSAqICBGaW5kaW5nIHRoZSBsZW5ndGggb2YgTlVMIHRlcm1pbmF0ZWQgc3RyaW5ncyBpcyBjb25z
aWRlcmVkIHRvIGJlIGV4cGVuc2l2ZS4KLSAqCi0gKiAgTm90ZSB0aGF0IHRoZSB2YWx1ZSBvZiB0
aGlzIGZ1bmN0aW9uIG1heSBjaGFuZ2UKLSAqICBhcyB0aGUgcmVzdWx0IG9mIG90aGVyIG9wZXJh
dGlvbnMgb24gYSBVVGV4dC4KLSAqICBPbmNlIHRoZSBsZW5ndGggb2YgYSBzdHJpbmcgaGFzIGJl
ZW4gZGlzY292ZXJlZCwgaXQgd2lsbCBubyBsb25nZXIKLSAqICBiZSBleHBlbnNpdmUgdG8gcmVw
b3J0IGl0LgotICoKLSAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KLSAqIEBy
ZXR1cm4gVFJVRSBpZiBkZXRlcm1pbmluZyB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGNvdWxkIGJl
IHRpbWUgY29uc3VtaW5nLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVCb29s
IFVfRVhQT1JUMgotdXRleHRfaXNMZW5ndGhFeHBlbnNpdmUoY29uc3QgVVRleHQgKnV0KTsKLQot
LyoqCi0gKiBSZXR1cm5zIHRoZSBjb2RlIHBvaW50IGF0IHRoZSByZXF1ZXN0ZWQgaW5kZXgsCi0g
KiBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQgaXMgb3V0IG9mIGJvdW5kcy4KLSAqCi0gKiBJZiB0
aGUgc3BlY2lmaWVkIGluZGV4IHBvaW50cyB0byB0aGUgaW50ZXJpb3Igb2YgYSBtdWx0aS11bml0
Ci0gKiBjaGFyYWN0ZXIgLSBvbmUgb2YgdGhlIHRyYWlsIGJ5dGVzIG9mIGEgVVRGLTggc2VxdWVu
Y2UsIGZvciBleGFtcGxlIC0KLSAqIHRoZSBjb21wbGV0ZSBjb2RlIHBvaW50IHdpbGwgYmUgcmV0
dXJuZWQuCi0gKgotICogVGhlIGl0ZXJhdGlvbiBwb3NpdGlvbiB3aWxsIGJlIHNldCB0byB0aGUg
c3RhcnQgb2YgdGhlIHJldHVybmVkIGNvZGUgcG9pbnQuCi0gKgotICogVGhpcyBmdW5jdGlvbiBp
cyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhlIHRoZSBzZXF1ZW5jZQotICogICAgdXRleHRfc2V0
TmF0aXZlSW5kZXgoaW5kZXgpOwotICogICAgdXRleHRfY3VycmVudDMyKCk7Ci0gKiAoVGhlcmUg
aXMgYSBzdWJ0bGUgZGlmZmVyZW5jZSBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIGJvdW5kcyBieSBi
ZWluZyBsZXNzIHRoYW4gemVybyAtIAotICogdXRleHRfc2V0TmF0aXZlSW5kZXgobmVnYXRpdmUg
dmFsdWUpIHNldHMgdGhlIGluZGV4IHRvIHplcm8sIGFmdGVyIHdoaWNoIHV0ZXh0X2N1cnJlbnQo
KQotICogd2lsbCByZXR1cm4gdGhlIGNoYXIgYXQgemVyby4gIHV0ZXh0X2NoYXIzMkF0KG5lZ2F0
aXZlIGluZGV4KSwgb24gdGhlIG90aGVyIGhhbmQsIHdpbGwKLSAqIHJldHVybiB0aGUgVV9TRU5U
SU5FTCB2YWx1ZSBvZiAtMS4pCi0gKiAKLSAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nl
c3NlZAotICogQHBhcmFtIG5hdGl2ZUluZGV4IHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJh
Y3RlciB0byBiZSBhY2Nlc3NlZC4gIElmIHRoZSBpbmRleCBwb2ludHMKLSAqICAgICAgICB0byBv
dGhlciB0aGFuIHRoZSBmaXJzdCB1bml0IG9mIGEgbXVsdGktdW5pdCBjaGFyYWN0ZXIsIGl0IHdp
bGwgYmUgYWRqdXN0ZWQKLSAqICAgICAgICB0byB0aGUgc3RhcnQgb2YgdGhlIGNoYXJhY3Rlci4K
LSAqIEByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KLSAqIEBz
dGFibGUgSUNVIDMuNAotICovCi1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdXRleHRfY2hh
cjMyQXQoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KTsKLQotCi0vKioKLSAqCi0gKiBH
ZXQgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uLAotICog
b3IgVV9TRU5USU5FTCAoLTEpIGlmIHRoZSBpdGVyYXRpb24gaGFzIHJlYWNoZWQgdGhlIGVuZCBv
ZgotICogdGhlIGlucHV0IHRleHQuCi0gKgotICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFj
Y2Vzc2VkLgotICogQHJldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGF0IHRoZSBjdXJyZW50
IGl0ZXJhdG9yIHBvc2l0aW9uLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVD
aGFyMzIgVV9FWFBPUlQyCi11dGV4dF9jdXJyZW50MzIoVVRleHQgKnV0KTsKLQotCi0vKioKLSAq
IEdldCB0aGUgY29kZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2Yg
dGhlIFVUZXh0LCBhbmQKLSAqIGFkdmFuY2UgdGhlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBpbmRl
eCBmb2xsb3dpbmcgdGhlIGNoYXJhY3Rlci4KLSAqCi0gKiBJZiB0aGUgcG9zaXRpb24gaXMgYXQg
dGhlIGVuZCBvZiB0aGUgdGV4dCAodGhlIGluZGV4IGZvbGxvd2luZwotICogdGhlIGxhc3QgY2hh
cmFjdGVyLCB3aGljaCBpcyBhbHNvIHRoZSBsZW5ndGggb2YgdGhlIHRleHQpLCAKLSAqIHJldHVy
biBVX1NFTlRJTkVMICgtMSkgYW5kIGRvIG5vdCBhZHZhbmNlIHRoZSBpbmRleC4gCi0gKgotICog
VGhpcyBpcyBhIHBvc3QtaW5jcmVtZW50IG9wZXJhdGlvbi4KLSAqCi0gKiBBbiBpbmxpbmUgbWFj
cm8gdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLCBVVEVYVF9ORVhUMzIoKSwgCi0gKiBpcyBhdmFp
bGFibGUgZm9yIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHVzZS4KLSAqCi0gKiBAcGFyYW0gdXQgdGhl
IHRleHQgdG8gYmUgYWNjZXNzZWQuCi0gKiBAcmV0dXJuIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQg
YXQgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbi4KLSAqIEBzZWUgVVRFWFRfTkVYVDMyCi0gKiBAc3Rh
YmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXV0ZXh0X25leHQz
MihVVGV4dCAqdXQpOwotCi0KLS8qKgotICogIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRv
IHRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9pbnQpIHdob3NlCi0gKiAgaW5kZXggcHJlY2VkZXMgdGhl
IGN1cnJlbnQgcG9zaXRpb24sIGFuZCByZXR1cm4gdGhhdCBjaGFyYWN0ZXIuCi0gKiAgVGhpcyBp
cyBhIHByZS1kZWNyZW1lbnQgb3BlcmF0aW9uLgotICoKLSAqICBJZiB0aGUgaW5pdGlhbCBwb3Np
dGlvbiBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgKGluZGV4IG9mIDApIAotICogIHJldHVy
biBVX1NFTlRJTkVMICgtMSksIGFuZCBsZWF2ZSB0aGUgcG9zaXRpb24gdW5jaGFuZ2VkLgotICoK
LSAqICBBbiBpbmxpbmUgbWFjcm8gdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLCBVVEVYVF9QUkVW
SU9VUzMyKCksIAotICogIGlzIGF2YWlsYWJsZSBmb3IgcGVyZm9ybWFuY2UgY3JpdGljYWwgdXNl
LgotICoKLSAqICBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCi0gKiAgQHJldHVy
biB0aGUgcHJldmlvdXMgVUNoYXIzMiBjb2RlIHBvaW50LCBvciBVX1NFTlRJTkVMICgtMSkgCi0g
KiAgICAgICAgICBpZiB0aGUgaXRlcmF0aW9uIGhhcyByZWFjaGVkIHRoZSBzdGFydCBvZiB0aGUg
dGV4dC4KLSAqICBAc2VlIFVURVhUX1BSRVZJT1VTMzIKLSAqICBAc3RhYmxlIElDVSAzLjQKLSAq
LwotVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXV0ZXh0X3ByZXZpb3VzMzIoVVRleHQgKnV0
KTsKLQotCi0vKioKLSAgKiBTZXQgdGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgcmV0dXJuIHRoZSBj
b2RlIHBvaW50IGF0IHRoYXQgaW5kZXguIAotICAqIExlYXZlIHRoZSBpdGVyYXRpb24gaW5kZXgg
YXQgdGhlIHN0YXJ0IG9mIHRoZSBmb2xsb3dpbmcgY29kZSBwb2ludC4KLSAgKgotICAqIFRoaXMg
ZnVuY3Rpb24gaXMgdGhlIG1vc3QgZWZmaWNpZW50IGFuZCBjb252ZW5pZW50IHdheSB0bwotICAq
IGJlZ2luIGEgZm9yd2FyZCBpdGVyYXRpb24uICBUaGUgcmVzdWx0cyBhcmUgaWRlbnRpY2FsIHRv
IHRoZSB0aG9zZQotICAqIGZyb20gdGhlIHNlcXVlbmNlCi0gICogXGNvZGUKLSAgKiAgICB1dGV4
dF9zZXRJbmRleCgpOwotICAqICAgIHV0ZXh0X25leHQzMigpOwotICAqIFxlbmRjb2RlCi0gICoK
LSAgKiAgQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICAqICBAcGFyYW0gbmF0
aXZlSW5kZXggSXRlcmF0aW9uIGluZGV4LCBpbiB0aGUgbmF0aXZlIHVuaXRzIG9mIHRoZSB0ZXh0
IHByb3ZpZGVyLgotICAqICBAcmV0dXJuIENvZGUgcG9pbnQgd2hpY2ggc3RhcnRzIGF0IG9yIGJl
Zm9yZSBpbmRleCwKLSAgKiAgICAgICAgIG9yIFVfU0VOVElORUwgKC0xKSBpZiBpdCBpcyBvdXQg
b2YgYm91bmRzLgotICAqIEBzdGFibGUgSUNVIDMuNAotICAqLwotVV9TVEFCTEUgVUNoYXIzMiBV
X0VYUE9SVDIKLXV0ZXh0X25leHQzMkZyb20oVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4
KTsKLQotCi0KLS8qKgotICAqIFNldCB0aGUgaXRlcmF0aW9uIGluZGV4LCBhbmQgcmV0dXJuIHRo
ZSBjb2RlIHBvaW50IHByZWNlZGluZyB0aGUKLSAgKiBvbmUgc3BlY2lmaWVkIGJ5IHRoZSBpbml0
aWFsIGluZGV4LiAgTGVhdmUgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbgotICAqIGF0IHRoZSBzdGFy
dCBvZiB0aGUgcmV0dXJuZWQgY29kZSBwb2ludC4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24gaXMg
dGhlIG1vc3QgZWZmaWNpZW50IGFuZCBjb252ZW5pZW50IHdheSB0bwotICAqIGJlZ2luIGEgYmFj
a3dhcmRzIGl0ZXJhdGlvbi4KLSAgKgotICAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nl
c3NlZC4KLSAgKiBAcGFyYW0gbmF0aXZlSW5kZXggSXRlcmF0aW9uIGluZGV4IGluIHRoZSBuYXRp
dmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCi0gICogQHJldHVybiBDb2RlIHBvaW50IHBy
ZWNlZGluZyB0aGUgb25lIGF0IHRoZSBpbml0aWFsIGluZGV4LAotICAqICAgICAgICAgb3IgVV9T
RU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCi0gICoKLSAgKiBAc3RhYmxlIElD
VSAzLjQKLSAgKi8KLVVfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCi11dGV4dF9wcmV2aW91czMy
RnJvbShVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOwotCi0vKioKLSAgKiBHZXQgdGhl
IGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24sIHdoaWNoIGNhbiByYW5nZSBmcm9tIDAgdG8gCi0g
ICogdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4KLSAgKiBUaGUgcG9zaXRpb24gaXMgYSBuYXRpdmUg
aW5kZXggaW50byB0aGUgaW5wdXQgdGV4dCwgaW4gd2hhdGV2ZXIgZm9ybWF0IGl0Ci0gICogbWF5
IGhhdmUgKHBvc3NpYmx5IFVURi04IGZvciBleGFtcGxlKSwgYW5kIG1heSBub3QgYWx3YXlzIGJl
IHRoZSBzYW1lIGFzCi0gICogdGhlIGNvcnJlc3BvbmRpbmcgVUNoYXIgKFVURi0xNikgaW5kZXgu
Ci0gICogVGhlIHJldHVybmVkIHBvc2l0aW9uIHdpbGwgYWx3YXlzIGJlIGFsaWduZWQgdG8gYSBj
b2RlIHBvaW50IGJvdW5kYXJ5LiAKLSAgKgotICAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBh
Y2Nlc3NlZC4KLSAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGluZGV4IHBvc2l0aW9uLCBpbiB0aGUg
bmF0aXZlIHVuaXRzIG9mIHRoZSB0ZXh0IHByb3ZpZGVyLgotICAqIEBzdGFibGUgSUNVIDMuNAot
ICAqLwotVV9TVEFCTEUgaW50NjRfdCBVX0VYUE9SVDIKLXV0ZXh0X2dldE5hdGl2ZUluZGV4KGNv
bnN0IFVUZXh0ICp1dCk7Ci0KLS8qKgotICogU2V0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3Np
dGlvbiB0byB0aGUgbmVhcmVzdCBjb2RlIHBvaW50Ci0gKiBib3VuZGFyeSBhdCBvciBwcmVjZWRp
bmcgdGhlIHNwZWNpZmllZCBpbmRleC4KLSAqIFRoZSBpbmRleCBpcyBpbiB0aGUgbmF0aXZlIHVu
aXRzIG9mIHRoZSBvcmlnaW5hbCBpbnB1dCB0ZXh0LgotICogSWYgdGhlIGluZGV4IGlzIG91dCBv
ZiByYW5nZSwgaXQgd2lsbCBiZSBwaW5uZWQgdG8gYmUgd2l0aGluCi0gKiB0aGUgcmFuZ2Ugb2Yg
dGhlIGlucHV0IHRleHQuCi0gKiA8cD4KLSAqIEl0IHdpbGwgdXN1YWxseSBiZSBtb3JlIGVmZmlj
aWVudCB0byBiZWdpbiBhbiBpdGVyYXRpb24KLSAqIHVzaW5nIHRoZSBmdW5jdGlvbnMgdXRleHRf
bmV4dDMyRnJvbSgpIG9yIHV0ZXh0X3ByZXZpb3VzMzJGcm9tKCkKLSAqIHJhdGhlciB0aGFuIHNl
dEluZGV4KCkuCi0gKiA8cD4KLSAqIE1vdmluZyB0aGUgaW5kZXggcG9zaXRpb24gdG8gYW4gYWRq
YWNlbnQgY2hhcmFjdGVyIGlzIGJlc3QgZG9uZQotICogd2l0aCB1dGV4dF9uZXh0MzIoKSwgdXRl
eHRfcHJldmlvdXMzMigpIG9yIHV0ZXh0X21vdmVJbmRleDMyKCkuCi0gKiBBdHRlbXB0aW5nIHRv
IGRvIGRpcmVjdCBhcml0aG1ldGljIG9uIHRoZSBpbmRleCBwb3NpdGlvbiBpcwotICogY29tcGxp
Y2F0ZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgc2l6ZSAoaW4gbmF0aXZlIHVuaXRzKSBvZiBhCi0g
KiBjaGFyYWN0ZXIgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZyByZXByZXNlbnRhdGlvbiBvZiB0
aGUgY2hhcmFjdGVyCi0gKiAoVVRGLTgsIFVURi0xNiwgVVRGLTMyLCBhcmJpdHJhcnkgY29kZXBh
Z2UpLCBhbmQgaXMgbm90Ci0gKiBlYXNpbHkga25vd2FibGUuCi0gKgotICogQHBhcmFtIHV0IHRo
ZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICogQHBhcmFtIG5hdGl2ZUluZGV4IHRoZSBuYXRpdmUg
dW5pdCBpbmRleCBvZiB0aGUgbmV3IGl0ZXJhdGlvbiBwb3NpdGlvbi4KLSAqIEBzdGFibGUgSUNV
IDMuNAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdXRleHRfc2V0TmF0aXZlSW5kZXgo
VVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KTsKLQotLyoqCi0gKiBNb3ZlIHRoZSBpdGVy
YXRvciBwb3N0aW9uIGJ5IGRlbHRhIGNvZGUgcG9pbnRzLiAgVGhlIG51bWJlciBvZiBjb2RlIHBv
aW50cwotICogaXMgYSBzaWduZWQgbnVtYmVyOyBhIG5lZ2F0aXZlIGRlbHRhIHdpbGwgbW92ZSB0
aGUgaXRlcmF0b3IgYmFja3dhcmRzLAotICogdG93YXJkcyB0aGUgc3RhcnQgb2YgdGhlIHRleHQu
Ci0gKiA8cD4KLSAqIFRoZSBpbmRleCBpcyBtb3ZlZCBieSA8Y29kZT5kZWx0YTwvY29kZT4gY29k
ZSBwb2ludHMKLSAqIGZvcndhcmQgb3IgYmFja3dhcmQsIGJ1dCBubyBmdXJ0aGVyIGJhY2t3YXJk
IHRoYW4gdG8gMCBhbmQKLSAqIG5vIGZ1cnRoZXIgZm9yd2FyZCB0aGFuIHRvIHV0ZXh0X25hdGl2
ZUxlbmd0aCgpLgotICogVGhlIHJlc3VsdGluZyBpbmRleCB2YWx1ZSB3aWxsIGJlIGluIGJldHdl
ZW4gMCBhbmQgbGVuZ3RoLCBpbmNsdXNpdmUuCi0gKgotICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRv
IGJlIGFjY2Vzc2VkLgotICogQHBhcmFtIGRlbHRhIHRoZSBzaWduZWQgbnVtYmVyIG9mIGNvZGUg
cG9pbnRzIHRvIG1vdmUgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbi4KLSAqIEByZXR1cm4gVFJVRSBp
ZiB0aGUgcG9zaXRpb24gY291bGQgYmUgbW92ZWQgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgcG9z
aXRpb25zIHdoaWxlCi0gKiAgICAgICAgICAgICAgc3RheWluZyB3aXRoaW4gdGhlIHJhbmdlIFsw
IC0gdGV4dCBsZW5ndGhdLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVCb29s
IFVfRVhQT1JUMgotdXRleHRfbW92ZUluZGV4MzIoVVRleHQgKnV0LCBpbnQzMl90IGRlbHRhKTsK
LQotLyoqCi0gKiBHZXQgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHByZWNlZWRp
bmcgdGhlIGN1cnJlbnQgcG9zaXRpb24uCi0gKiBJZiB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlz
IGFscmVhZHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LCB6ZXJvCi0gKiBpcyByZXR1cm5lZC4K
LSAqIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9idGFpbmVkIGZyb20g
dGhlIGZvbGxvd2luZyBzZXF1ZW5jZSwKLSAqIGJ1dCB3aXRob3V0IHRoZSBzaWRlIGVmZmVjdCBv
ZiBjaGFuZ2luZyB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uLgotICogICAKLSAqIFxjb2RlCi0gKiAg
ICBVVGV4dCAgKnV0ID0gd2hhdGV2ZXI7Ci0gKiAgICAgIC4uLgotICogICAgdXRleHRfcHJldmlv
dXModXQpCi0gKiAgICB1dGV4dF9nZXROYXRpdmVJbmRleCh1dCk7Ci0gKiBcZW5kY29kZQotICoK
LSAqIFRoaXMgZnVuY3Rpb24gaXMgbW9zdCB1c2VmdWwgZHVyaW5nIGZvcndhcmRzIGl0ZXJhdGlv
biwgd2hlcmUgaXQgd2lsbCBnZXQgdGhlCi0gKiAgIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFj
dGVyIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgZnJvbSB1dGV4dF9uZXh0KCkuCi0gKgotICogQHBh
cmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkCi0gKiBAcmV0dXJuIHRoZSBuYXRpdmUgaW5k
ZXggb2YgdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5nIHRoZSBjdXJyZW50IGluZGV4IHBvc2l0aW9u
LAotICogICAgICAgICBvciB6ZXJvIGlmIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGF0IHRoZSBz
dGFydCBvZiB0aGUgdGV4dC4KLSAqIEBzdGFibGUgSUNVIDMuNgotICovCi1VX1NUQUJMRSBpbnQ2
NF90IFVfRVhQT1JUMgotdXRleHRfZ2V0UHJldmlvdXNOYXRpdmVJbmRleChVVGV4dCAqdXQpOyAK
LQotCi0vKioKLSAqCi0gKiBFeHRyYWN0IHRleHQgZnJvbSBhIFVUZXh0IGludG8gYSBVQ2hhciBi
dWZmZXIuICBUaGUgcmFuZ2Ugb2YgdGV4dCB0byBiZSBleHRyYWN0ZWQKLSAqIGlzIHNwZWNpZmll
ZCBpbiB0aGUgbmF0aXZlIGluZGljZXMgb2YgdGhlIFVUZXh0IHByb3ZpZGVyLiAgVGhlc2UgbWF5
IG5vdCBuZWNlc3NhcmlseQotICogYmUgVVRGLTE2IGluZGljZXMuCi0gKiA8cD4KLSAqIFRoZSBz
aXplIChudW1iZXIgb2YgMTYgYml0IFVDaGFycykgb2YgdGhlIGRhdGEgdG8gYmUgZXh0cmFjdGVk
IGlzIHJldHVybmVkLiAgVGhlCi0gKiBmdWxsIG51bWJlciBvZiBVQ2hhcnMgaXMgcmV0dXJuZWQs
IGV2ZW4gd2hlbiB0aGUgZXh0cmFjdGVkIHRleHQgaXMgdHJ1bmNhdGVkCi0gKiBiZWNhdXNlIHRo
ZSBzcGVjaWZpZWQgYnVmZmVyIHNpemUgaXMgdG9vIHNtYWxsLgotICogPHA+Ci0gKiBUaGUgZXh0
cmFjdGVkIHN0cmluZyB3aWxsIChpZiB5b3UgYXJlIGEgdXNlcikgLyBtdXN0IChpZiB5b3UgYXJl
IGEgdGV4dCBwcm92aWRlcikKLSAqIGJlIE5VTC10ZXJtaW5hdGVkIGlmIHRoZXJlIGlzIHN1ZmZp
Y2llbnQgc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4gIFRoaXMKLSAqIHRlcm1pbmF0
aW5nIE5VTCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIGxlbmd0aC4KLSAqIDxwPgot
ICogVGhlIGl0ZXJhdGlvbiBpbmRleCBpcyBsZWZ0IGF0IHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcg
dGhlIGxhc3QgZXh0cmFjdGVkIGNoYXJhY3Rlci4KLSAqCi0gKiBAcGFyYW0gIHV0ICAgIHRoZSBV
VGV4dCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgZGF0YS4KLSAqIEBwYXJhbSAgbmF0aXZlU3RhcnQg
dGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIGV4dHJhY3QuXAotICog
ICAgICAgICAgICAgICBJZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG91dCBvZiByYW5nZSwKLSAq
ICAgICAgICAgICAgICAgaXQgd2lsbCBiZSBwaW5uZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0gaW5k
ZXggPD0gdGV4dExlbmd0aAotICogQHBhcmFtICBuYXRpdmVMaW1pdCB0aGUgbmF0aXZlIHN0cmlu
ZyBpbmRleCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0Ci0gKiAgICAgICAgICAg
ICAgIGNoYXJhY3RlciB0byBleHRyYWN0LiAgSWYgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBvdXQg
b2YgcmFuZ2UsCi0gKiAgICAgICAgICAgICAgIGl0IHdpbGwgYmUgcGlubmVkIHRvIHRvIGJlIHdp
dGhpbiAwIDw9IGluZGV4IDw9IHRleHRMZW5ndGguCi0gKiAgICAgICAgICAgICAgIG5hdGl2ZUxp
bWl0IG11c3QgYmUgPj0gbmF0aXZlU3RhcnQuCi0gKiBAcGFyYW0gIGRlc3QgIHRoZSBVQ2hhciAo
VVRGLTE2KSBidWZmZXIgaW50byB3aGljaCB0aGUgZXh0cmFjdGVkIHRleHQgaXMgcGxhY2VkCi0g
KiBAcGFyYW0gIGRlc3RDYXBhY2l0eSAgVGhlIHNpemUsIGluIFVDaGFycywgb2YgdGhlIGRlc3Rp
bmF0aW9uIGJ1ZmZlci4gIE1heSBiZSB6ZXJvCi0gKiAgICAgICAgICAgICAgIGZvciBwcmVjb21w
dXRpbmcgdGhlIHJlcXVpcmVkIHNpemUuCi0gKiBAcGFyYW0gIHN0YXR1cyByZWNlaXZlcyBhbnkg
ZXJyb3Igc3RhdHVzLgotICogICAgICAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjogdGhlIGV4
dHJhY3RlZCB0ZXh0IHdhcyB0cnVuY2F0ZWQgYmVjYXVzZSB0aGUgCi0gKiAgICAgICAgIGJ1ZmZl
ciB3YXMgdG9vIHNtYWxsLiAgUmV0dXJucyBudW1iZXIgb2YgVUNoYXJzIGZvciBwcmVmbGlnaHRp
bmcuCi0gKiBAcmV0dXJuIE51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGRhdGEgdG8gYmUgZXh0cmFj
dGVkLiAgRG9lcyBub3QgaW5jbHVkZSBhIHRyYWlsaW5nIE5VTC4KLSAqCi0gKiBAc3RhYmxlIElD
VSAzLjQKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXV0ZXh0X2V4dHJhY3QoVVRl
eHQgKnV0LAotICAgICAgICAgICAgIGludDY0X3QgbmF0aXZlU3RhcnQsIGludDY0X3QgbmF0aXZl
TGltaXQsCi0gICAgICAgICAgICAgVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LAot
ICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotCi0vKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCi0gKgotICogICNkZWZpbmUgaW5saW5lIHZlcnNpb25zIG9mIHNlbGVjdGVk
IHBlcmZvcm1hbmNlLWNyaXRpY2FsIHRleHQgYWNjZXNzIGZ1bmN0aW9ucwotICogICAgICAgICAg
Q2F1dGlvbjogIGRvIG5vdCB1c2UgYXV0byBpbmNyZW1lbnQrKyBvciBkZWNyZW1lbnQtLSBleHBy
ZXNzaW9ucwotICogICAgICAgICAgICAgICAgICAgIGFzIHBhcmFtZXRlcnMgdG8gdGhlc2UgbWFj
cm9zLgotICoKLSAqICAgICAgICAgIEZvciBtb3N0IHVzZSwgd2hlcmUgdGhlcmUgaXMgbm8gZXh0
cmVtZSBwZXJmb3JtYW5jZSBjb25zdHJhaW50LCB0aGUKLSAqICAgICAgICAgIG5vcm1hbCwgbm9u
LWlubGluZSBmdW5jdGlvbnMgYXJlIGEgYmV0dGVyIGNob2ljZS4gIFRoZSByZXN1bHRpbmcgY29k
ZQotICogICAgICAgICAgd2lsbCBiZSBzbWFsbGVyLCBhbmQsIGlmIHRoZSBuZWVkIGV2ZXIgYXJp
c2VzLCBlYXNpZXIgdG8gZGVidWcuCi0gKgotICogICAgICAgICAgVGhlc2UgYXJlIGltcGxlbWVu
dGVkIGFzICNkZWZpbmVzIHJhdGhlciB0aGFuIHJlYWwgZnVuY3Rpb25zCi0gKiAgICAgICAgICBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bGx5IHBvcnRhYmxlIHdheSB0byBkbyBpbmxpbmUgZnVuY3Rp
b25zIGluIHBsYWluIEMuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lm
bmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCi0vKioKLSAqIGlubGluZSB2ZXJzaW9uIG9mIHV0ZXh0
X2N1cnJlbnQzMigpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4KLSAqCi0g
KiBHZXQgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIG9m
IHRoZSBVVGV4dC4KLSAqIFJldHVybnMgVV9TRU5USU5FTCAoLTEpIGlmIHRoZSBwb3NpdGlvbiBp
cyBhdCB0aGUgZW5kIG9mIHRoZQotICogdGV4dC4KLSAqCi0gKiBAaW50ZXJuYWwgSUNVIDQuNCB0
ZWNobm9sb2d5IHByZXZpZXcKLSAqLwotI2RlZmluZSBVVEVYVF9DVVJSRU5UMzIodXQpICBcCi0g
ICAgKCh1dCktPmNodW5rT2Zmc2V0IDwgKHV0KS0+Y2h1bmtMZW5ndGggJiYgKCh1dCktPmNodW5r
Q29udGVudHMpWyh1dCktPmNodW5rT2Zmc2V0XTwweGQ4MDAgPyBcCi0gICAgKCh1dCktPmNodW5r
Q29udGVudHMpWygodXQpLT5jaHVua09mZnNldCldIDogdXRleHRfY3VycmVudDMyKHV0KSkKLSNl
bmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwotCi0vKioKLSAqIGlubGluZSB2ZXJzaW9u
IG9mIHV0ZXh0X25leHQzMigpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4K
LSAqCi0gKiBHZXQgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0
aW9uIG9mIHRoZSBVVGV4dCwgYW5kCi0gKiBhZHZhbmNlIHRoZSBwb3NpdGlvbiB0byB0aGUgZmly
c3QgaW5kZXggZm9sbG93aW5nIHRoZSBjaGFyYWN0ZXIuCi0gKiBUaGlzIGlzIGEgcG9zdC1pbmNy
ZW1lbnQgb3BlcmF0aW9uLgotICogUmV0dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBvc2l0
aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhlCi0gKiB0ZXh0LgotICoKLSAqIEBzdGFibGUgSUNVIDMu
NAotICovCi0jZGVmaW5lIFVURVhUX05FWFQzMih1dCkgIFwKLSAgICAoKHV0KS0+Y2h1bmtPZmZz
ZXQgPCAodXQpLT5jaHVua0xlbmd0aCAmJiAoKHV0KS0+Y2h1bmtDb250ZW50cylbKHV0KS0+Y2h1
bmtPZmZzZXRdPDB4ZDgwMCA/IFwKLSAgICAoKHV0KS0+Y2h1bmtDb250ZW50cylbKCh1dCktPmNo
dW5rT2Zmc2V0KSsrXSA6IHV0ZXh0X25leHQzMih1dCkpCi0KLS8qKgotICogaW5saW5lIHZlcnNp
b24gb2YgdXRleHRfcHJldmlvdXMzMigpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0
aW9ucy4KLSAqCi0gKiAgTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJhY3Rl
ciAoY29kZSBwb2ludCkgd2hvc2UKLSAqICBpbmRleCBwcmVjZWRlcyB0aGUgY3VycmVudCBwb3Np
dGlvbiwgYW5kIHJldHVybiB0aGF0IGNoYXJhY3Rlci4KLSAqICBUaGlzIGlzIGEgcHJlLWRlY3Jl
bWVudCBvcGVyYXRpb24uCi0gKiAgUmV0dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBvc2l0
aW9uIGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgIHRleHQuCi0gKgotICogQHN0YWJsZSBJQ1UgMy40
Ci0gKi8KLSNkZWZpbmUgVVRFWFRfUFJFVklPVVMzMih1dCkgIFwKLSAgICAoKHV0KS0+Y2h1bmtP
ZmZzZXQgPiAwICYmIFwKLSAgICAgKHV0KS0+Y2h1bmtDb250ZW50c1sodXQpLT5jaHVua09mZnNl
dC0xXSA8IDB4ZDgwMCA/IFwKLSAgICAgICAgICAodXQpLT5jaHVua0NvbnRlbnRzWy0tKCh1dCkt
PmNodW5rT2Zmc2V0KV0gIDogIHV0ZXh0X3ByZXZpb3VzMzIodXQpKQotCi0vKioKLSAgKiAgaW5s
aW5lIHZlcnNpb24gb2YgdXRleHRfZ2V0TmF0aXZlSW5kZXgoKSwgZm9yIHBlcmZvcm1hbmNlLWNy
aXRpY2FsIHNpdHVhdGlvbnMuCi0gICoKLSAgKiBHZXQgdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9z
aXRpb24sIHdoaWNoIGNhbiByYW5nZSBmcm9tIDAgdG8gCi0gICogdGhlIGxlbmd0aCBvZiB0aGUg
dGV4dC4KLSAgKiBUaGUgcG9zaXRpb24gaXMgYSBuYXRpdmUgaW5kZXggaW50byB0aGUgaW5wdXQg
dGV4dCwgaW4gd2hhdGV2ZXIgZm9ybWF0IGl0Ci0gICogbWF5IGhhdmUgKHBvc3NpYmx5IFVURi04
IGZvciBleGFtcGxlKSwgYW5kIG1heSBub3QgYWx3YXlzIGJlIHRoZSBzYW1lIGFzCi0gICogdGhl
IGNvcnJlc3BvbmRpbmcgVUNoYXIgKFVURi0xNikgaW5kZXguCi0gICogVGhlIHJldHVybmVkIHBv
c2l0aW9uIHdpbGwgYWx3YXlzIGJlIGFsaWduZWQgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAK
LSAgKgotICAqIEBzdGFibGUgSUNVIDMuNgotICAqLwotI2RlZmluZSBVVEVYVF9HRVROQVRJVkVJ
TkRFWCh1dCkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKHV0KS0+Y2h1bmtPZmZzZXQg
PD0gKHV0KS0+bmF0aXZlSW5kZXhpbmdMaW1pdD8gICBcCi0gICAgICAgICh1dCktPmNodW5rTmF0
aXZlU3RhcnQrKHV0KS0+Y2h1bmtPZmZzZXQgOiAgICAgXAotICAgICAgICAodXQpLT5wRnVuY3Mt
Pm1hcE9mZnNldFRvTmF0aXZlKHV0KSkgICAgCi0KLS8qKgotICAqICBpbmxpbmUgdmVyc2lvbiBv
ZiB1dGV4dF9zZXROYXRpdmVJbmRleCgpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0
aW9ucy4KLSAgKgotICAqIFNldCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhl
IG5lYXJlc3QgY29kZSBwb2ludAotICAqIGJvdW5kYXJ5IGF0IG9yIHByZWNlZGluZyB0aGUgc3Bl
Y2lmaWVkIGluZGV4LgotICAqIFRoZSBpbmRleCBpcyBpbiB0aGUgbmF0aXZlIHVuaXRzIG9mIHRo
ZSBvcmlnaW5hbCBpbnB1dCB0ZXh0LgotICAqIElmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2Us
IGl0IHdpbGwgYmUgcGlubmVkIHRvIGJlIHdpdGhpbgotICAqIHRoZSByYW5nZSBvZiB0aGUgaW5w
dXQgdGV4dC4KLSAgKgotICAqIEBzdGFibGUgSUNVIDMuOAotICAqLwotI2RlZmluZSBVVEVYVF9T
RVROQVRJVkVJTkRFWCh1dCwgaXgpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBpbnQ2
NF90IF9fb2Zmc2V0ID0gKGl4KSAtICh1dCktPmNodW5rTmF0aXZlU3RhcnQ7IFwKLSAgICAgIGlm
IChfX29mZnNldD49MCAmJiBfX29mZnNldDw9KGludDY0X3QpKHV0KS0+bmF0aXZlSW5kZXhpbmdM
aW1pdCkgeyBcCi0gICAgICAgICAgKHV0KS0+Y2h1bmtPZmZzZXQ9KGludDMyX3QpX19vZmZzZXQ7
IFwKLSAgICAgIH0gZWxzZSB7IFwKLSAgICAgICAgICB1dGV4dF9zZXROYXRpdmVJbmRleCgodXQp
LCAoaXgpKTsgfSB9Ci0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICog
ICBGdW5jdGlvbnMgcmVsYXRlZCB0byB3cml0aW5nIG9yIG1vZGlmeWluZyB0aGUgdGV4dC4KLSAq
ICAgVGhlc2Ugd2lsbCB3b3JrIG9ubHkgd2l0aCBtb2RpZmlhYmxlIFVUZXh0cy4gIEF0dGVtcHRp
bmcgdG8KLSAqICAgbW9kaWZ5IGEgcmVhZC1vbmx5IFVUZXh0IHdpbGwgcmV0dXJuIGFuIGVycm9y
IHN0YXR1cy4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLS8qKgotICog
IFJldHVybiBUUlVFIGlmIHRoZSB0ZXh0IGNhbiBiZSB3cml0dGVuIChtb2RpZmllZCkgd2l0aCB1
dGV4dF9yZXBsYWNlKCkgb3IKLSAqICB1dGV4dF9jb3B5KCkuICBGb3IgdGhlIHRleHQgdG8gYmUg
d3JpdGFibGUsIHRoZSB0ZXh0IHByb3ZpZGVyIG11c3QKLSAqICBiZSBvZiBhIHR5cGUgdGhhdCBz
dXBwb3J0cyB3cml0aW5nIGFuZCB0aGUgVVRleHQgbXVzdCBub3QgYmUgZnJvemVuLgotICoKLSAq
ICBBdHRlbXB0aW5nIHRvIG1vZGlmeSB0ZXh0IHdoZW4gdXRleHRfaXNXcml0ZWFibGUoKSBpcyBG
QUxTRSB3aWxsIGZhaWwgLQotICogIHRoZSB0ZXh0IHdpbGwgbm90IGJlIG1vZGlmaWVkLCBhbmQg
YW4gZXJyb3Igd2lsbCBiZSByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbgotICogIHRoYXQgYXR0
ZW1wdGVkIHRoZSBtb2RpZmljYXRpb24uCi0gKgotICogQHBhcmFtICB1dCAgIHRoZSBVVGV4dCB0
byBiZSB0ZXN0ZWQuCi0gKiBAcmV0dXJuIFRSVUUgaWYgdGhlIHRleHQgaXMgbW9kaWZpYWJsZS4K
LSAqCi0gKiBAc2VlICAgIHV0ZXh0X2ZyZWV6ZSgpCi0gKiBAc2VlICAgIHV0ZXh0X3JlcGxhY2Uo
KQotICogQHNlZSAgICB1dGV4dF9jb3B5KCkKLSAqIEBzdGFibGUgSUNVIDMuNAotICoKLSAqLwot
VV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11dGV4dF9pc1dyaXRhYmxlKGNvbnN0IFVUZXh0ICp1
dCk7Ci0KLQotLyoqCi0gICogVGVzdCB3aGV0aGVyIHRoZXJlIGlzIG1ldGEgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhlIHRleHQuCi0gICogQHNlZSBSZXBsYWNlYWJsZTo6aGFzTWV0YURhdGEoKQot
ICAqCi0gICogQHBhcmFtIHV0IFRoZSBVVGV4dCB0byBiZSB0ZXN0ZWQKLSAgKiBAcmV0dXJuIFRS
VUUgaWYgdGhlIHVuZGVybHlpbmcgdGV4dCBpbmNsdWRlcyBtZXRhIGRhdGEuCi0gICogQHN0YWJs
ZSBJQ1UgMy40Ci0gICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXV0ZXh0X2hhc01ldGFE
YXRhKGNvbnN0IFVUZXh0ICp1dCk7Ci0KLQotLyoqCi0gKiBSZXBsYWNlIGEgcmFuZ2Ugb2YgdGhl
IG9yaWdpbmFsIHRleHQgd2l0aCBhIHJlcGxhY2VtZW50IHRleHQuCi0gKgotICogTGVhdmVzIHRo
ZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRo
ZQotICogIG5ld2x5IGluc2VydGVkIHJlcGxhY2VtZW50IHRleHQuCi0gKgotICogVGhpcyBmdW5j
dGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3JpdGlu
ZywKLSAqIHRoYXQgaXMsIG9uZXMgd2hlcmUgdXRleHRfaXNXcml0YWJsZSgpIHJldHVybnMgVFJV
RS4KLSAqCi0gKiBXaGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBvbmx5
IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBvbnRvIHRoZQotICogdW5kZXJseWluZyBuYXRpdmUgdGV4
dCBzdHJpbmcuICBCZWhhdmlvciBhZnRlciBhIHJlcGxhY2Ugb3BlcmF0aW9uCi0gKiBvbiBhIFVU
ZXh0IGlzIHVuZGVmaW5lZCBmb3IgYW55IG90aGVyIGFkZGl0aW9uYWwgVVRleHRzIHRoYXQgcmVm
ZXIgdG8gdGhlCi0gKiBtb2RpZmllZCBzdHJpbmcuCi0gKgotICogQHBhcmFtIHV0ICAgICAgICAg
ICAgICAgdGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBvbi4K
LSAqIEBwYXJhbSBuYXRpdmVTdGFydCAgICAgIHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIHN0YXJ0
IG9mIHRoZSByZWdpb24gdG8gYmUgcmVwbGFjZWQKLSAqIEBwYXJhbSBuYXRpdmVMaW1pdCAgICAg
IHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0
byBiZSByZXBsYWNlZC4KLSAqIEBwYXJhbSByZXBsYWNlbWVudFRleHQgIHBvaW50ZXIgdG8gdGhl
IHJlcGxhY2VtZW50IHRleHQKLSAqIEBwYXJhbSByZXBsYWNlbWVudExlbmd0aCBsZW5ndGggb2Yg
dGhlIHJlcGxhY2VtZW50IHRleHQsIG9yIC0xIGlmIHRoZSB0ZXh0IGlzIE5VTCB0ZXJtaW5hdGVk
LgotICogQHBhcmFtIHN0YXR1cyAgICAgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4g
IFBvc3NpYmxlIGVycm9ycyBpbmNsdWRlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICBVX05P
X1dSSVRFX1BFUk1JU1NJT04KLSAqCi0gKiBAcmV0dXJuIFRoZSBzaWduZWQgbnVtYmVyIG9mIChu
YXRpdmUpIHN0b3JhZ2UgdW5pdHMgYnkgd2hpY2gKLSAqICAgICAgICAgdGhlIGxlbmd0aCBvZiB0
aGUgdGV4dCBleHBhbmRlZCBvciBjb250cmFjdGVkLgotICoKLSAqIEBzdGFibGUgSUNVIDMuNAot
ICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdXRleHRfcmVwbGFjZShVVGV4dCAqdXQs
Ci0gICAgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwK
LSAgICAgICAgICAgICBjb25zdCBVQ2hhciAqcmVwbGFjZW1lbnRUZXh0LCBpbnQzMl90IHJlcGxh
Y2VtZW50TGVuZ3RoLAotICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotCi0v
KioKLSAqCi0gKiBDb3B5IG9yIG1vdmUgYSBzdWJzdHJpbmcgZnJvbSBvbmUgcG9zaXRpb24gdG8g
YW5vdGhlciB3aXRoaW4gdGhlIHRleHQsCi0gKiB3aGlsZSByZXRhaW5pbmcgYW55IG1ldGFkYXRh
IGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4KLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBk
dXBsaWNhdGUgb3IgcmVvcmRlciBzdWJzdHJpbmdzLgotICogVGhlIGRlc3RpbmF0aW9uIGluZGV4
IG11c3Qgbm90IG92ZXJsYXAgdGhlIHNvdXJjZSByYW5nZS4KLSAqCi0gKiBUaGUgdGV4dCB0byBi
ZSBjb3BpZWQgb3IgbW92ZWQgaXMgaW5zZXJ0ZWQgYXQgZGVzdEluZGV4OwotICogaXQgZG9lcyBu
b3QgcmVwbGFjZSBvciBvdmVyd3JpdGUgYW55IGV4aXN0aW5nIHRleHQuCi0gKgotICogVGhlIGl0
ZXJhdGlvbiBwb3NpdGlvbiBpcyBsZWZ0IGZvbGxvd2luZyB0aGUgbmV3bHkgaW5zZXJ0ZWQgdGV4
dAotICogYXQgdGhlIGRlc3RpbmF0aW9uIHBvc2l0aW9uLgotICoKLSAqIFRoaXMgZnVuY3Rpb24g
aXMgb25seSBhdmFpbGFibGUgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcsCi0g
KiB0aGF0IGlzLCBvbmVzIHdoZXJlIHV0ZXh0X2lzV3JpdGFibGUoKSByZXR1cm5zIFRSVUUuCi0g
KgotICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNp
bmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKLSAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3Ry
aW5nLiAgQmVoYXZpb3IgYWZ0ZXIgYSBjb3B5IG9wZXJhdGlvbgotICogb24gYSBVVGV4dCBpcyB1
bmRlZmluZWQgaW4gYW55IG90aGVyIGFkZGl0aW9uYWwgVVRleHRzIHRoYXQgcmVmZXIgdG8gdGhl
Ci0gKiBtb2RpZmllZCBzdHJpbmcuCi0gKgotICogQHBhcmFtIHV0ICAgICAgICAgICBUaGUgVVRl
eHQgcmVwcmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgotICogQHBhcmFtIG5h
dGl2ZVN0YXJ0ICBUaGUgbmF0aXZlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgcmVnaW9uIHRv
IGJlIGNvcGllZCBvciBtb3ZlZAotICogQHBhcmFtIG5hdGl2ZUxpbWl0ICBUaGUgbmF0aXZlIGlu
ZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gZm9sbG93aW5nIHRoZSByZWdpb24KLSAqICAg
ICAgICAgICAgICAgICAgICAgdG8gYmUgY29waWVkLgotICogQHBhcmFtIGRlc3RJbmRleCAgICBU
aGUgbmF0aXZlIGRlc3RpbmF0aW9uIGluZGV4IHRvIHdoaWNoIHRoZSBzb3VyY2Ugc3Vic3RyaW5n
IGlzCi0gKiAgICAgICAgICAgICAgICAgICAgIGNvcGllZCBvciBtb3ZlZC4KLSAqIEBwYXJhbSBt
b3ZlICAgICAgICAgSWYgVFJVRSwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBub3QgY29w
aWVkL2R1cGxpY2F0ZWQuCi0gKiBAcGFyYW0gc3RhdHVzICAgICAgIHJlY2VpdmVzIGFueSBlcnJv
ciBzdGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX05PX1dSSVRFX1BFUk1JU1NJT04K
LSAqICAgICAgICAgICAgICAgICAgICAgICAKLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi1VX1NU
QUJMRSB2b2lkIFVfRVhQT1JUMgotdXRleHRfY29weShVVGV4dCAqdXQsCi0gICAgICAgICAgaW50
NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKLSAgICAgICAgICBpbnQ2NF90
IGRlc3RJbmRleCwKLSAgICAgICAgICBVQm9vbCBtb3ZlLAotICAgICAgICAgIFVFcnJvckNvZGUg
KnN0YXR1cyk7Ci0KLQotLyoqCi0gICogIDxwPgotICAqICBGcmVlemUgYSBVVGV4dC4gIFRoaXMg
cHJldmVudHMgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgdW5kZXJseWluZyB0ZXh0IGl0c2VsZgot
ICAqICBieSBtZWFucyBvZiBmdW5jdGlvbnMgb3BlcmF0aW5nIG9uIHRoaXMgVVRleHQuCi0gICog
IDwvcD4KLSAgKiAgPHA+Ci0gICogIE9uY2UgZnJvemVuLCBhIFVUZXh0IGNhbiBub3QgYmUgdW5m
cm96ZW4uICBUaGUgaW50ZW50IGlzIHRvIGVuc3VyZQotICAqICB0aGF0IGEgdGhlIHRleHQgdW5k
ZXJseWluZyBhIGZyb3plbiBVVGV4dCB3cmFwcGVyIGNhbm5vdCBiZSBtb2RpZmllZCB2aWEgdGhh
dCBVVGV4dC4KLSAgKiAgPC9wPgotICAqICA8cD4KLSAgKiAgQ2F1dGlvbjogIGZyZWV6aW5nIGEg
VVRleHQgd2lsbCBkaXNhYmxlIGNoYW5nZXMgbWFkZSB2aWEgdGhlIHNwZWNpZmljCi0gICogICBm
cm96ZW4gVVRleHQgd3JhcHBlciBvbmx5OyBpdCB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3Qgb24g
dGhlIGFiaWxpdHkgdG8KLSAgKiAgIGRpcmVjdGx5IG1vZGlmeSB0aGUgdGV4dCBieSBieXBhc3Np
bmcgdGhlIFVUZXh0LiAgQW55IHN1Y2ggYmFja2Rvb3IgbW9kaWZpY2F0aW9ucwotICAqICAgYXJl
IGFsd2F5cyBhbiBlcnJvciB3aGlsZSBVVGV4dCBhY2Nlc3MgaXMgb2NjdXJpbmcgYmVjYXVzZSB0
aGUgdW5kZXJseWluZwotICAqICAgdGV4dCBjYW4gZ2V0IG91dCBvZiBzeW5jIHdpdGggVVRleHQn
cyBidWZmZXJpbmcuCi0gICogIDwvcD4KLSAgKgotICAqICBAcGFyYW0gdXQgIFRoZSBVVGV4dCB0
byBiZSBmcm96ZW4uCi0gICogIEBzZWUgICB1dGV4dF9pc1dyaXRhYmxlKCkKLSAgKiAgQHN0YWJs
ZSBJQ1UgMy42Ci0gICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdXRleHRfZnJlZXplKFVU
ZXh0ICp1dCk7Ci0KLQotLyoqCi0gKiBVVGV4dCBwcm92aWRlciBwcm9wZXJ0aWVzIChiaXQgZmll
bGQgaW5kZXhlcykuCi0gKgotICogQHNlZSBVVGV4dAotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8K
LWVudW0gewotICAgIC8qKgotICAgICAqIEl0IGlzIHBvdGVudGlhbGx5IHRpbWUgY29uc3VtaW5n
IGZvciB0aGUgcHJvdmlkZXIgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2YgdGhlIHRleHQuCi0g
ICAgICogQHN0YWJsZSBJQ1UgMy40Ci0gICAgICovCi0gICAgVVRFWFRfUFJPVklERVJfTEVOR1RI
X0lTX0VYUEVOU0lWRSA9IDEsCi0gICAgLyoqCi0gICAgICogVGV4dCBjaHVua3MgcmVtYWluIHZh
bGlkIGFuZCB1c2FibGUgdW50aWwgdGhlIHRleHQgb2JqZWN0IGlzIG1vZGlmaWVkIG9yCi0gICAg
ICogZGVsZXRlZCwgbm90IGp1c3QgdW50aWwgdGhlIG5leHQgdGltZSB0aGUgYWNjZXNzKCkgZnVu
Y3Rpb24gaXMgY2FsbGVkCi0gICAgICogKHdoaWNoIGlzIHRoZSBkZWZhdWx0KS4KLSAgICAgKiBA
c3RhYmxlIElDVSAzLjQKLSAgICAgKi8KLSAgICBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hVTktT
ID0gMiwKLSAgICAvKioKLSAgICAgKiBUaGUgcHJvdmlkZXIgc3VwcG9ydHMgbW9kaWZ5aW5nIHRo
ZSB0ZXh0IHZpYSB0aGUgcmVwbGFjZSgpIGFuZCBjb3B5KCkKLSAgICAgKiBmdW5jdGlvbnMuCi0g
ICAgICogQHNlZSBSZXBsYWNlYWJsZQotICAgICAqIEBzdGFibGUgSUNVIDMuNAotICAgICAqLwot
ICAgIFVURVhUX1BST1ZJREVSX1dSSVRBQkxFID0gMywKLSAgICAvKioKLSAgICAgKiBUaGVyZSBp
cyBtZXRhIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgotICAgICAqIEBzZWUgUmVwbGFj
ZWFibGU6Omhhc01ldGFEYXRhKCkKLSAgICAgKiBAc3RhYmxlIElDVSAzLjQKLSAgICAgKi8gCi0g
ICAgVVRFWFRfUFJPVklERVJfSEFTX01FVEFfREFUQSA9IDQsCi0gICAgLyoqCi0gICAgICogVGV4
dCBwcm92aWRlciBvd25zIHRoZSB0ZXh0IHN0b3JhZ2UuCi0gICAgICogIEdlbmVyYWxseSBvY2N1
cnMgYXMgdGhlIHJlc3VsdCBvZiBhIGRlZXAgY2xvbmUgb2YgdGhlIFVUZXh0LgotICAgICAqICBX
aGVuIGNsb3NpbmcgdGhlIFVUZXh0LCB0aGUgYXNzb2NpYXRlZCB0ZXh0IG11c3QKLSAgICAgKiAg
YWxzbyBiZSBjbG9zZWQvZGVsZXRlZC9mcmVlZC8gd2hhdGV2ZXIgaXMgYXBwcm9wcmlhdGUuCi0g
ICAgICogQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgIFVURVhUX1BST1ZJREVSX09XTlNf
VEVYVCA9IDUKLX07Ci0KLS8qKgotICAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVU
ZXh0LmNsb25lKCkuCi0gICoKLSAgKiAgY2xvbmUgYSBVVGV4dC4gIE11Y2ggbGlrZSBvcGVuaW5n
IGEgVVRleHQgd2hlcmUgdGhlIHNvdXJjZSB0ZXh0IGlzIGl0c2VsZgotICAqICBhbm90aGVyIFVU
ZXh0LgotICAqCi0gICogIEEgZGVlcCBjbG9uZSB3aWxsIGNvcHkgYm90aCB0aGUgVVRleHQgZGF0
YSBzdHJ1Y3R1cmVzIGFuZCB0aGUgdW5kZXJseWluZyB0ZXh0LgotICAqICBUaGUgb3JpZ2luYWwg
YW5kIGNsb25lZCBVVGV4dCB3aWxsIG9wZXJhdGUgY29tcGxldGVseSBpbmRlcGVuZGVudGx5OyBt
b2RpZmljYXRpb25zCi0gICogIG1hZGUgdG8gdGhlIHRleHQgaW4gb25lIHdpbGwgbm90IGVmZmVj
dCB0aGUgb3RoZXIuICBUZXh0IHByb3ZpZGVycyBhcmUgbm90Ci0gICogIHJlcXVpcmVkIHRvIHN1
cHBvcnQgZGVlcCBjbG9uZXMuICBUaGUgdXNlciBvZiBjbG9uZSgpIG11c3QgY2hlY2sgdGhlIHN0
YXR1cyByZXR1cm4KLSAgKiAgYW5kIGJlIHByZXBhcmVkIHRvIGhhbmRsZSBmYWlsdXJlcy4KLSAg
KgotICAqICBBIHNoYWxsb3cgY2xvbmUgcmVwbGljYXRlcyBvbmx5IHRoZSBVVGV4dCBkYXRhIHN0
cnVjdHVyZXM7IGl0IGRvZXMgbm90IG1ha2UKLSAgKiAgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5n
IHRleHQuICBTaGFsbG93IGNsb25lcyBjYW4gYmUgdXNlZCBhcyBhbiBlZmZpY2llbnQgd2F5IHRv
IAotICAqICBoYXZlIG11bHRpcGxlIGl0ZXJhdG9ycyBhY3RpdmUgaW4gYSBzaW5nbGUgdGV4dCBz
dHJpbmcgdGhhdCBpcyBub3QgYmVpbmcKLSAgKiAgbW9kaWZpZWQuCi0gICoKLSAgKiAgQSBzaGFs
bG93IGNsb25lIG9wZXJhdGlvbiBtdXN0IG5vdCBmYWlsIGV4Y2VwdCBmb3IgdHJ1bHkgZXhjZXB0
aW9uYWwgY29uZGl0aW9ucyBzdWNoCi0gICogIGFzIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVz
LgotICAqCi0gICogIEEgVVRleHQgYW5kIGl0cyBjbG9uZSBtYXkgYmUgc2FmZWx5IGNvbmN1cnJl
bnRseSBhY2Nlc3NlZCBieSBzZXBhcmF0ZSB0aHJlYWRzLgotICAqICBUaGlzIGlzIHRydWUgZm9y
IGJvdGggc2hhbGxvdyBhbmQgZGVlcCBjbG9uZXMuCi0gICogIEl0IGlzIHRoZSByZXNwb25zaWJp
bGl0eSBvZiB0aGUgVGV4dCBQcm92aWRlciB0byBlbnN1cmUgdGhhdCB0aGlzIHRocmVhZCBzYWZl
dHkKLSAgKiAgY29uc3RyYWludCBpcyBtZXQuCi0KLSAgKgotICAqICBAcGFyYW0gZGVzdCAgIEEg
VVRleHQgc3RydWN0IHRvIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGNsb25l
IG9wZXJhdGlvbiwKLSAgKiAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZSBjbG9uZSBmdW5j
dGlvbiBzaG91bGQgaGVhcC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBzdHJ1Y3QuCi0gICogIEBwYXJh
bSBzcmMgICAgVGhlIFVUZXh0IHRvIGJlIGNsb25lZC4KLSAgKiAgQHBhcmFtIGRlZXAgICBUUlVF
IHRvIHJlcXVlc3QgYSBkZWVwIGNsb25lLCBGQUxTRSBmb3IgYSBzaGFsbG93IGNsb25lLgotICAq
ICBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4gIEZvciBkZWVwIGNsb25l
cywgVV9VTlNVUFBPUlRFRF9FUlJPUgotICAqICAgICAgICAgICAgICAgIHNob3VsZCBiZSByZXR1
cm5lZCBpZiB0aGUgdGV4dCBwcm92aWRlciBpcyB1bmFibGUgdG8gY2xvbmUgdGhlCi0gICogICAg
ICAgICAgICAgICAgb3JpZ2luYWwgdGV4dC4KLSAgKiAgQHJldHVybiAgICAgICBUaGUgbmV3bHkg
Y3JlYXRlZCBjbG9uZSwgb3IgTlVMTCBpZiB0aGUgY2xvbmUgb3BlcmF0aW9uIGZhaWxlZC4KLSAg
KgotICAqIEBzdGFibGUgSUNVIDMuNAotICAqLwotdHlwZWRlZiBVVGV4dCAqIFVfQ0FMTENPTlYK
LVVUZXh0Q2xvbmUoVVRleHQgKmRlc3QsIGNvbnN0IFVUZXh0ICpzcmMsIFVCb29sIGRlZXAsIFVF
cnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9u
IGZvciBVVGV4dC5uYXRpdmVMZW5ndGgoKS4KLSAqCi0gKiBAcGFyYW0gdXQgdGhlIFVUZXh0IHRv
IGdldCB0aGUgbGVuZ3RoIG9mLgotICogQHJldHVybiB0aGUgbGVuZ3RoLCBpbiB0aGUgbmF0aXZl
IHVuaXRzIG9mIHRoZSBvcmlnaW5hbCB0ZXh0IHN0cmluZy4KLSAqIEBzZWUgVVRleHQKLSAqIEBz
dGFibGUgSUNVIDMuNAotICovCi10eXBlZGVmIGludDY0X3QgVV9DQUxMQ09OVgotVVRleHROYXRp
dmVMZW5ndGgoVVRleHQgKnV0KTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9u
IGZvciBVVGV4dC5hY2Nlc3MoKS4gIEdldCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHRleHQgY2h1
bmsKLSAqICBjb250YWluaW5nIHRoZSB0ZXh0IGF0IGEgcmVxdWVzdGVkIG5hdGl2ZSBpbmRleC4g
IFRoZSBVVGV4dCdzIGl0ZXJhdGlvbgotICogIHBvc2l0aW9uIHdpbGwgYmUgbGVmdCBhdCB0aGUg
cmVxdWVzdGVkIGluZGV4LiAgSWYgdGhlIGluZGV4IGlzIG91dAotICogIG9mIGJvdW5kcywgdGhl
IGl0ZXJhdGlvbiBwb3NpdGlvbiB3aWxsIGJlIGxlZnQgYXQgdGhlIHN0YXJ0IG9yIGVuZAotICog
IG9mIHRoZSBzdHJpbmcsIGFzIGFwcHJvcHJpYXRlLgotICoKLSAqICBDaHVua3MgbXVzdCBiZWdp
biBhbmQgZW5kIG9uIGNvZGUgcG9pbnQgYm91bmRhcmllcy4gIEEgc2luZ2xlIGNvZGUgcG9pbnQK
LSAqICBjb21wcmlzZWQgb2YgbXVsdGlwbGUgc3RvcmFnZSB1bml0cyBtdXN0IG5ldmVyIHNwYW4g
YSBjaHVuayBib3VuZGFyeS4KLSAqCi0gKgotICogQHBhcmFtIHV0ICAgICAgICAgIHRoZSBVVGV4
dCBiZWluZyBhY2Nlc3NlZC4KLSAqIEBwYXJhbSBuYXRpdmVJbmRleCBSZXF1ZXN0ZWQgaW5kZXgg
b2YgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCi0gKiBAcGFyYW0gZm9yd2FyZCAgICAgSWYgVFJV
RSwgdGhlbiB0aGUgcmV0dXJuZWQgY2h1bmsgbXVzdCBjb250YWluIHRleHQKLSAqICAgICAgICAg
ICAgICAgICAgICBzdGFydGluZyBmcm9tIHRoZSBpbmRleCwgc28gdGhhdCBzdGFydDw9aW5kZXg8
bGltaXQuCi0gKiAgICAgICAgICAgICAgICAgICAgSWYgRkFMU0UsIHRoZW4gdGhlIHJldHVybmVk
IGNodW5rIG11c3QgY29udGFpbiB0ZXh0Ci0gKiAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHRo
ZSBpbmRleCwgc28gdGhhdCBzdGFydDxpbmRleDw9bGltaXQuCi0gKiBAcmV0dXJuICAgICAgICAg
ICAgVHJ1ZSBpZiB0aGUgcmVxdWVzdGVkIGluZGV4IGNvdWxkIGJlIGFjY2Vzc2VkLiAgVGhlIGNo
dW5rCi0gKiAgICAgICAgICAgICAgICAgICAgd2lsbCBjb250YWluIHRoZSByZXF1ZXN0ZWQgdGV4
dC4KLSAqICAgICAgICAgICAgICAgICAgICBGYWxzZSB2YWx1ZSBpZiBhIGNodW5rIGNhbm5vdCBi
ZSBhY2Nlc3NlZAotICogICAgICAgICAgICAgICAgICAgICh0aGUgcmVxdWVzdGVkIGluZGV4IGlz
IG91dCBvZiBib3VuZHMpLgotICoKLSAqIEBzZWUgVVRleHQKLSAqIEBzdGFibGUgSUNVIDMuNAot
ICovCi10eXBlZGVmIFVCb29sIFVfQ0FMTENPTlYKLVVUZXh0QWNjZXNzKFVUZXh0ICp1dCwgaW50
NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCk7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlw
ZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuZXh0cmFjdCgpLgotICoKLSAqIEV4dHJhY3QgdGV4dCBm
cm9tIGEgVVRleHQgaW50byBhIFVDaGFyIGJ1ZmZlci4gIFRoZSByYW5nZSBvZiB0ZXh0IHRvIGJl
IGV4dHJhY3RlZAotICogaXMgc3BlY2lmaWVkIGluIHRoZSBuYXRpdmUgaW5kaWNlcyBvZiB0aGUg
VVRleHQgcHJvdmlkZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vzc2FyaWx5Ci0gKiBiZSBVVEYtMTYg
aW5kaWNlcy4KLSAqIDxwPgotICogVGhlIHNpemUgKG51bWJlciBvZiAxNiBiaXQgVUNoYXJzKSBp
biB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJuZWQuICBUaGUKLSAqIGZ1bGwgYW1v
dW50IGlzIHJldHVybmVkLCBldmVuIHdoZW4gdGhlIHNwZWNpZmllZCBidWZmZXIgc2l6ZSBpcyBz
bWFsbGVyLgotICogPHA+Ci0gKiBUaGUgZXh0cmFjdGVkIHN0cmluZyB3aWxsIChpZiB5b3UgYXJl
IGEgdXNlcikgLyBtdXN0IChpZiB5b3UgYXJlIGEgdGV4dCBwcm92aWRlcikKLSAqIGJlIE5VTC10
ZXJtaW5hdGVkIGlmIHRoZXJlIGlzIHN1ZmZpY2llbnQgc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9u
IGJ1ZmZlci4KLSAqCi0gKiBAcGFyYW0gIHV0ICAgICAgICAgICAgdGhlIFVUZXh0IGZyb20gd2hp
Y2ggdG8gZXh0cmFjdCBkYXRhLgotICogQHBhcmFtICBuYXRpdmVTdGFydCAgIHRoZSBuYXRpdmUg
aW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY2VyIHRvIGV4dHJhY3QuCi0gKiBAcGFyYW0gIG5hdGl2
ZUxpbWl0ICAgdGhlIG5hdGl2ZSBzdHJpbmcgaW5kZXggb2YgdGhlIHBvc2l0aW9uIGZvbGxvd2lu
ZyB0aGUgbGFzdAotICogICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciB0byBleHRyYWN0
LgotICogQHBhcmFtICBkZXN0ICAgICAgICAgIHRoZSBVQ2hhciAoVVRGLTE2KSBidWZmZXIgaW50
byB3aGljaCB0aGUgZXh0cmFjdGVkIHRleHQgaXMgcGxhY2VkCi0gKiBAcGFyYW0gIGRlc3RDYXBh
Y2l0eSAgVGhlIHNpemUsIGluIFVDaGFycywgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4gIE1h
eSBiZSB6ZXJvCi0gKiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHByZWNvbXB1dGluZyB0aGUg
cmVxdWlyZWQgc2l6ZS4KLSAqIEBwYXJhbSAgc3RhdHVzICAgICAgICByZWNlaXZlcyBhbnkgZXJy
b3Igc3RhdHVzLgotICogICAgICAgICAgICAgICAgICAgICAgIElmIFVfQlVGRkVSX09WRVJGTE9X
X0VSUk9SOiBSZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMgZm9yCi0gKiAgICAgICAgICAgICAgICAg
ICAgICAgcHJlZmxpZ2h0aW5nLgotICogQHJldHVybiBOdW1iZXIgb2YgVUNoYXJzIGluIHRoZSBk
YXRhLiAgRG9lcyBub3QgaW5jbHVkZSBhIHRyYWlsaW5nIE5VTC4KLSAqCi0gKiBAc3RhYmxlIElD
VSAzLjQKLSAqLwotdHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKLVVUZXh0RXh0cmFjdChVVGV4
dCAqdXQsCi0gICAgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVM
aW1pdCwKLSAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCi0g
ICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBl
IGRlY2xhcmF0aW9uIGZvciBVVGV4dC5yZXBsYWNlKCkuCi0gKgotICogUmVwbGFjZSBhIHJhbmdl
IG9mIHRoZSBvcmlnaW5hbCB0ZXh0IHdpdGggYSByZXBsYWNlbWVudCB0ZXh0LgotICoKLSAqIExl
YXZlcyB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gYXQgdGhlIHBvc2l0aW9uIGZvbGxv
d2luZyB0aGUKLSAqICBuZXdseSBpbnNlcnRlZCByZXBsYWNlbWVudCB0ZXh0LgotICoKLSAqIFRo
aXMgZnVuY3Rpb24gbmVlZCBvbmx5IGJlIGltcGxlbWVudGVkIG9uIFVUZXh0IHR5cGVzIHRoYXQg
c3VwcG9ydCB3cml0aW5nLgotICoKLSAqIFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUg
c2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRleHQgb3BlbmVkIG9udG8gdGhlCi0gKiB1bmRlcmx5
aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIFRoZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Ig
dXBkYXRpbmcgdGhlCi0gKiB0ZXh0IGNodW5rIHdpdGhpbiB0aGUgVVRleHQgdG8gcmVmbGVjdCB0
aGUgdXBkYXRlZCBpdGVyYXRpb24gcG9zaXRpb24sCi0gKiB0YWtpbmcgaW50byBhY2NvdW50IGFu
eSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIHN0cmluZydzIHN0cnVjdHVyZSBjYXVzZWQKLSAq
IGJ5IHRoZSByZXBsYWNlIG9wZXJhdGlvbi4KLSAqCi0gKiBAcGFyYW0gdXQgICAgICAgICAgICAg
ICB0aGUgVVRleHQgcmVwcmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgotICog
QHBhcmFtIG5hdGl2ZVN0YXJ0ICAgICAgdGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgcmVn
aW9uIHRvIGJlIHJlcGxhY2VkCi0gKiBAcGFyYW0gbmF0aXZlTGltaXQgICAgICB0aGUgaW5kZXgg
b2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNlZC4KLSAq
IEBwYXJhbSByZXBsYWNlbWVudFRleHQgIHBvaW50ZXIgdG8gdGhlIHJlcGxhY2VtZW50IHRleHQK
LSAqIEBwYXJhbSByZXBsYWNtZW50TGVuZ3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgdGV4
dCBpbiBVQ2hhcnMsIG9yIC0xIGlmIHRoZSB0ZXh0IGlzIE5VTCB0ZXJtaW5hdGVkLgotICogQHBh
cmFtIHN0YXR1cyAgICAgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3NpYmxl
IGVycm9ycyBpbmNsdWRlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICBVX05PX1dSSVRFX1BF
Uk1JU1NJT04KLSAqCi0gKiBAcmV0dXJuIFRoZSBzaWduZWQgbnVtYmVyIG9mIChuYXRpdmUpIHN0
b3JhZ2UgdW5pdHMgYnkgd2hpY2gKLSAqICAgICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBl
eHBhbmRlZCBvciBjb250cmFjdGVkLgotICoKLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi10eXBl
ZGVmIGludDMyX3QgVV9DQUxMQ09OVgotVVRleHRSZXBsYWNlKFVUZXh0ICp1dCwKLSAgICAgICAg
ICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAotICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyICpyZXBsYWNlbWVudFRleHQsIGludDMyX3QgcmVwbGFjbWVudExlbmd0
aCwKLSAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0vKioKLSAqIEZ1bmN0aW9u
IHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmNvcHkoKS4KLSAqCi0gKiBDb3B5IG9yIG1vdmUg
YSBzdWJzdHJpbmcgZnJvbSBvbmUgcG9zaXRpb24gdG8gYW5vdGhlciB3aXRoaW4gdGhlIHRleHQs
Ci0gKiB3aGlsZSByZXRhaW5pbmcgYW55IG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4
dC4KLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkdXBsaWNhdGUgb3IgcmVvcmRlciBzdWJz
dHJpbmdzLgotICogVGhlIGRlc3RpbmF0aW9uIGluZGV4IG11c3Qgbm90IG92ZXJsYXAgdGhlIHNv
dXJjZSByYW5nZS4KLSAqCi0gKiBUaGUgdGV4dCB0byBiZSBjb3BpZWQgb3IgbW92ZWQgaXMgaW5z
ZXJ0ZWQgYXQgZGVzdEluZGV4OwotICogaXQgZG9lcyBub3QgcmVwbGFjZSBvciBvdmVyd3JpdGUg
YW55IGV4aXN0aW5nIHRleHQuCi0gKgotICogVGhpcyBmdW5jdGlvbiBuZWVkIG9ubHkgYmUgaW1w
bGVtZW50ZWQgZm9yIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0aW5nLgotICoKLSAqIFdo
ZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRl
eHQgb3BlbmVkIG9udG8gdGhlCi0gKiB1bmRlcmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIFRo
ZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlCi0gKiB0ZXh0IGNodW5r
IHdpdGhpbiB0aGUgVVRleHQgdG8gcmVmbGVjdCB0aGUgdXBkYXRlZCBpdGVyYXRpb24gcG9zaXRp
b24sCi0gKiB0YWtpbmcgaW50byBhY2NvdW50IGFueSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5n
IHN0cmluZydzIHN0cnVjdHVyZSBjYXVzZWQKLSAqIGJ5IHRoZSByZXBsYWNlIG9wZXJhdGlvbi4K
LSAqCi0gKiBAcGFyYW0gdXQgICAgICAgICAgIFRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhlIHRl
eHQgdG8gYmUgb3BlcmF0ZWQgb24uCi0gKiBAcGFyYW0gbmF0aXZlU3RhcnQgIFRoZSBpbmRleCBv
ZiB0aGUgc3RhcnQgb2YgdGhlIHJlZ2lvbiB0byBiZSBjb3BpZWQgb3IgbW92ZWQKLSAqIEBwYXJh
bSBuYXRpdmVMaW1pdCAgVGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBy
ZWdpb24gdG8gYmUgcmVwbGFjZWQuCi0gKiBAcGFyYW0gbmF0aXZlRGVzdCAgIFRoZSBkZXN0aW5h
dGlvbiBpbmRleCB0byB3aGljaCB0aGUgc291cmNlIHN1YnN0cmluZyBpcyBjb3BpZWQgb3IgbW92
ZWQuCi0gKiBAcGFyYW0gbW92ZSAgICAgICAgIElmIFRSVUUsIHRoZW4gdGhlIHN1YnN0cmluZyBp
cyBtb3ZlZCwgbm90IGNvcGllZC9kdXBsaWNhdGVkLgotICogQHBhcmFtIHN0YXR1cyAgICAgICBy
ZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUgVV9OT19X
UklURV9QRVJNSVNTSU9OCi0gKgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLXR5cGVkZWYgdm9p
ZCBVX0NBTExDT05WCi1VVGV4dENvcHkoVVRleHQgKnV0LAotICAgICAgICAgIGludDY0X3QgbmF0
aXZlU3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCi0gICAgICAgICAgaW50NjRfdCBuYXRpdmVE
ZXN0LAotICAgICAgICAgIFVCb29sIG1vdmUsCi0gICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVz
KTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5tYXBPZmZz
ZXRUb05hdGl2ZSgpLgotICogTWFwIGZyb20gdGhlIGN1cnJlbnQgVUNoYXIgb2Zmc2V0IHdpdGhp
biB0aGUgY3VycmVudCB0ZXh0IGNodW5rIHRvCi0gKiAgdGhlIGNvcnJlc3BvbmRpbmcgbmF0aXZl
IGluZGV4IGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGV4dC4KLSAqCi0gKiBUaGlzIGlzIHJlcXVp
cmVkIG9ubHkgZm9yIHRleHQgcHJvdmlkZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRpdmUgVVRGLTE2
IGluZGV4ZXMuCi0gKgotICogQHBhcmFtIHV0ICAgICB0aGUgVVRleHQuCi0gKiBAcmV0dXJuIEFi
c29sdXRlIChuYXRpdmUpIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gY2h1bmtPZmZzZXQgaW4gdGhl
IGN1cnJlbnQgY2h1bmsuCi0gKiAgICAgICAgIFRoZSByZXR1cm5lZCBuYXRpdmUgaW5kZXggc2hv
dWxkIGFsd2F5cyBiZSB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuCi0gKgotICogQHN0YWJsZSBJ
Q1UgMy40Ci0gKi8KLXR5cGVkZWYgaW50NjRfdCBVX0NBTExDT05WCi1VVGV4dE1hcE9mZnNldFRv
TmF0aXZlKGNvbnN0IFVUZXh0ICp1dCk7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNsYXJh
dGlvbiBmb3IgVVRleHQubWFwSW5kZXhUb1VURjE2KCkuCi0gKiBNYXAgZnJvbSBhIG5hdGl2ZSBp
bmRleCB0byBhIFVDaGFyIG9mZnNldCB3aXRoaW4gYSB0ZXh0IGNodW5rLgotICogQmVoYXZpb3Ig
aXMgdW5kZWZpbmVkIGlmIHRoZSBuYXRpdmUgaW5kZXggZG9lcyBub3QgZmFsbCB3aXRoaW4gdGhl
Ci0gKiAgIGN1cnJlbnQgY2h1bmsuCi0gKgotICogVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBv
bmx5IGZvciB0ZXh0IHByb3ZpZGVycyB0aGF0IGRvIG5vdCB1c2UgbmF0aXZlIFVURi0xNiBpbmRl
eGVzLgotICoKLSAqIEBwYXJhbSB1dCAgICAgICAgICBUaGUgVVRleHQgY29udGFpbmluZyB0aGUg
dGV4dCBjaHVuay4KLSAqIEBwYXJhbSBuYXRpdmVJbmRleCBBYnNvbHV0ZSAobmF0aXZlKSB0ZXh0
IGluZGV4LCBjaHVuay0+c3RhcnQ8PWluZGV4PD1jaHVuay0+bGltaXQuCi0gKiBAcmV0dXJuICAg
ICAgICAgICAgQ2h1bmstcmVsYXRpdmUgVVRGLTE2IG9mZnNldCBjb3JyZXNwb25kaW5nIHRvIHRo
ZSBzcGVjaWZpZWQgbmF0aXZlCi0gKiAgICAgICAgICAgICAgICAgICAgaW5kZXguCi0gKgotICog
QHN0YWJsZSBJQ1UgMy40Ci0gKi8KLXR5cGVkZWYgaW50MzJfdCBVX0NBTExDT05WCi1VVGV4dE1h
cE5hdGl2ZUluZGV4VG9VVEYxNihjb25zdCBVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgp
OwotCi0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQudXRleHRD
bG9zZSgpLgotICoKLSAqIEEgVGV4dCBQcm92aWRlciBjbG9zZSBmdW5jdGlvbiBpcyBvbmx5IHJl
cXVpcmVkIGZvciBwcm92aWRlciB0eXBlcyB0aGF0IG1ha2UKLSAqICBhbGxvY2F0aW9ucyBpbiB0
aGVpciBvcGVuIGZ1bmN0aW9uIChvciBvdGhlciBmdW5jdGlvbnMpIHRoYXQgbXVzdCBiZSAKLSAq
ICBjbGVhbmVkIHdoZW4gdGhlIFVUZXh0IGlzIGNsb3NlZC4KLSAqCi0gKiBUaGUgYWxsb2NhdGlv
biBvZiB0aGUgVVRleHQgc3RydWN0IGl0c2VsZiBhbmQgYW55ICJleHRyYSIgc3RvcmFnZQotICog
YXNzb2NpYXRlZCB3aXRoIHRoZSBVVGV4dCBpcyBoYW5kbGVkIGJ5IHRoZSBjb21tb24gVVRleHQg
aW1wbGVtZW50YXRpb24KLSAqIGFuZCBkb2VzIG5vdCByZXF1aXJlIHByb3ZpZGVyIHNwZWNpZmlj
IGNsZWFudXAgaW4gYSBjbG9zZSBmdW5jdGlvbi4KLSAqCi0gKiBNb3N0IFVUZXh0IHByb3ZpZGVy
IGltcGxlbWVudGF0aW9ucyBkbyBub3QgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbi4K
LSAqCi0gKiBAcGFyYW0gdXQgQSBVVGV4dCBvYmplY3QgdG8gYmUgY2xvc2VkLgotICoKLSAqIEBz
dGFibGUgSUNVIDMuNAotICovCi10eXBlZGVmIHZvaWQgVV9DQUxMQ09OVgotVVRleHRDbG9zZShV
VGV4dCAqdXQpOwotCi0KLS8qKgotICAqICAgKHB1YmxpYykgIEZ1bmN0aW9uIGRpc3BhdGNoIHRh
YmxlIGZvciBVVGV4dC4KLSAgKiAgICAgICAgICAgICBDb25jZXB0dWFsbHkgdmVyeSBtdWNoIGxp
a2UgYSBDKysgVmlydHVhbCBGdW5jdGlvbiBUYWJsZS4KLSAgKiAgICAgICAgICAgICBUaGlzIHN0
cnVjdCBkZWZpbmVzIHRoZSBvcmdhbml6YXRpb24gb2YgdGhlIHRhYmxlLgotICAqICAgICAgICAg
ICAgIEVhY2ggdGV4dCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgYW4KLSAg
KiAgICAgICAgICAgICAgYWN0dWFsIHRhYmxlIHRoYXQgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGUg
YXBwcm9wcmlhdGUgZnVuY3Rpb25zCi0gICogICAgICAgICAgICAgIGZvciB0aGUgdHlwZSBvZiB0
ZXh0IGJlaW5nIGhhbmRsZWQuCi0gICogICBAc3RhYmxlIElDVSAzLjYKLSAgKi8KLXN0cnVjdCBV
VGV4dEZ1bmNzIHsKLSAgICAvKioKLSAgICAgKiAgIChwdWJsaWMpICBGdW5jdGlvbiB0YWJsZSBz
aXplLCBzaXplb2YoVVRleHRGdW5jcykKLSAgICAgKiAgICAgICAgICAgICBJbnRlbmRlZCBmb3Ig
dXNlIHNob3VsZCB0aGUgdGFibGUgZ3JvdyB0byBhY2NvbW9kYXRlIGFkZGVkCi0gICAgICogICAg
ICAgICAgICAgZnVuY3Rpb25zIGluIHRoZSBmdXR1cmUsIHRvIGFsbG93IHRlc3RzIGZvciBvbGRl
ciBmb3JtYXQKLSAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbiB0YWJsZXMgdGhhdCBkbyBub3Qg
Y29udGFpbiB0aGUgZXh0ZW5zaW9ucy4KLSAgICAgKgotICAgICAqICAgICAgICAgICAgIEZpZWxk
cyBhcmUgcGxhY2VkIGZvciBvcHRpbWFsIGFsaWdubWVudCBvbgotICAgICAqICAgICAgICAgICAg
IDMyLzY0LzEyOC1iaXQtcG9pbnRlciBtYWNoaW5lcywgYnkgbm9ybWFsbHkgZ3JvdXBpbmcgdG9n
ZXRoZXIKLSAgICAgKiAgICAgICAgICAgICA0IDMyLWJpdCBmaWVsZHMsCi0gICAgICogICAgICAg
ICAgICAgNCBwb2ludGVycywKLSAgICAgKiAgICAgICAgICAgICAyIDY0LWJpdCBmaWVsZHMKLSAg
ICAgKiAgICAgICAgICAgICBpbiBzZXF1ZW5jZS4KLSAgICAgKiAgIEBzdGFibGUgSUNVIDMuNgot
ICAgICAqLwotICAgIGludDMyX3QgICAgICAgdGFibGVTaXplOwotCi0gICAgLyoqCi0gICAgICAq
ICAgKHByaXZhdGUpICBBbGlnbm1lbnQgcGFkZGluZy4KLSAgICAgICogICAgICAgICAgICAgIERv
IG5vdCB1c2UsIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yayBvbmx5Lgot
ICAgICAgKiAgIEBpbnRlcm5hbAotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgIHJlc2VydmVk
MSwgLyoqIEBpbnRlcm5hbCAqLyByZXNlcnZlZDIsIC8qKiBAaW50ZXJuYWwgKi8gcmVzZXJ2ZWQz
OwotCi0KLSAgICAvKioKLSAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4
dENsb25lCi0gICAgICoKLSAgICAgKiBAc2VlIFVUZXh0Q2xvbmUKLSAgICAgKiBAc3RhYmxlIElD
VSAzLjYKLSAgICAgKi8KLSAgICBVVGV4dENsb25lICpjbG9uZTsKLQotICAgIC8qKgotICAgICAq
IChwdWJsaWMpIGZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0TGVuZ3RoCi0gICAgICogTWF5IGJl
IGV4cGVuc2l2ZSB0byBjb21wdXRlIQotICAgICAqCi0gICAgICogQHNlZSBVVGV4dExlbmd0aAot
ICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIFVUZXh0TmF0aXZlTGVuZ3RoICpu
YXRpdmVMZW5ndGg7Ci0KLSAgICAvKioKLSAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVy
IGZvciBVVGV4dEFjY2Vzcy4KLSAgICAgKgotICAgICAqIEBzZWUgVVRleHRBY2Nlc3MKLSAgICAg
KiBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBVVGV4dEFjY2VzcyAqYWNjZXNzOwotCi0g
ICAgLyoqCi0gICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRFeHRyYWN0
LgotICAgICAqCi0gICAgICogQHNlZSBVVGV4dEV4dHJhY3QKLSAgICAgKiBAc3RhYmxlIElDVSAz
LjYKLSAgICAgKi8KLSAgICBVVGV4dEV4dHJhY3QgKmV4dHJhY3Q7Ci0KLSAgICAvKioKLSAgICAg
KiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dFJlcGxhY2UuCi0gICAgICoKLSAg
ICAgKiBAc2VlIFVUZXh0UmVwbGFjZQotICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAqLwot
ICAgIFVUZXh0UmVwbGFjZSAqcmVwbGFjZTsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMpIEZ1
bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0Q29weS4KLSAgICAgKgotICAgICAqIEBzZWUgVVRleHRD
b3B5Ci0gICAgICogQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgVVRleHRDb3B5ICpjb3B5
OwotCi0gICAgLyoqCi0gICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRN
YXBPZmZzZXRUb05hdGl2ZS4KLSAgICAgKgotICAgICAqIEBzZWUgVVRleHRNYXBPZmZzZXRUb05h
dGl2ZQotICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIFVUZXh0TWFwT2Zmc2V0
VG9OYXRpdmUgKm1hcE9mZnNldFRvTmF0aXZlOwotCi0gICAgLyoqCi0gICAgICogKHB1YmxpYykg
RnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRNYXBOYXRpdmVJbmRleFRvVVRGMTYuCi0gICAgICoK
LSAgICAgKiBAc2VlIFVUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2Ci0gICAgICogQHN0YWJsZSBJ
Q1UgMy42Ci0gICAgICovCi0gICAgVVRleHRNYXBOYXRpdmVJbmRleFRvVVRGMTYgKm1hcE5hdGl2
ZUluZGV4VG9VVEYxNjsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50
ZXIgZm9yIFVUZXh0Q2xvc2UuCi0gICAgICAqCi0gICAgICAqIEBzZWUgVVRleHRDbG9zZQotICAg
ICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAgVVRleHRDbG9zZSAgKmNsb3NlOwot
Ci0gICAgLyoqCi0gICAgICAqIChwcml2YXRlKSAgU3BhcmUgZnVuY3Rpb24gcG9pbnRlcgotICAg
ICAgKiBAaW50ZXJuYWwKLSAgICAgICovCi0gICAgVVRleHRDbG9zZSAgKnNwYXJlMTsKLSAgICAK
LSAgICAvKioKLSAgICAgICogKHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCi0gICAg
ICAqIEBpbnRlcm5hbAotICAgICAgKi8KLSAgICBVVGV4dENsb3NlICAqc3BhcmUyOwotCi0gICAg
LyoqCi0gICAgICAqIChwcml2YXRlKSAgU3BhcmUgZnVuY3Rpb24gcG9pbnRlcgotICAgICAgKiBA
aW50ZXJuYWwKLSAgICAgICovCi0gICAgVVRleHRDbG9zZSAgKnNwYXJlMzsKLQotfTsKLS8qKgot
ICogRnVuY3Rpb24gZGlzcGF0Y2ggdGFibGUgZm9yIFVUZXh0Ci0gKiBAc2VlIFVUZXh0RnVuY3MK
LSAqLwotdHlwZWRlZiBzdHJ1Y3QgVVRleHRGdW5jcyBVVGV4dEZ1bmNzOwotCi0gLyoqCi0gICog
ICBVVGV4dCBzdHJ1Y3QuICBQcm92aWRlcyB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGdlbmVy
aWMgVVRleHQgYWNjZXNzIGNvZGUKLSAgKiAgICAgICAgICAgICAgICAgIGFuZCB0aGUgVVRleHQg
cHJvdmlkZXIgY29kZSB0aGF0IHdvcmtzIG9uIHNwZWNpZmljIGtpbmRzIG9mCi0gICogICAgICAg
ICAgICAgICAgICB0ZXh0ICAoVVRGLTgsIG5vbmNvbnRpZ3VvdXMgVVRGLTE2LCB3aGF0ZXZlci4p
Ci0gICoKLSAgKiAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9ucyB0aGF0IGFyZSB1c2luZyBw
cmVkZWZpbmVkIHR5cGVzIG9mIHRleHQgcHJvdmlkZXJzCi0gICogICAgICAgICAgICAgICAgICB0
byBwYXNzIHRleHQgZGF0YSB0byBJQ1Ugc2VydmljZXMgd2lsbCBoYXZlIG5vIG5lZWQgdG8gdmll
dyB0aGUKLSAgKiAgICAgICAgICAgICAgICAgIGludGVybmFscyBvZiB0aGUgVVRleHQgc3RydWN0
cyB0aGF0IHRoZXkgb3Blbi4KLSAgKgotICAqIEBzdGFibGUgSUNVIDMuNgotICAqLwotc3RydWN0
IFVUZXh0IHsKLSAgICAvKioKLSAgICAgKiAgICAgKHByaXZhdGUpICBNYWdpYy4gIFVzZWQgdG8g
aGVscCBkZXRlY3Qgd2hlbiBVVGV4dCBmdW5jdGlvbnMgYXJlIGhhbmRlZAotICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgaW52YWxpZCBvciB1bml0aWFsaXplZCBVVGV4dCBzdHJ1Y3RzLgot
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdXRleHRfb3BlblhZWigpIGZ1bmN0aW9ucyB0
YWtlIGFuIGluaXRpYWxpemVkLAotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgYnV0IG5v
dCBuZWNlc3NhcmlseSBvcGVuLCBVVGV4dCBzdHJ1Y3QgYXMgYW4KLSAgICAgKiAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsIGZpbGwtaW4gcGFyYW1ldGVyLiAgVGhpcyBtYWdpYyBmaWVs
ZAotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCB0byBjaGVjayBmb3IgdGhh
dCBpbml0aWFsaXphdGlvbi4KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgcHJv
dmlkZXIgY2xvc2UgZnVuY3Rpb25zIG11c3QgTk9UIGNsZWFyCi0gICAgICogICAgICAgICAgICAg
ICAgICAgICAgICB0aGUgbWFnaWMgZmllbGQgYmVjYXVzZSB0aGF0IHdvdWxkIHByZXZlbnQKLSAg
ICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlIG9mIHRoZSBVVGV4dCBzdHJ1Y3QuCi0g
ICAgICogQGludGVybmFsCi0gICAgICovCi0gICAgdWludDMyX3QgICAgICAgbWFnaWM7Ci0KLQot
ICAgIC8qKgotICAgICAqICAgICAocHJpdmF0ZSkgIEZsYWdzIGZvciBtYW5hZ2luZyB0aGUgYWxs
b2NhdGlvbiBhbmQgZnJlZWluZyBvZgotICAgICAqICAgICAgICAgICAgICAgIG1lbW9yeSBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBVVGV4dC4KLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAgICBp
bnQzMl90ICAgICAgICBmbGFnczsKLQotCi0gICAgLyoqCi0gICAgICAqICBUZXh0IHByb3ZpZGVy
IHByb3BlcnRpZXMuICBUaGlzIHNldCBvZiBmbGFncyBpcyBtYWludGFpbnRlZCBieSB0aGUKLSAg
ICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgcHJvdmlkZXIgaW1wbGVtZW50
YXRpb24uCi0gICAgICAqICBAc3RhYmxlIElDVSAzLjQKLSAgICAgICovCi0gICAgaW50MzJfdCAg
ICAgICAgIHByb3ZpZGVyUHJvcGVydGllczsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMpIHNp
emVPZlN0cnVjdD1zaXplb2YoVVRleHQpCi0gICAgICogQWxsb3dzIHBvc3NpYmxlIGJhY2t3YXJk
IGNvbXBhdGlibGUgZXh0ZW5zaW9uLgotICAgICAqCi0gICAgICogQHN0YWJsZSBJQ1UgMy40Ci0g
ICAgICovCi0gICAgaW50MzJfdCAgICAgICAgIHNpemVPZlN0cnVjdDsKLSAgICAKLSAgICAvKiAt
LS0tLS0gMTYgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnkgLS0tLS0tLS0tLS0gICovCi0gICAgCi0K
LSAgICAvKioKLSAgICAgICogIChwcm90ZWN0ZWQpIE5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjdGVyIHBvc2l0aW9uIGZvbGxvd2luZwotICAgICAgKiAgICAgICAgICAgICAgdGhlIGN1
cnJlbnQgY2h1bmsuCi0gICAgICAqICBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAgaW50
NjRfdCAgICAgICAgIGNodW5rTmF0aXZlTGltaXQ7Ci0KLSAgICAvKioKLSAgICAgKiAgIChwcm90
ZWN0ZWQpICBTaXplIGluIGJ5dGVzIG9mIHRoZSBleHRyYSBzcGFjZSAocEV4dHJhKS4KLSAgICAg
KiAgQHN0YWJsZSBJQ1UgMy40Ci0gICAgICovCi0gICAgaW50MzJfdCAgICAgICAgZXh0cmFTaXpl
OwotCi0gICAgLyoqCi0gICAgICAqICAgIChwcm90ZWN0ZWQpIFRoZSBoaWdoZXN0IGNodW5rIG9m
ZnNldCB3aGVyZSBuYXRpdmUgaW5kZXhpbmcgYW5kCi0gICAgICAqICAgIGNodW5rIChVVEYtMTYp
IGluZGV4aW5nIGNvcnJlc3BvbmQuICBGb3IgVVRGLTE2IHNvdXJjZXMsIHZhbHVlCi0gICAgICAq
ICAgIHdpbGwgYmUgZXF1YWwgdG8gY2h1bmtMZW5ndGguCi0gICAgICAqCi0gICAgICAqICAgIEBz
dGFibGUgSUNVIDMuNgotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgbmF0aXZlSW5kZXhp
bmdMaW1pdDsKLQotICAgIC8qIC0tLS0gMTYgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnktLS0tLS0g
Ki8KLSAgICAKLSAgICAvKioKLSAgICAgKiAgKHByb3RlY3RlZCkgTmF0aXZlIGluZGV4IG9mIHRo
ZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgY2h1bmsuCi0gICAgICogIEBzdGFibGUgSUNV
IDMuNgotICAgICAqLwotICAgIGludDY0X3QgICAgICAgICBjaHVua05hdGl2ZVN0YXJ0OwotCi0g
ICAgLyoqCi0gICAgICogIChwcm90ZWN0ZWQpIEN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHdp
dGhpbiB0aGUgdGV4dCBjaHVuayAoVVRGLTE2IGJ1ZmZlcikuCi0gICAgICogIFRoaXMgaXMgdGhl
IGluZGV4IHRvIHRoZSBjaGFyYWN0ZXIgdGhhdCB3aWxsIGJlIHJldHVybmVkIGJ5IHV0ZXh0X25l
eHQzMigpLgotICAgICAqICBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBpbnQzMl90ICAg
ICAgICAgY2h1bmtPZmZzZXQ7Ci0KLSAgICAvKioKLSAgICAgKiAgKHByb3RlY3RlZCkgTGVuZ3Ro
IHRoZSB0ZXh0IGNodW5rIChVVEYtMTYgYnVmZmVyKSwgaW4gVUNoYXJzLgotICAgICAqICBAc3Rh
YmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgY2h1bmtMZW5ndGg7Ci0K
LSAgICAvKiAtLS0tIDE2ICBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tICovCi0gICAgCi0KLSAg
ICAvKioKLSAgICAgKiAgKHByb3RlY3RlZCkgIHBvaW50ZXIgdG8gYSBjaHVuayBvZiB0ZXh0IGlu
IFVURi0xNiBmb3JtYXQuCi0gICAgICogIE1heSByZWZlciBlaXRoZXIgdG8gb3JpZ2luYWwgc3Rv
cmFnZSBvZiB0aGUgc291cmNlIG9mIHRoZSB0ZXh0LCBvcgotICAgICAqICBpZiBjb252ZXJzaW9u
IHdhcyByZXF1aXJlZCwgdG8gYSBidWZmZXIgb3duZWQgYnkgdGhlIFVUZXh0LgotICAgICAqICBA
c3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBjb25zdCBVQ2hhciAgICAqY2h1bmtDb250ZW50
czsKLQotICAgICAvKioKLSAgICAgICogKHB1YmxpYykgICAgIFBvaW50ZXIgdG8gRGlzcGF0Y2gg
dGFibGUgZm9yIGFjY2Vzc2luZyBmdW5jdGlvbnMgZm9yIHRoaXMgVVRleHQuCi0gICAgICAqIEBz
dGFibGUgSUNVIDMuNgotICAgICAgKi8KLSAgICBjb25zdCBVVGV4dEZ1bmNzICAgICAqcEZ1bmNz
OwotCi0gICAgLyoqCi0gICAgICogIChwcm90ZWN0ZWQpICBQb2ludGVyIHRvIGFkZGl0aW9uYWwg
c3BhY2UgcmVxdWVzdGVkIGJ5IHRoZQotICAgICAqICAgICAgICAgICAgICAgdGV4dCBwcm92aWRl
ciBkdXJpbmcgdGhlIHV0ZXh0X29wZW4gb3BlcmF0aW9uLgotICAgICAqIEBzdGFibGUgSUNVIDMu
NAotICAgICAqLwotICAgIHZvaWQgICAgICAgICAgKnBFeHRyYTsKLQotICAgIC8qKgotICAgICAq
IChwcm90ZWN0ZWQpIFBvaW50ZXIgdG8gc3RyaW5nIG9yIHRleHQtY29udGFpbmluIG9iamVjdCBv
ciBzaW1pbGFyLgotICAgICAqIFRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0aGUgdGV4dCB0aGF0IHRo
aXMgVVRleHQgaXMgd3JhcHBpbmcsIGluIGEgZm9ybWF0Ci0gICAgICogIHRoYXQgaXMga25vd24g
dG8gdGhlIHRleHQgcHJvdmlkZXIgZnVuY3Rpb25zLgotICAgICAqIEBzdGFibGUgSUNVIDMuNAot
ICAgICAqLwotICAgIGNvbnN0IHZvaWQgICAqY29udGV4dDsKLQotICAgIC8qIC0tLSAxNiBieXRl
IGFsaWdubWVudCBib3VuZGFyeS0tLSAqLwotCi0gICAgLyoqCi0gICAgICogKHByb3RlY3RlZCkg
UG9pbnRlciBmaWVsZHMgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCi0g
ICAgICogTm90IHVzZWQgYnkgVVRleHQgY29tbW9uIGNvZGUuCi0gICAgICogQHN0YWJsZSBJQ1Ug
My42Ci0gICAgICovCi0gICAgY29uc3Qgdm9pZCAgICAgKnA7IAotICAgIC8qKgotICAgICAqIChw
cm90ZWN0ZWQpIFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHBy
b3ZpZGVyLgotICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgotICAgICAqIEBz
dGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIGNvbnN0IHZvaWQgICAgICpxOwotICAgICAvKioK
LSAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFpbGFibGUgZm9yIHVzZSBieSB0
aGUgdGV4dCBwcm92aWRlci4KLSAgICAgKiBOb3QgdXNlZCBieSBVVGV4dCBjb21tb24gY29kZS4K
LSAgICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAgY29uc3Qgdm9pZCAgICAgKnI7
Ci0KLSAgICAvKioKLSAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1
c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yawotICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBu
b3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCi0gICAgICAqIEBpbnRlcm5h
bCBJQ1UgMy40Ci0gICAgICAqLwotICAgIHZvaWQgICAgICAgICAgICpwcml2UDsKLQotCi0gICAg
LyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0tICovCi0gICAgCi0KLSAgICAvKioK
LSAgICAgICogKHByb3RlY3RlZCkgSW50ZWdlciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5IHRo
ZSB0ZXh0IHByb3ZpZGVyLgotICAgICAgKiBOb3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3b3Jr
LCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBvZiB0aGUgVVRleHQuCi0gICAgICAqIEBzdGFibGUg
SUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQ2NF90ICAgICAgICAgYTsKLQotICAgIC8qKgotICAg
ICAgKiAocHJvdGVjdGVkKSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIHRl
eHQgcHJvdmlkZXIuCi0gICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmssIG9y
IGJ5IHRoZSBjbGllbnQgKHVzZXIpIG9mIHRoZSBVVGV4dC4KLSAgICAgICogQHN0YWJsZSBJQ1Ug
My40Ci0gICAgICAqLwotICAgIGludDMyX3QgICAgICAgICBiOwotCi0gICAgLyoqCi0gICAgICAq
IChwcm90ZWN0ZWQpIEludGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgdGV4dCBw
cm92aWRlci4KLSAgICAgICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZyYW1ld29yaywgb3IgYnkg
dGhlIGNsaWVudCAodXNlcikgb2YgdGhlIFVUZXh0LgotICAgICAgKiBAc3RhYmxlIElDVSAzLjQK
LSAgICAgICovCi0gICAgaW50MzJfdCAgICAgICAgIGM7Ci0KLSAgICAvKiAgLS0tLSAxNiBieXRl
IGFsaWdubWVudCBib3VuZGFyeS0tLS0gKi8KLQotCi0gICAgLyoqCi0gICAgICAqICBQcml2YXRl
IGZpZWxkIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsKLSAg
ICAgICogICAgIGl0c2VsZi4gIFRoaXMgaXMgbm90IHRvIGJlIHRvdWNoZWQgYnkgdGhlIHRleHQg
cHJvdmlkZXJzLgotICAgICAgKiBAaW50ZXJuYWwgSUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQ2
NF90ICAgICAgICAgcHJpdkE7Ci0gICAgLyoqCi0gICAgICAqICBQcml2YXRlIGZpZWxkIHJlc2Vy
dmVkIGZvciBmdXR1cmUgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsKLSAgICAgICogICAgIGl0
c2VsZi4gIFRoaXMgaXMgbm90IHRvIGJlIHRvdWNoZWQgYnkgdGhlIHRleHQgcHJvdmlkZXJzLgot
ICAgICAgKiBAaW50ZXJuYWwgSUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAg
cHJpdkI7Ci0gICAgLyoqCi0gICAgICAqICBQcml2YXRlIGZpZWxkIHJlc2VydmVkIGZvciBmdXR1
cmUgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsKLSAgICAgICogICAgIGl0c2VsZi4gIFRoaXMg
aXMgbm90IHRvIGJlIHRvdWNoZWQgYnkgdGhlIHRleHQgcHJvdmlkZXJzLgotICAgICAgKiBAaW50
ZXJuYWwgSUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgcHJpdkM7Ci19Owot
Ci0KLS8qKgotICogIENvbW1vbiBmdW5jdGlvbiBmb3IgdXNlIGJ5IFRleHQgUHJvdmlkZXIgaW1w
bGVtZW50YXRpb25zIHRvIGFsbG9jYXRlIGFuZC9vciBpbml0aWFsaXplCi0gKiAgYSBuZXcgVVRl
eHQgc3RydWN0LiAgVG8gYmUgY2FsbGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB1dGV4dF9v
cGVuKCkgZnVuY3Rpb25zLgotICogIElmIHRoZSBzdXBwbGllZCBVVGV4dCBwYXJhbWV0ZXIgaXMg
bnVsbCwgYSBuZXcgVVRleHQgc3RydWN0IHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBoZWFwLgot
ICogIElmIHRoZSBzdXBwbGllZCBVVGV4dCBpcyBhbHJlYWR5IG9wZW4sIHRoZSBwcm92aWRlcidz
IGNsb3NlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCi0gKiAgc28gdGhhdCB0aGUgc3RydWN0IGNh
biBiZSByZXVzZWQgYnkgdGhlIG9wZW4gdGhhdCBpcyBpbiBwcm9ncmVzcy4KLSAqCi0gKiBAcGFy
YW0gdXQgICBwb2ludGVyIHRvIGEgVVRleHQgc3RydWN0IHRvIGJlIHJlLXVzZWQsIG9yIG51bGwg
aWYgYSBuZXcgVVRleHQKLSAqICAgICAgICAgICAgIHNob3VsZCBiZSBhbGxvY2F0ZWQuCi0gKiBA
cGFyYW0gZXh0cmFTcGFjZSBUaGUgYW1vdW50IG9mIGFkZGl0aW9uYWwgc3BhY2UgdG8gYmUgYWxs
b2NhdGVkIGFzIHBhcnQKLSAqICAgICAgICAgICAgIG9mIHRoaXMgVVRleHQsIGZvciB1c2UgYnkg
dHlwZXMgb2YgcHJvdmlkZXJzIHRoYXQgcmVxdWlyZQotICogICAgICAgICAgICAgYWRkaXRpb25h
bCBzdG9yYWdlLgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUuCi0g
KiBAcmV0dXJuIHBvaW50ZXIgdG8gdGhlIFVUZXh0LCBhbGxvY2F0ZWQgaWYgbmVjZXNzYXJ5LCB3
aXRoIGV4dHJhIHNwYWNlIHNldCB1cCBpZiByZXF1ZXN0ZWQuCi0gKiBAc3RhYmxlIElDVSAzLjQK
LSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X3NldHVwKFVUZXh0ICp1dCwg
aW50MzJfdCBleHRyYVNwYWNlLCBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0jaWZuZGVmIFVfSElE
RV9JTlRFUk5BTF9BUEkKLS8qKgotICAqIEBpbnRlcm5hbAotICAqICBWYWx1ZSB1c2VkIHRvIGhl
bHAgaWRlbnRpZnkgY29ycmVjdGx5IGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCi0gICogIE5v
dGU6ICBtdXN0IGJlIHB1YmxpY2x5IHZpc2libGUgc28gdGhhdCBVVEVYVF9JTklUSUFMSVpFUiBj
YW4gYWNjZXNzIGl0LgotICAqLwotZW51bSB7Ci0gICAgVVRFWFRfTUFHSUMgPSAweDM0NWFkODJj
Ci19OwotI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCi0KLS8qKgotICogaW5pdGlh
bGl6ZXIgdG8gYmUgdXNlZCB3aXRoIGxvY2FsIChzdGFjaykgaW5zdGFuY2VzIG9mIGEgVVRleHQK
LSAqICBzdHJ1Y3QuICBVVGV4dCBzdHJ1Y3RzIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHBh
c3NpbmcKLSAqICB0aGVtIHRvIG9uZSBvZiB0aGUgdXRleHRfb3BlbiBmdW5jdGlvbnMuCi0gKgot
ICogQHN0YWJsZSBJQ1UgMy42Ci0gKi8KLSNkZWZpbmUgVVRFWFRfSU5JVElBTElaRVIgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBV
VEVYVF9NQUdJQywgICAgICAgICAgLyogbWFnaWMgICAgICAgICAgICAgICAgKi8gXAotICAgICAg
ICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICAgICAgICAgICAgICAg
ICovIFwKLSAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiBwcm92aWRl
clByb3BzICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICBzaXplb2YoVVRleHQpLCAgICAg
ICAgLyogc2l6ZU9mU3RydWN0ICAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgMCwgICAg
ICAgICAgICAgICAgICAgIC8qIGNodW5rTmF0aXZlTGltaXQgICAgICovIFwKLSAgICAgICAgICAg
ICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiBleHRyYVNpemUgICAgICAgICAgICAqLyBc
Ci0gICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogbmF0aXZlSW5kZXhp
bmdMaW1pdCAgKi8gXAotICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8q
IGNodW5rTmF0aXZlU3RhcnQgICAgICovIFwKLSAgICAgICAgICAgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAvKiBjaHVua09mZnNldCAgICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtMZW5ndGggICAgICAgICAgKi8gXAotICAg
ICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIGNodW5rQ29udGVudHMgICAg
ICAgICovIFwKLSAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwRnVu
Y3MgICAgICAgICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAg
ICAgICAgLyogcEV4dHJhICAgICAgICAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgTlVM
TCwgICAgICAgICAgICAgICAgIC8qIGNvbnRleHQgICAgICAgICAgICAgICovIFwKLSAgICAgICAg
ICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsICAgICAvKiBwLCBxLCByICAgICAgICAgICAgICAq
LyBcCi0gICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgLyogcHJpdlAgICAg
ICAgICAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgICAgICAgICAgICAg
IC8qIGEsIGIsIGMgICAgICAgICAgICAgICovIFwKLSAgICAgICAgICAgICAgICAgIDAsIDAsIDAg
ICAgICAgICAgICAgICAvKiBwcml2QSxCLEMsICAgICAgICAgICAqLyBcCi0gICAgICAgICAgICAg
ICAgICB9Ci0KLQotVV9DREVDTF9FTkQKLQotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBmZTVlYmZlYWZmNjhjZDcxNTdhNTU1
MWY0NTFmNTkxNWUxNzAxNTBmLi41YjE4OTRlOTEyZTg0ZmM3OTczZTg5NDFlZmY0ODQwNmU0ODVi
YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApA
QCAtMjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IGNlZGVkNzMwZjQ1
N2ZhZGYwZTgyMjA0ODJlMmRkZTcyODcyZjhkNDYuLmFmYThlMTJkODFiZDg1YmQ5NjNmOGRjYjJj
OGJlYzU0Nzk3NGMwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1N0cmluZ1RydW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlN0
cmluZ1RydW5jYXRvci5oIgogCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKLSNpbmNsdWRlICJU
ZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
Lmg+CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcAppbmRleCBiM2RkZDhjM2RmODA3OGRkY2M3N2FiNjNkNDQyMThh
NjI2YmNhNDE4Li42ZDg4Yzg4ZGQ0YWE2ZDJkMGFjMzRkMzE0YWY2ZGYyYmFlMjdkNTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApAQCAt
NDAsNiArNDAsMjAgQEAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYpOworfQor
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PgorUmV0YWluUHRyPENHQ29sb3JSZWY+IFRp
bnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6
Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIHJl
dHVybiBhZG9wdENGKFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShJT1MpCiBz
dGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVJHQkEoQ0dDb2xvclJlZiBz
b3VyY2VDb2xvcikKQEAgLTEwOCwxMiArMTIyLDYgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NH
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpOwogfQogCi10ZW1wbGF0ZTw+Ci1SZXRhaW5QdHI8
Q0dDb2xvclJlZj4gVGlueUxSVUNhY2hlUG9saWN5PENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJl
Zj4+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgcmV0dXJu
IGFkb3B0Q0YobGVha0NHQ29sb3IoY29sb3IpKTsKLX0KLQogQ0dDb2xvclJlZiBjYWNoZWRDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBzd2l0Y2ggKGNvbG9yLnJnYigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGZmMGJmODE5NzUwODE3Y2JlMmM3YmZjYmVi
ODFmYjQxYTkxYTdhODMuLjE3Nzc5OWVhYWM3YzFmN2IyMjZkOGVkMGU0YWNkMDcwMDRiODk4OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJl
bmRlclRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29s
SUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9v
bElDVS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2Y1MGE1ZDY1ODY1YTM0MWJm
ZWNmMzdjYjVjYmRjOTY2ZjM4MTg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVX2gKLSNkZWZpbmUgTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVX2gKLQotI2luY2x1
ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oIgotI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgotI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJyZWFrSXRlcmF0b3JQb29sKTsKLXB1Ymxp
YzoKLSAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7IH0KLQotICAgIHN0YXRpYyBMaW5lQnJl
YWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQotICAgIHsKLSAgICAgICAgc3RhdGljIFdURjo6
VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPiogcG9vbCA9IG5ldyBXVEY6OlRo
cmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD47Ci0gICAgICAgIHJldHVybiAqKnBv
b2w7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cmluZyBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29y
ZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUp
Ci0gICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGxvY2FsZVdpdGhLZXl3b3JkOwotICAgICAg
ICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmQobG9jYWxlKTsKLSAgICAgICAgbG9jYWxlV2l0aEtl
eXdvcmQuYXBwZW5kTGl0ZXJhbCgiQGJyZWFrPSIpOwotICAgICAgICBzd2l0Y2ggKG1vZGUpIHsK
LSAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNDoKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKLSAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3
b3JkLmFwcGVuZExpdGVyYWwoImxvb3NlIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKLSAgICAgICAgICAgIGxvY2Fs
ZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIm5vcm1hbCIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRTdHJpY3Q6Ci0gICAgICAg
ICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJzdHJpY3QiKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBsb2NhbGVXaXRoS2V5d29yZC50
b1N0cmluZygpOwotICAgIH0KLQotICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NK
SykKLSAgICB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tl
eXdvcmQ7Ci0gICAgICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQot
ICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbG9jYWxlOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQgPSBt
YWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUsIG1vZGUpOwotCi0gICAgICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9wb29sLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobV9wb29sW2ldLmZpcnN0
ID09IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCkgewotICAgICAgICAgICAgICAgIGl0
ZXJhdG9yID0gbV9wb29sW2ldLnNlY29uZDsKLSAgICAgICAgICAgICAgICBtX3Bvb2wucmVtb3Zl
KGkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCFpdGVyYXRvcikgewotICAgICAgICAgICAgaXRlcmF0b3IgPSBvcGVuTGlu
ZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkLCBtb2RlLCBpc0NK
Syk7Ci0gICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKCFtX3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlu
cyhpdGVyYXRvcikpOwotICAgICAgICBtX3ZlbmRlZEl0ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxv
Y2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCk7Ci0gICAgICAgIHJldHVybiBpdGVyYXRvcjsK
LSAgICB9Ci0KLSAgICB2b2lkIHB1dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi0gICAg
ewotICAgICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBtX3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlu
cyhpdGVyYXRvcikpOwotCi0gICAgICAgIGlmIChtX3Bvb2wuc2l6ZSgpID09IGNhcGFjaXR5KSB7
Ci0gICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKG1fcG9vbFswXS5zZWNvbmQpOwot
ICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fcG9v
bC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMudGFrZShpdGVyYXRvciksIGl0ZXJhdG9y
KSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2FwYWNpdHkg
PSA0OwotCi0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBUZXh0QnJlYWtJdGVy
YXRvcio+IEVudHJ5OwotICAgIHR5cGVkZWYgVmVjdG9yPEVudHJ5LCBjYXBhY2l0eT4gUG9vbDsK
LSAgICBQb29sIG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWlj
U3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKLQotICAgIGZyaWVuZCBXVEY6OlRocmVhZFNwZWNp
ZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9yUG9v
bCooKTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IGRmY2Y5YTM0NjJkNWIxYjI4NGQxOTU5OGFmZTAz
MmIzZTRjZGNlMWIuLjQ3ZDI0NDc1YWMwOTg5NGUwMzg4NTFhNDhiYjljMDVlZGRlZjM3YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCkBA
IC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5k
YXJpZXMuaCIKIAotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTBhNjZjZTBiN2VkMTQ3YWU3YzZiM2Q3Yjk3MDk4MjNlN2ZlMzI1Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyOSAr
MCwwIEBACi0vKgotICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBN
b2JpbGUsIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJh
dG9yLmgiCi0KLSNpbmNsdWRlICJMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKLSNpbmNsdWRl
ICJVVGV4dFByb3ZpZGVyTGF0aW4xLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2Lmgi
Ci0jaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLS8vIEZJWE1FOiBUaGlzIG5lZWRzIGEgYmV0dGVyIG5h
bWUKLSNkZWZpbmUgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUIChQTEFURk9STShJT1MpIHx8IChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAw
KSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBJdGVyYXRvciBpbml0aWFsaXphdGlvbgot
Ci1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJdGVy
YXRvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xvY2Fs
ZUlEKCkpCi17Ci0gICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFr
SXRlcmF0b3IqPih1YnJrX29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykpOwot
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxk
IG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3Rh
dHVzKSwgb3BlblN0YXR1cyk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yOwotfQotCi0jaWYgIVBMQVRG
T1JNKElPUykKLQotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JX
aXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKLXsKLSAgICBVUGFyc2VFcnJvciBwYXJz
ZVN0YXR1czsKLSAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKGJyZWFrUnVsZXMpOwotICAgIGF1dG8gdXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
YnJlYWtSdWxlcyksIGxlbmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgVGV4dEJy
ZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRv
cio+KHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAm
cGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NV
Q0NFU1Mob3BlblN0YXR1cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjog
JXMgKCVkKSIsIHVfZXJyb3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKLSAgICByZXR1
cm4gaXRlcmF0b3I7Ci19Ci0KLSNlbmRpZgotCi0KLS8vIEl0ZXJhdG9yIHRleHQgc2V0dGluZwot
Ci1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJ
dGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcu
aXM4Qml0KCkpIHsKLSAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKLSAgICAgICAg
dGV4dExvY2FsLnRleHQgPSBVVEVYVF9JTklUSUFMSVpFUjsKLSAgICAgICAgdGV4dExvY2FsLnRl
eHQuZXh0cmFTaXplID0gc2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOwotICAgICAgICB0ZXh0TG9j
YWwudGV4dC5wRXh0cmEgPSB0ZXh0TG9jYWwuYnVmZmVyOwotCi0gICAgICAgIFVFcnJvckNvZGUg
b3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0
aW4xVVRleHRQcm92aWRlcigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5n
Lmxlbmd0aCgpLCAmb3BlblN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1
cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3aXRo
IHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRv
cio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJ
TFVSRShzZXRUZXh0U3RhdHVzKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVU
ZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsK
LSAgICB9IGVsc2UgewotICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9f
RVJST1I7Ci0gICAgICAgIHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJh
dG9yKj4oJml0ZXJhdG9yKSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCks
ICZzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiAmaXRlcmF0
b3I7Ci19Ci0KLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZv
ckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcs
IGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkK
LXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0
ZXh0TG9jYWw7Ci0gICAgICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7Ci0g
ICAgICAgIHRleHRMb2NhbC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVy
KTsKLSAgICAgICAgdGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKLQot
ICAgICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVU
ZXh0KiB0ZXh0ID0gb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2Nh
bCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBw
cmlvckNvbnRleHRMZW5ndGgsICZvcGVuU3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShv
cGVuU3RhdHVzKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4dEF3
YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgVUVycm9yQ29k
ZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4
dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBz
ZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0K
LSAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVRleHQg
dGV4dExvY2FsID0gVVRFWFRfSU5JVElBTElaRVI7Ci0KLSAgICAgICAgVUVycm9yQ29kZSBvcGVu
U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYxNkNv
bnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMxNigp
LCBzdHJpbmcubGVuZ3RoKCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3Bl
blN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAgICAg
ICAgIExPR19FUlJPUigib3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQg
d2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9Ci0KLSAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3Iq
PigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxV
UkUoc2V0VGV4dFN0YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4
dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuICZpdGVyYXRvcjsKLX0KLQotCi0vLyBTdGF0aWMgaXRlcmF0b3Jz
Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmlu
ZykKLXsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJh
dG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7Ci0gICAgaWYgKCFzdGF0aWNXb3Jk
QnJlYWtJdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gc2V0
VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKLX0KLQot
VGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmlu
ZykKLXsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJ
dGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKLSAgICBpZiAoIXN0
YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3Is
IHN0cmluZyk7Ci19Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9y
KFN0cmluZ1ZpZXcgc3RyaW5nKQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgLy8gVGhpcyBy
dWxlIHNldCBpcyBiYXNlZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2YgSUNV
IDQuMAotICAgIC8vIDxodHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1
L3RhZ3MvcmVsZWFzZS00LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KLSAgICAvLyBU
aGUgbWFqb3IgZGlmZmVyZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVkIGJl
bG93OgotICAgIC8vICogUmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gU3Bh
Y2luZ01hcmt9XScgd2l0aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9IC0g
JEV4dGVuZF0nIGZvciBJQ1UgMy44IG9yIGVhcmxpZXI7Ci0gICAgLy8gKiBSZW1vdmVkIHJ1bGVz
IHRoYXQgcHJldmVudCBhIGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJhY3Rl
cnMgKEJ1ZyAyNDM0Mik7Ci0gICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJz
b3IgZnJvbSBtb3ZpbmcgYWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBleGNl
cHQgVGFtaWwgKEJ1ZyAxNTc5MCksIGFuZDsKLSAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJl
dmVudCBhIGN1cnNvciBmcm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRh
a2FyYSB2b2ljZWQgbWFya3MuCi0gICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwgaW5k
aWNhdG9yIHN5bWJvbHMuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9Ci0gICAgICAg
ICIkQ1IgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgotICAgICAg
ICAiJExGICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKLSAgICAg
ICAgIiRDb250cm9sID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1dOyIK
LSAgICAgICAgIiRWb2ljZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiICAvLyBKYXBhbmVzZSBo
YWxmLXdpZHRoIGthdGFrYW5hIHZvaWNlZCBtYXJrcwotICAgICAgICAiJEV4dGVuZCAgPSBbXFxw
e0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBFeHRlbmR9ICRWb2ljZU1hcmtzIC0gW1xcdTBFMzAg
XFx1MEUzMiBcXHUwRTQ1IFxcdTBFQjAgXFx1MEVCMl1dOyIKLSAgICAgICAgIiRTcGFjaW5nTWFy
ayA9IFtbXFxwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9XSAtICRFeHRlbmRdOyIK
LSAgICAgICAgIiRMICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTH1dOyIK
LSAgICAgICAgIiRWICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gVn1dOyIK
LSAgICAgICAgIiRUICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gVH1dOyIK
LSAgICAgICAgIiRMViAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZ9XTsi
Ci0gICAgICAgICIkTFZUICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWVH1d
OyIKLSAgICAgICAgIiRIaW4wICAgID0gW1xcdTA5MDUtXFx1MDkzOV07IiAgICAvLyBEZXZhbmFn
YXJpIExldHRlciBBLC4uLixIYQotICAgICAgICAiJEhpblYgICAgPSBcXHUwOTREOyIgICAgICAg
ICAgICAgIC8vIERldmFuYWdhcmkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRIaW4xICAgID0gW1xc
dTA5MTUtXFx1MDkzOV07IiAgICAvLyBEZXZhbmFnYXJpIExldHRlciBLYSwuLi4sSGEKLSAgICAg
ICAgIiRCZW4wICAgID0gW1xcdTA5ODUtXFx1MDlCOV07IiAgICAvLyBCZW5nYWxpIExldHRlciBB
LC4uLixIYQotICAgICAgICAiJEJlblYgICAgPSBcXHUwOUNEOyIgICAgICAgICAgICAgIC8vIEJl
bmdhbGkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1MDlCOV07
IiAgICAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRQYW4wICAgID0gW1xc
dTBBMDUtXFx1MEEzOV07IiAgICAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAg
IiRQYW5WICAgID0gXFx1MEE0RDsiICAgICAgICAgICAgICAvLyBHdXJtdWtoaSBTaWduIFZpcmFt
YQotICAgICAgICAiJFBhbjEgICAgPSBbXFx1MEExNS1cXHUwQTM5XTsiICAgIC8vIEd1cm11a2hp
IExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRHdWowICAgID0gW1xcdTBBODUtXFx1MEFCOV07
IiAgICAvLyBHdWphcmF0aSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRHdWpWICAgID0gXFx1
MEFDRDsiICAgICAgICAgICAgICAvLyBHdWphcmF0aSBTaWduIFZpcmFtYQotICAgICAgICAiJEd1
ajEgICAgPSBbXFx1MEE5NS1cXHUwQUI5XTsiICAgIC8vIEd1amFyYXRpIExldHRlciBLYSwuLi4s
SGEKLSAgICAgICAgIiRPcmkwICAgID0gW1xcdTBCMDUtXFx1MEIzOV07IiAgICAvLyBPcml5YSBM
ZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRPcmlWICAgID0gXFx1MEI0RDsiICAgICAgICAgICAg
ICAvLyBPcml5YSBTaWduIFZpcmFtYQotICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIxNS1cXHUw
QjM5XTsiICAgIC8vIE9yaXlhIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRUZWwwICAgID0g
W1xcdTBDMDUtXFx1MEMzOV07IiAgICAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAg
ICIkVGVsViAgICA9IFxcdTBDNEQ7IiAgICAgICAgICAgICAgLy8gVGVsdWd1IFNpZ24gVmlyYW1h
Ci0gICAgICAgICIkVGVsMSAgICA9IFtcXHUwQzE0LVxcdTBDMzldOyIgICAgLy8gVGVsdWd1IExl
dHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRLYW4wICAgID0gW1xcdTBDODUtXFx1MENCOV07IiAg
ICAvLyBLYW5uYWRhIExldHRlciBBLC4uLixIYQotICAgICAgICAiJEthblYgICAgPSBcXHUwQ0NE
OyIgICAgICAgICAgICAgIC8vIEthbm5hZGEgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRLYW4xICAg
ID0gW1xcdTBDOTUtXFx1MENCOV07IiAgICAvLyBLYW5uYWRhIExldHRlciBBLC4uLixIYQotICAg
ICAgICAiJE1hbDAgICAgPSBbXFx1MEQwNS1cXHUwRDM5XTsiICAgIC8vIE1hbGF5YWxhbSBMZXR0
ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRNYWxWICAgID0gXFx1MEQ0RDsiICAgICAgICAgICAgICAv
LyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKLSAgICAgICAgIiRNYWwxICAgID0gW1xcdTBEMTUtXFx1
MEQzOV07IiAgICAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkUkkgICAg
ICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRpY2F0
b3JzCi0gICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7IiAgICAgICAgICAgICAgIC8vIFplcm8g
d2lkdGggam9pbmVyCi0gICAgICAgICIkRW1vamlWYXIgPSBbXFx1RkUwRl07IiAgICAgICAgICAg
IC8vIEVtb2ppLXN0eWxlIHZhcmlhdGlvbiBzZWxlY3RvcgotI2lmIEFERElUSU9OQUxfRU1PSklf
U1VQUE9SVAotICAgICAgICAiJEVtb2ppRm9yU2VxcyA9IFtcXHUyNzY0IFxcVTAwMDFGNDQxIFxc
VTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDhCIFxcVTAwMDFGNUU4XTsiIC8vIEVtb2pp
IHRoYXQgcGFydGljaXBhdGUgaW4gWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9yTW9k
cyA9IFtcXHUyNjFEIFxcdTI2RjkgXFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFG
M0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAw
MDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxc
VTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgz
IFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFG
NTkwIFxcVTAwMDFGNTk1IFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAw
MDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxc
VTAwMDFGNkMwIFxcVTAwMDFGOTE4XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sg
bW9kaWZpZXJzCi0jZWxzZQotICAgICAgICAiJEVtb2ppRm9yU2VxcyA9IFtcXHUyNzY0IFxcVTAw
MDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDhCXTsiIC8vIEVtb2ppIHRoYXQgcGFydGljaXBh
dGUgaW4gWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxc
dTI3MEEtXFx1MjcwQyBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAx
RjNDNyBcXFUwMDAxRjNDQSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUw
MDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBc
XFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4
NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAx
RjY0Qi1cXFUwMDAxRjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUw
MDAxRjZDMF0gOyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycwotI2Vu
ZGlmCi0gICAgICAgICIkRW1vamlNb2RzID0gW1xcVTAwMDFGM0ZCLVxcVTAwMDFGM0ZGXTsiIC8v
IEZpdHpwYXRyaWNrIG1vZGlmaWVycwotICAgICAgICAiISFjaGFpbjsiCi0jaWYgQURESVRJT05B
TF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIhIVJJTm9DaGFpbjsiCi0jZW5kaWYKLSAgICAgICAg
IiEhZm9yd2FyZDsiCi0gICAgICAgICIkQ1IgJExGOyIKLSAgICAgICAgIiRMICgkTCB8ICRWIHwg
JExWIHwgJExWVCk7IgotICAgICAgICAiKCRMViB8ICRWKSAoJFYgfCAkVCk7IgotICAgICAgICAi
KCRMVlQgfCAkVCkgJFQ7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICAgICAi
JFJJICRSSSAkRXh0ZW5kKiAvICRSSTsiCi0gICAgICAgICIkUkkgJFJJICRFeHRlbmQqOyIKLSAg
ICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJEV4dGVuZDsiCi0gICAgICAgICJbXiRDb250cm9s
ICRDUiAkTEZdICRTcGFjaW5nTWFyazsiCi0jZWxzZQotICAgICAgICAiW14kQ29udHJvbCAkQ1Ig
JExGXSAkRXh0ZW5kOyIKLSAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJr
OyIKLSAgICAgICAgIiRSSSAkUkkgLyAkUkk7IgotICAgICAgICAiJFJJICRSSTsiCi0jZW5kaWYK
LSAgICAgICAgIiRIaW4wICRIaW5WICRIaW4xOyIgICAgICAgICAgICAgICAvLyBEZXZhbmFnYXJp
IFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRCZW4wICRCZW5WICRCZW4xOyIgICAgICAgICAg
ICAgICAvLyBCZW5nYWxpIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRQYW4wICRQYW5WICRQ
YW4xOyIgICAgICAgICAgICAgICAvLyBHdXJtdWtoaSBWaXJhbWEgKGZvcndhcmQpCi0gICAgICAg
ICIkR3VqMCAkR3VqViAkR3VqMTsiICAgICAgICAgICAgICAgLy8gR3VqYXJhdGkgVmlyYW1hIChm
b3J3YXJkKQotICAgICAgICAiJE9yaTAgJE9yaVYgJE9yaTE7IiAgICAgICAgICAgICAgIC8vIE9y
aXlhIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRUZWwwICRUZWxWICRUZWwxOyIgICAgICAg
ICAgICAgICAvLyBUZWx1Z3UgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJEthbjAgJEthblYg
JEthbjE7IiAgICAgICAgICAgICAgIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQotICAgICAg
ICAiJE1hbDAgJE1hbFYgJE1hbDE7IiAgICAgICAgICAgICAgIC8vIE1hbGF5YWxhbSBWaXJhbWEg
KGZvcndhcmQpCi0gICAgICAgICIkWldKICRFbW9qaUZvclNlcXM7IiAgICAgICAgICAgICAgLy8g
RG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9yTW9k
cyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3ZWVuIHJlbGV2YW50
IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNr
IG1vZGlmaWVyCi0gICAgICAgICIhIXJldmVyc2U7IgotICAgICAgICAiJExGICRDUjsiCi0gICAg
ICAgICIoJEwgfCAkViB8ICRMViB8ICRMVlQpICRMOyIKLSAgICAgICAgIigkViB8ICRUKSAoJExW
IHwgJFYpOyIKLSAgICAgICAgIiRUICgkTFZUIHwgJFQpOyIKLSNpZiBBRERJVElPTkFMX0VNT0pJ
X1NVUFBPUlQKLSAgICAgICAgIiRFeHRlbmQqICRSSSAkUkkgLyAkRXh0ZW5kKiAkUkkgJFJJOyIK
LSAgICAgICAgIiRFeHRlbmQqICRSSSAkUkk7IgotICAgICAgICAiJEV4dGVuZCAgICAgIFteJENv
bnRyb2wgJENSICRMRl07IgotICAgICAgICAiJFNwYWNpbmdNYXJrIFteJENvbnRyb2wgJENSICRM
Rl07IgotI2Vsc2UKLSAgICAgICAgIiRFeHRlbmQgICAgICBbXiRDb250cm9sICRDUiAkTEZdOyIK
LSAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9sICRDUiAkTEZdOyIKLSAgICAgICAgIiRS
SSAkUkkgLyAkUkkgJFJJOyIKLSAgICAgICAgIiRSSSAkUkk7IgotI2VuZGlmCi0gICAgICAgICIk
SGluMSAkSGluViAkSGluMDsiICAgICAgICAgICAgICAgLy8gRGV2YW5hZ2FyaSBWaXJhbWEgKGJh
Y2t3YXJkKQotICAgICAgICAiJEJlbjEgJEJlblYgJEJlbjA7IiAgICAgICAgICAgICAgIC8vIEJl
bmdhbGkgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRQYW4xICRQYW5WICRQYW4wOyIgICAg
ICAgICAgICAgICAvLyBHdXJtdWtoaSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJEd1ajEg
JEd1alYgJEd1ajA7IiAgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZpcmFtYSAoYmFja3dhcmQp
Ci0gICAgICAgICIkT3JpMSAkT3JpViAkT3JpMDsiICAgICAgICAgICAgICAgLy8gR3VqYXJhdGkg
VmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRUZWwxICRUZWxWICRUZWwwOyIgICAgICAgICAg
ICAgICAvLyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRLYW4xICRLYW5WICRL
YW4wOyIgICAgICAgICAgICAgICAvLyBLYW5uYWRhIFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAg
ICIkTWFsMSAkTWFsViAkTWFsMDsiICAgICAgICAgICAgICAgLy8gTWFsYXlhbGFtIFZpcmFtYSAo
YmFja3dhcmQpCi0gICAgICAgICIkRW1vamlGb3JTZXFzICRaV0o7IiAgICAgICAgICAgICAgLy8g
RG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppTW9kcyAk
RW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3ZWVuIHJlbGV2YW50
IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNr
IG1vZGlmaWVyCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIhIXNhZmVf
cmV2ZXJzZTsiCi0gICAgICAgICIkUkkgJFJJKzsiCi0gICAgICAgICJbJEVtb2ppVmFyICRFbW9q
aU1vZHNdKyAkRW1vamlGb3JNb2RzOyIKLSAgICAgICAgIiEhc2FmZV9mb3J3YXJkOyIKLSAgICAg
ICAgIiRSSSAkUkkrOyIKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9qaVZhciAkRW1vamlN
b2RzXSs7IjsKLSNlbHNlCi0gICAgICAgICJbJEVtb2ppVmFyICRFbW9qaU1vZHNdKyAkRW1vamlG
b3JNb2RzOyIKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9qaVZhciAkRW1vamlNb2RzXSs7
IgotICAgICAgICAiISFzYWZlX3JldmVyc2U7IgotICAgICAgICAiISFzYWZlX2ZvcndhcmQ7IjsK
LSNlbmRpZgotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92ZW1l
bnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyhrUnVsZXMpOwotI2Vsc2Ug
Ly8gUExBVEZPUk0oSU9TKQotICAgIC8vIFVzZSB0aGUgc3BlY2lhbCBUaGFpIGNoYXJhY3RlciBi
cmVhayBpdGVyYXRvciBmb3IgYWxsIGxvY2FsZXMKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0
b3IqIHN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJS
S19DSEFSQUNURVIsICJ0aCIpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0KLSAgICBpZiAo
IXN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVy
YXRvciwgc3RyaW5nKTsKLX0KLQotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIGNv
bnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCi17Ci0gICAgVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yID0gTGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKCkudGFr
ZShsb2NhbGUsIG1vZGUsIGlzQ0pLKTsKLSAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3Io
Kml0ZXJhdG9yLCBzdHJpbmcsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKLX0K
LQotdm9pZCByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yKQotewotICAgIEFTU0VSVF9BUkcoaXRlcmF0b3IsIGl0ZXJhdG9yKTsKLQotICAgIExpbmVC
cmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnB1dChpdGVyYXRvcik7Ci19Ci0KLXN0YXRp
YyBjb25zdCBjaGFyKiB1YXgxNFByb2xvZ3VlID0KLSAgICAiISFjaGFpbjsiCi0gICAgIiEhTEJD
TU5vQ2hhaW47IgotICAgICIhIWxvb2tBaGVhZEhhcmRCcmVhazsiOwotCi1zdGF0aWMgY29uc3Qg
Y2hhciogdWF4MTRBc3NpZ25tZW50c0JlZm9yZSA9Ci0gICAgLy8gZXhwbGljaXRseSBlbnVtZXJh
dGUgJENKIHNpbmNlIElDVSB2ZXJzaW9ucyBwcmlvciB0byA0OSBkb24ndCBzdXBwb3J0IDpMaW5l
QnJlYWs9Q29uZGl0aW9uYWxfSmFwYW5lc2VfU3RhcnRlcjoKLSAgICAiJENKID0gWyIKLSNpZiAo
VV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVN
ID49IDkpCi0gICAgIjpMaW5lQnJlYWs9Q29uZGl0aW9uYWxfSmFwYW5lc2VfU3RhcnRlcjoiCi0j
ZWxzZQotICAgICJcXHUzMDQxXFx1MzA0M1xcdTMwNDVcXHUzMDQ3XFx1MzA0OVxcdTMwNjNcXHUz
MDgzXFx1MzA4NVxcdTMwODdcXHUzMDhFXFx1MzA5NVxcdTMwOTZcXHUzMEExXFx1MzBBM1xcdTMw
QTVcXHUzMEE3IgotICAgICJcXHUzMEE5XFx1MzBDM1xcdTMwRTNcXHUzMEU1XFx1MzBFN1xcdTMw
RUVcXHUzMEY1XFx1MzBGNlxcdTMwRkMiCi0gICAgIlxcdTMxRjBcXHUzMUYxXFx1MzFGMlxcdTMx
RjNcXHUzMUY0XFx1MzFGNVxcdTMxRjZcXHUzMUY3XFx1MzFGOFxcdTMxRjlcXHUzMUZBXFx1MzFG
QlxcdTMxRkNcXHUzMUZEXFx1MzFGRVxcdTMxRkYiCi0gICAgIlxcdUZGNjdcXHVGRjY4XFx1RkY2
OVxcdUZGNkFcXHVGRjZCXFx1RkY2Q1xcdUZGNkRcXHVGRjZFXFx1RkY2RlxcdUZGNzAiCi0jZW5k
aWYKLSAgICAiXTsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3Rv
bUxvb3NlQ0pLID0KLSAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAxM107IgotICAgICIkRVhf
U1VCID0gW1xcdTAwMjFcXHUwMDNGXFx1RkYwMVxcdUZGMUZdOyIKLSAgICAiJElEX1NVQiA9ICcn
OyIKLSAgICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1MjAyNl07IgotICAgICIkSVNfU1VCID0gW1xc
dTAwM0FcXHUwMDNCXTsiCi0gICAgIiROU19TVUIgPSBbXFx1MjAzQ1xcdTIwNDdcXHUyMDQ4XFx1
MjA0OVxcdTMwMDVcXHUzMDFDXFx1MzAzQlxcdTMwOURcXHUzMDlFXFx1MzBBMFxcdTMwRkJcXHUz
MEZEXFx1MzBGRVxcdUZGMUFcXHVGRjFCXFx1RkY2NV07IgotICAgICIkUE9fU1VCID0gW1xcdTAw
MjVcXHUwMEEyXFx1MDBCMFxcdTIwMzBcXHUyMDMyXFx1MjAzM1xcdTIxMDNcXHVGRjA1XFx1RkZF
MF07IgotICAgICIkUFJfU1VCID0gW1xcdTAwMjRcXHUwMEEzXFx1MDBBNVxcdTIwQUNcXHUyMTE2
XFx1RkYwNFxcdUZGRTFcXHVGRkU1XTsiCi0gICAgIiRJRF9BREQgPSBbJENKICRCQV9TVUIgJEVY
X1NVQiAkSU5fU1VCICRJU19TVUIgJE5TX1NVQiAkUE9fU1VCICRQUl9TVUJdOyIKLSAgICAiJE5T
X0FERCA9ICcnOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9t
TG9vc2VOb25DSksgPQotICAgICIkQkFfU1VCID0gJyc7IgotICAgICIkRVhfU1VCID0gJyc7Igot
ICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSU5fU1VCID0gW1xcdTIwMjVcXHUyMDI2XTsiCi0g
ICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSBbXFx1MzAwNVxcdTMwM0JcXHUzMDlE
XFx1MzA5RVxcdTMwRkRcXHUzMEZFXTsiCi0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAgIiRQUl9T
VUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSBbJENKICRJTl9TVUIgJE5TX1NVQl07IgotICAgICIk
TlNfQUREID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0
b21Ob3JtYWxDSksgPQotICAgICIkQkFfU1VCID0gW1xcdTIwMTBcXHUyMDEzXTsiCi0gICAgIiRF
WF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0g
ICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSBbXFx1MzAxQ1xcdTMwQTBdOyIKLSAg
ICAiJFBPX1NVQiA9ICcnOyIKLSAgICAiJFBSX1NVQiA9ICcnOyIKLSAgICAiJElEX0FERCA9IFsk
Q0ogJEJBX1NVQiAkTlNfU1VCXTsiCi0gICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMgY29u
c3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbE5vbkNKSyA9Ci0gICAgIiRCQV9T
VUIgPSAnJzsiCi0gICAgIiRFWF9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAg
IiRJTl9TVUIgPSAnJzsiCi0gICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSAnJzsi
Ci0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQg
PSBbJENKXTsiCi0gICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4
MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSyA9Ci0gICAgIiRCQV9TVUIgPSAnJzsiCi0gICAg
IiRFWF9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSAnJzsi
Ci0gICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSAnJzsiCi0gICAgIiRQT19TVUIg
PSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSAnJzsiCi0gICAgIiRO
U19BREQgPSBbJENKXTsiOwotCi0jZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RO
b25DSksgICAgICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Q0pLCi0jZGVmaW5lIHVheDE0
QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Q0pLICAgICAgICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9t
Tm9ybWFsQ0pLCi0jZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLICAg
ICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLCi0KLXN0YXRpYyBjb25zdCBjaGFy
KiB1YXgxNEFzc2lnbm1lbnRzQWZ0ZXIgPQotICAgICIkQUkgPSBbOkxpbmVCcmVhayA9IEFtYmln
dW91czpdOyIKLSAgICAiJEFMID0gWzpMaW5lQnJlYWsgPSBBbHBoYWJldGljOl07IgotICAgICIk
QkEgPSBbWzpMaW5lQnJlYWsgPSBCcmVha19BZnRlcjpdIC0gJEJBX1NVQl07IgotICAgICIkQkIg
PSBbOkxpbmVCcmVhayA9IEJyZWFrX0JlZm9yZTpdOyIKLSAgICAiJEJLID0gWzpMaW5lQnJlYWsg
PSBNYW5kYXRvcnlfQnJlYWs6XTsiCi0gICAgIiRCMiA9IFs6TGluZUJyZWFrID0gQnJlYWtfQm90
aDpdOyIKLSAgICAiJENCID0gWzpMaW5lQnJlYWsgPSBDb250aW5nZW50X0JyZWFrOl07IgotICAg
ICIkQ0wgPSBbOkxpbmVCcmVhayA9IENsb3NlX1B1bmN0dWF0aW9uOl07IgotICAgICIkQ00gPSBb
OkxpbmVCcmVhayA9IENvbWJpbmluZ19NYXJrOl07IgotICAgICIkQ1AgPSBbOkxpbmVCcmVhayA9
IENsb3NlX1BhcmVudGhlc2lzOl07IgotICAgICIkQ1IgPSBbOkxpbmVCcmVhayA9IENhcnJpYWdl
X1JldHVybjpdOyIKLSAgICAiJEVYID0gW1s6TGluZUJyZWFrID0gRXhjbGFtYXRpb246XSAtICRF
WF9TVUJdOyIKLSAgICAiJEdMID0gWzpMaW5lQnJlYWsgPSBHbHVlOl07IgotI2lmIChVX0lDVV9W
RVJTSU9OX01BSk9SX05VTSA+PSA0KSAmJiAoVV9JQ1VfVkVSU0lPTl9NSU5PUl9OVU0gPj0gOSkK
LSAgICAiJEhMID0gWzpMaW5lQnJlYWsgPSBIZWJyZXdfTGV0dGVyOl07IgotI2Vsc2UKLSAgICAi
JEhMID0gW1s6SGVicmV3Ol0gJiBbOkxldHRlcjpdXTsiCi0jZW5kaWYKLSAgICAiJEhZID0gWzpM
aW5lQnJlYWsgPSBIeXBoZW46XTsiCi0gICAgIiRIMiA9IFs6TGluZUJyZWFrID0gSDI6XTsiCi0g
ICAgIiRIMyA9IFs6TGluZUJyZWFrID0gSDM6XTsiCi0gICAgIiRJRCA9IFtbW1s6TGluZUJyZWFr
ID0gSWRlb2dyYXBoaWM6XSAtICRDSl0gJElEX0FERF0gLSAkSURfU1VCXTsiCi0gICAgIiRJTiA9
IFtbOkxpbmVCcmVhayA9IEluc2VwYXJhYmxlOl0gLSAkSU5fU1VCXTsiCi0gICAgIiRJUyA9IFtb
OkxpbmVCcmVhayA9IEluZml4X051bWVyaWM6XSAtICRJU19TVUJdOyIKLSAgICAiJEpMID0gWzpM
aW5lQnJlYWsgPSBKTDpdOyIKLSAgICAiJEpWID0gWzpMaW5lQnJlYWsgPSBKVjpdOyIKLSAgICAi
JEpUID0gWzpMaW5lQnJlYWsgPSBKVDpdOyIKLSAgICAiJExGID0gWzpMaW5lQnJlYWsgPSBMaW5l
X0ZlZWQ6XTsiCi0gICAgIiROTCA9IFs6TGluZUJyZWFrID0gTmV4dF9MaW5lOl07IgotICAgICIk
TlMgPSBbW1tbOkxpbmVCcmVhayA9IE5vbnN0YXJ0ZXI6XSAtICRDSl0gJE5TX0FERF0gLSAkTlNf
U1VCXTsiCi0gICAgIiROVSA9IFs6TGluZUJyZWFrID0gTnVtZXJpYzpdOyIKLSAgICAiJE9QID0g
WzpMaW5lQnJlYWsgPSBPcGVuX1B1bmN0dWF0aW9uOl07IgotICAgICIkUE8gPSBbWzpMaW5lQnJl
YWsgPSBQb3N0Zml4X051bWVyaWM6XSAtICRQT19TVUJdOyIKLSAgICAiJFBSID0gW1s6TGluZUJy
ZWFrID0gUHJlZml4X051bWVyaWM6XSAtICRQUl9TVUJdOyIKLSAgICAiJFFVID0gWzpMaW5lQnJl
YWsgPSBRdW90YXRpb246XTsiCi0gICAgIiRSSSA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07
IgotICAgICIkU0EgPSBbOkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKLSAgICAiJFNH
ID0gWzpMaW5lQnJlYWsgPSBTdXJyb2dhdGU6XTsiCi0gICAgIiRTUCA9IFs6TGluZUJyZWFrID0g
U3BhY2U6XTsiCi0gICAgIiRTWSA9IFs6TGluZUJyZWFrID0gQnJlYWtfU3ltYm9sczpdOyIKLSAg
ICAiJFdKID0gWzpMaW5lQnJlYWsgPSBXb3JkX0pvaW5lcjpdOyIKLSAgICAiJFhYID0gWzpMaW5l
QnJlYWsgPSBVbmtub3duOl07IgotICAgICIkWlcgPSBbOkxpbmVCcmVhayA9IFpXU3BhY2U6XTsi
Ci0gICAgIiRaV0ogPSBcXHUyMDBEOyIKLSAgICAiJEVtb2ppVmFyID0gXFx1RkUwRjsiCi0jaWYg
QURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBc
XFUwMDAxRjQ0MSBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4QiBcXFUwMDAxRjVF
OF07IgotICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBcXHUyNzBBLVxcdTI3
MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQ0EgXFxVMDAw
MUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxV
MDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0Mg
XFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0
QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAwMUY1OTYgXFxVMDAw
MUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAwMUY2QTMgXFxV
MDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThdIDsiIC8vIEVtb2pp
IHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKLSNlbHNlCi0gICAgIiRFbW9qaUZvclNl
cXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4Ql07IgotICAg
ICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFGMzg1IFxc
VTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAwMDFGNDQy
LVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFG
NDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAw
MDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTk2IFxc
VTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEz
IFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0aGF0IHRh
a2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCi0jZW5kaWYKLSAgICAiJEVtb2ppTW9kcyA9IFtcXFUw
MDAxRjNGQi1cXFUwMDAxRjNGRl07IgotICAgICIkZGljdGlvbmFyeSA9IFs6TGluZUJyZWFrID0g
Q29tcGxleF9Db250ZXh0Ol07IgotICAgICIkQUxQbHVzID0gWyRBTCAkQUkgJFNBICRTRyAkWFhd
OyIKLSAgICAiJEFMY20gPSAkQUxQbHVzICRDTSo7IgotICAgICIkQkFjbSA9ICRCQSAkQ00qOyIK
LSAgICAiJEJCY20gPSAkQkIgJENNKjsiCi0gICAgIiRCMmNtID0gJEIyICRDTSo7IgotICAgICIk
Q0xjbSA9ICRDTCAkQ00qOyIKLSAgICAiJENQY20gPSAkQ1AgJENNKjsiCi0gICAgIiRFWGNtID0g
JEVYICRDTSo7IgotICAgICIkR0xjbSA9ICRHTCAkQ00qOyIKLSAgICAiJEhMY20gPSAkSEwgJENN
KjsiCi0gICAgIiRIWWNtID0gJEhZICRDTSo7IgotICAgICIkSDJjbSA9ICRIMiAkQ00qOyIKLSAg
ICAiJEgzY20gPSAkSDMgJENNKjsiCi0gICAgIiRJRGNtID0gJElEICRDTSo7IgotICAgICIkSU5j
bSA9ICRJTiAkQ00qOyIKLSAgICAiJElTY20gPSAkSVMgJENNKjsiCi0gICAgIiRKTGNtID0gJEpM
ICRDTSo7IgotICAgICIkSlZjbSA9ICRKViAkQ00qOyIKLSAgICAiJEpUY20gPSAkSlQgJENNKjsi
Ci0gICAgIiROU2NtID0gJE5TICRDTSo7IgotICAgICIkTlVjbSA9ICROVSAkQ00qOyIKLSAgICAi
JE9QY20gPSAkT1AgJENNKjsiCi0gICAgIiRQT2NtID0gJFBPICRDTSo7IgotICAgICIkUFJjbSA9
ICRQUiAkQ00qOyIKLSAgICAiJFFVY20gPSAkUVUgJENNKjsiCi0gICAgIiRSSWNtID0gJFFVICRD
TSo7IgotICAgICIkU1ljbSA9ICRTWSAkQ00qOyIKLSAgICAiJFdKY20gPSAkV0ogJENNKjsiOwot
Ci1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRGb3J3YXJkID0KLSAgICAiISFmb3J3YXJkOyIKLSAg
ICAiJENBTl9DTSA9IFteJFNQICRCSyAkQ1IgJExGICROTCAkWlcgJENNXTsiCi0gICAgIiRDQU5U
X0NNID0gWyRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07IgotICAgICIkQUxfRk9MTE9XX05P
Q00gPSBbJEJLICRDUiAkTEYgJE5MICRaVyAkU1BdOyIKLSAgICAiJEFMX0ZPTExPV19DTSA9IFsk
Q0wgJENQICRFWCAkSEwgJElTICRTWSAkV0ogJEdMICRPUCAkUVUgJEJBICRIWSAkTlMgJElOICRO
VSAkQUxQbHVzXTsiCi0gICAgIiRBTF9GT0xMT1cgPSBbJEFMX0ZPTExPV19OT0NNICRBTF9GT0xM
T1dfQ01dOyIKLSAgICAiJExCNEJyZWFrcyA9IFskQksgJENSICRMRiAkTkxdOyIKLSAgICAiJExC
NE5vbkJyZWFrcyA9IFteJEJLICRDUiAkTEYgJE5MXTsiCi0gICAgIiRMQjhCcmVha3MgPSBbJExC
NEJyZWFrcyAkWlddOyIKLSAgICAiJExCOE5vbkJyZWFrcyA9IFtbJExCNE5vbkJyZWFrc10gLSBb
JFpXXV07IgotICAgICIkTEIxOE5vbkJyZWFrcyA9IFskTEI4Tm9uQnJlYWtzIC0gWyRTUF1dOyIK
LSAgICAiJExCMThCcmVha3MgPSBbJExCOEJyZWFrcyAkU1BdOyIKLSAgICAiJExCMjBOb25CcmVh
a3MgPSBbJExCMThOb25CcmVha3MgLSAkQ0JdOyIKLSAgICAiJEFMUGx1cyAkQ00rOyIKLSAgICAi
JEJBICRDTSs7IgotICAgICIkQkIgJENNKzsiCi0gICAgIiRCMiAkQ00rOyIKLSAgICAiJENMICRD
TSs7IgotICAgICIkQ1AgJENNKzsiCi0gICAgIiRFWCAkQ00rOyIKLSAgICAiJEdMICRDTSs7Igot
ICAgICIkSEwgJENNKzsiCi0gICAgIiRIWSAkQ00rOyIKLSAgICAiJEgyICRDTSs7IgotICAgICIk
SDMgJENNKzsiCi0gICAgIiRJRCAkQ00rOyIKLSAgICAiJElOICRDTSs7IgotICAgICIkSVMgJENN
KzsiCi0gICAgIiRKTCAkQ00rOyIKLSAgICAiJEpWICRDTSs7IgotICAgICIkSlQgJENNKzsiCi0g
ICAgIiROUyAkQ00rOyIKLSAgICAiJE5VICRDTSs7IgotICAgICIkT1AgJENNKzsiCi0gICAgIiRQ
TyAkQ00rOyIKLSAgICAiJFBSICRDTSs7IgotICAgICIkUVUgJENNKzsiCi0gICAgIiRTWSAkQ00r
OyIKLSAgICAiJFdKICRDTSs7IgotICAgICIkQ1IgJExGIHsxMDB9OyIKLSAgICAiJExCNE5vbkJy
ZWFrcz8gJExCNEJyZWFrcyB7MTAwfTsiCi0gICAgIiRDQU5fQ00gJENNKiAkTEI0QnJlYWtzIHsx
MDB9OyIKLSAgICAiJENNKyAkTEI0QnJlYWtzIHsxMDB9OyIKLSAgICAiJExCNE5vbkJyZWFrcyBb
JFNQICRaV107IgotICAgICIkQ0FOX0NNICRDTSogWyRTUCAkWlddOyIKLSAgICAiJENNKyBbJFNQ
ICRaV107IgotICAgICIkRW1vamlGb3JTZXFzICRFbW9qaVZhcj8gJEVtb2ppTW9kcz8gJFpXSiAk
RW1vamlGb3JTZXFzOyIKLSAgICAiJENBTl9DTSAkQ00rOyIKLSAgICAiJENNKzsiCi0gICAgIiRD
QU5fQ00gJENNKiAkV0pjbTsiCi0gICAgIiRMQjhOb25CcmVha3MgJFdKY207IgotICAgICIkQ00r
ICRXSmNtOyIKLSAgICAiJFdKY20gJENBTlRfQ007IgotICAgICIkV0pjbSAkQ0FOX0NNICRDTSo7
IgotICAgICIkR0xjbSAkQ0FOX0NNICRDTSo7IgotICAgICIkR0xjbSAkQ0FOVF9DTTsiCi0gICAg
IltbJExCOE5vbkJyZWFrc10gLSBbJFNQICRCQSAkSFldXSAkQ00qICRHTGNtOyIKLSAgICAiJENN
KyBHTGNtOyIKLSAgICAiJExCOE5vbkJyZWFrcyAkQ0w7IgotICAgICIkQ0FOX0NNICRDTSogJENM
OyIKLSAgICAiJENNKyAkQ0w7IgotICAgICIkTEI4Tm9uQnJlYWtzICRDUDsiCi0gICAgIiRDQU5f
Q00gJENNKiAkQ1A7IgotICAgICIkQ00rICRDUDsiCi0gICAgIiRMQjhOb25CcmVha3MgJEVYOyIK
LSAgICAiJENBTl9DTSAkQ00qICRFWDsiCi0gICAgIiRDTSsgJEVYOyIKLSAgICAiJExCOE5vbkJy
ZWFrcyAkSVM7IgotICAgICIkQ0FOX0NNICRDTSogJElTOyIKLSAgICAiJENNKyAkSVM7IgotICAg
ICIkTEI4Tm9uQnJlYWtzICRTWTsiCi0gICAgIiRDQU5fQ00gJENNKiAkU1k7IgotICAgICIkQ00r
ICRTWTsiCi0gICAgIiRPUGNtICRTUCogJENBTl9DTSAkQ00qOyIKLSAgICAiJE9QY20gJFNQKiAk
Q0FOVF9DTTsiCi0gICAgIiRPUGNtICRTUCsgJENNKyAkQUxfRk9MTE9XPzsiCi0gICAgIiRRVWNt
ICRTUCogJE9QY207IgotICAgICIoJENMY20gfCAkQ1BjbSkgJFNQKiAkTlNjbTsiCi0gICAgIiRC
MmNtICRTUCogJEIyY207IgotICAgICIkTEIxOE5vbkJyZWFrcyAkQ00qICRRVWNtOyIKLSAgICAi
JENNKyAkUVVjbTsiCi0gICAgIiRRVWNtIC4/OyIKLSAgICAiJFFVY20gJExCMThOb25CcmVha3Mg
JENNKjsiCi0gICAgIiRMQjIwTm9uQnJlYWtzICRDTSogKCRCQWNtIHwgJEhZY20gfCAkTlNjbSk7
ICIKLSAgICAiJEJCY20gW14kQ0JdOyIKLSAgICAiJEJCY20gJExCMjBOb25CcmVha3MgJENNKjsi
Ci0gICAgIiRITGNtICgkSFljbSB8ICRCQWNtKSBbXiRDQl0/OyIKLSAgICAiKCRBTGNtIHwgJEhM
Y20pICRJTmNtOyIKLSAgICAiJENNKyAkSU5jbTsiCi0gICAgIiRJRGNtICRJTmNtOyIKLSAgICAi
JElOY20gJElOY207IgotICAgICIkTlVjbSAkSU5jbTsiCi0gICAgIiRJRGNtICRQT2NtOyIKLSAg
ICAiJEFMY20gJE5VY207IgotICAgICIkSExjbSAkTlVjbTsiCi0gICAgIiRDTSsgJE5VY207Igot
ICAgICIkTlVjbSAkQUxjbTsiCi0gICAgIiROVWNtICRITGNtOyIKLSAgICAiJFBSY20gJElEY207
IgotICAgICIkUFJjbSAoJEFMY20gfCAkSExjbSk7IgotICAgICIkUE9jbSAoJEFMY20gfCAkSExj
bSk7IgotICAgICIoJFBSY20gfCAkUE9jbSk/ICgkT1BjbSB8ICRIWWNtKT8gJE5VY20gKCROVWNt
IHwgJFNZY20gfCAkSVNjbSkqICgkQ0xjbSB8ICRDUGNtKT8gKCRQUmNtIHwgJFBPY20pPzsiCi0g
ICAgIiRKTGNtICgkSkxjbSB8ICRKVmNtIHwgJEgyY20gfCAkSDNjbSk7IgotICAgICIoJEpWY20g
fCAkSDJjbSkgKCRKVmNtIHwgJEpUY20pOyIKLSAgICAiKCRKVGNtIHwgJEgzY20pICRKVGNtOyIK
LSAgICAiKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pICRJTmNtOyIKLSAg
ICAiKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pICRQT2NtOyIKLSAgICAi
JFBSY20gKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pOyIKLSAgICAiKCRB
TGNtIHwgJEhMY20pICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIiRDTSsgKCRBTGNtIHwgJEhMY20p
OyIKLSAgICAiJElTY20gKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiKCRBTGNtIHwgJEhMY20gfCAk
TlVjbSkgJE9QY207IgotICAgICIkQ00rICRPUGNtOyIKLSAgICAiJENQY20gKCRBTGNtIHwgJEhM
Y20gfCAkTlVjbSk7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkUkljbSAk
UkljbTsiCi0jZW5kaWYKLSAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7
IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0UmV2ZXJzZSA9Ci0gICAgIiEhcmV2ZXJzZTsi
Ci0gICAgIiRDTSsgJEFMUGx1czsiCi0gICAgIiRDTSsgJEJBOyIKLSAgICAiJENNKyAkQkI7Igot
ICAgICIkQ00rICRCMjsiCi0gICAgIiRDTSsgJENMOyIKLSAgICAiJENNKyAkQ1A7IgotICAgICIk
Q00rICRFWDsiCi0gICAgIiRDTSsgJEdMOyIKLSAgICAiJENNKyAkSEw7IgotICAgICIkQ00rICRI
WTsiCi0gICAgIiRDTSsgJEgyOyIKLSAgICAiJENNKyAkSDM7IgotICAgICIkQ00rICRJRDsiCi0g
ICAgIiRDTSsgJElOOyIKLSAgICAiJENNKyAkSVM7IgotICAgICIkQ00rICRKTDsiCi0gICAgIiRD
TSsgJEpWOyIKLSAgICAiJENNKyAkSlQ7IgotICAgICIkQ00rICROUzsiCi0gICAgIiRDTSsgJE5V
OyIKLSAgICAiJENNKyAkT1A7IgotICAgICIkQ00rICRQTzsiCi0gICAgIiRDTSsgJFBSOyIKLSAg
ICAiJENNKyAkUVU7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkQ00rICRS
STsiCi0jZW5kaWYKLSAgICAiJENNKyAkU1k7IgotICAgICIkQ00rICRXSjsiCi0gICAgIiRDTSs7
IgotICAgICIkQUxfRk9MTE9XICRDTSsgLyAoWyRCSyAkQ1IgJExGICROTCAkWlcge2VvZn1dIHwg
JFNQKyAkQ00rICRTUCB8ICRTUCsgJENNKiAoW14kT1AgJENNICRTUF0gfCBbJEFMIHtlb2Z9XSkp
OyIKLSAgICAiWyRQUl0gLyAkQ00rIFskQksgJENSICRMRiAkTkwgJFpXICRTUCB7ZW9mfV07Igot
ICAgICIkTEI0QnJlYWtzIFskTEI0Tm9uQnJlYWtzLSRDTV07IgotICAgICIkTEI0QnJlYWtzICRD
TSsgJENBTl9DTTsiCi0gICAgIiRMRiAkQ1I7IgotICAgICJbJFNQICRaV10gWyRMQjROb25CcmVh
a3MtJENNXTsiCi0gICAgIlskU1AgJFpXXSAkQ00rICRDQU5fQ007IgotICAgICIkRW1vamlGb3JT
ZXFzICRaV0ogJEVtb2ppTW9kcz8gJEVtb2ppVmFyPyAkRW1vamlGb3JTZXFzOyIKLSAgICAiJENN
KyAkQ0FOX0NNOyIKLSAgICAiJENNKiAkV0ogJENNKiAkQ0FOX0NNOyIKLSAgICAiJENNKiAkV0og
WyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAgIiRDQU5UX0NNICRDTSogJFdKOyIKLSAgICAiJENN
KiAkQ0FOX0NNICRDTSogJFdKOyIKLSAgICAiJENNKiAkR0wgJENNKiBbJExCOE5vbkJyZWFrcy1b
JENNICRTUCAkQkEgJEhZXV07IgotICAgICIkQ0FOVF9DTSAkQ00qICRHTDsiCi0gICAgIiRDTSog
JENBTl9DTSAkQ00qICRHTDsiCi0gICAgIiRDTCAkQ00rICRDQU5fQ007IgotICAgICIkQ1AgJENN
KyAkQ0FOX0NNOyIKLSAgICAiJEVYICRDTSsgJENBTl9DTTsiCi0gICAgIiRJUyAkQ00rICRDQU5f
Q007IgotICAgICIkU1kgJENNKyAkQ0FOX0NNOyIKLSAgICAiJENMIFskTEI4Tm9uQnJlYWtzLSRD
TV07IgotICAgICIkQ1AgWyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAgIiRFWCBbJExCOE5vbkJy
ZWFrcy0kQ01dOyIKLSAgICAiJElTIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIkU1kgWyRM
QjhOb25CcmVha3MtJENNXTsiCi0gICAgIlskQ0wgJENQICRFWCAkSVMgJFNZXSAkQ00rICRTUCsg
JENNKiAkT1A7ICIKLSAgICAiJENNKiAkQ0FOX0NNICRTUCogJENNKiAkT1A7IgotICAgICIkQ0FO
VF9DTSAkU1AqICRDTSogJE9QOyIKLSAgICAiJEFMX0ZPTExPVz8gJENNKyAkU1AgJFNQKiAkQ00q
ICRPUDsiCi0gICAgIiRBTF9GT0xMT1dfTk9DTSAkQ00rICRTUCsgJENNKiAkT1A7IgotICAgICIk
Q00qICRBTF9GT0xMT1dfQ00gJENNKyAkU1ArICRDTSogJE9QOyIKLSAgICAiJFNZICRDTSAkU1Ar
ICRPUDsiCi0gICAgIiRDTSogJE9QICRTUCogJENNKiAkUVU7IgotICAgICIkQ00qICROUyAkU1Aq
ICRDTSogKCRDTCB8ICRDUCk7IgotICAgICIkQ00qICRCMiAkU1AqICRDTSogJEIyOyIKLSAgICAi
JENNKiAkUVUgJENNKiAkQ0FOX0NNOyIKLSAgICAiJENNKiAkUVUgJExCMThOb25CcmVha3M7Igot
ICAgICIkQ00qICRDQU5fQ00gJENNKiAkUVU7IgotICAgICIkQ0FOVF9DTSAkQ00qICRRVTsiCi0g
ICAgIiRDTSogKCRCQSB8ICRIWSB8ICROUykgJENNKiBbJExCMjBOb25CcmVha3MtJENNXTsiCi0g
ICAgIiRDTSogWyRMQjIwTm9uQnJlYWtzLSRDTV0gJENNKiAkQkI7IgotICAgICJbXiRDQl0gJENN
KiAkQkI7IgotICAgICJbXiRDQl0gJENNKiAoJEhZIHwgJEJBKSAkQ00qICRITDsiCi0gICAgIiRD
TSogJElOICRDTSogKCRBTFBsdXMgfCAkSEwpOyIKLSAgICAiJENNKiAkSU4gJENNKiAkSUQ7Igot
ICAgICIkQ00qICRJTiAkQ00qICRJTjsiCi0gICAgIiRDTSogJElOICRDTSogJE5VOyIKLSAgICAi
JENNKiAkUE8gJENNKiAkSUQ7IgotICAgICIkQ00qICROVSAkQ00qICgkQUxQbHVzIHwgJEhMKTsi
Ci0gICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSogJE5VOyIKLSAgICAiJENNKiAkSUQgJENN
KiAkUFI7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQUjsiCi0gICAgIiRDTSog
KCRBTFBsdXMgfCAkSEwpICRDTSogJFBPOyIKLSAgICAiKCRDTSogKCRQUiB8ICRQTykpPyAoJENN
KiAoJENMIHwgJENQKSk/ICgkQ00qICgkTlUgfCAkSVMgfCAkU1kpKSogJENNKiAkTlUgKCRDTSog
KCRPUCB8ICRIWSkpPyAoJENNKiAoJFBSIHwgJFBPKSk/OyIKLSAgICAiJENNKiAoJEgzIHwgJEgy
IHwgJEpWIHwgJEpMKSAkQ00qICRKTDsiCi0gICAgIiRDTSogKCRKVCB8ICRKVikgJENNKiAoJEgy
IHwgJEpWKTsiCi0gICAgIiRDTSogJEpUICRDTSogKCRIMyB8ICRKVCk7IgotICAgICIkQ00qICRJ
TiAkQ00qICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpOyIKLSAgICAiJENNKiAkUE8gJENN
KiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCi0gICAgIiRDTSogKCRIMyB8ICRIMiB8
ICRKVCB8ICRKViB8ICRKTCkgJENNKiAkUFI7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAk
Q00qICgkQUxQbHVzIHwgJEhMKTsiCi0gICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSogJElT
OyIKLSAgICAiJENNKiAkT1AgJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSk7IgotICAgICIkQ00q
ICgkQUxQbHVzIHwgJEhMIHwgJE5VKSAkQ00qICRDUDsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9T
VVBQT1JUCi0gICAgIiRDTSogJFJJICRDTSogJFJJOyIKLSNlbmRpZgotICAgICIkRW1vamlNb2Rz
ICRFbW9qaVZhcj8gJEVtb2ppRm9yTW9kczsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRT
YWZlRm9yd2FyZCA9Ci0gICAgIiEhc2FmZV9mb3J3YXJkOyIKLSAgICAiWyRDTSAkT1AgJFFVICRD
TCAkQ1AgJEIyICRQUiAkSFkgJEJBICRTUCAkZGljdGlvbmFyeV0rIFteJENNICRPUCAkUVUgJENM
ICRDUCAkQjIgJFBSICRIWSAkQkEgJGRpY3Rpb25hcnldOyIKLSAgICAiJGRpY3Rpb25hcnkgJGRp
Y3Rpb25hcnk7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0U2FmZVJldmVyc2UgPQotICAg
ICIhIXNhZmVfcmV2ZXJzZTsiCi0gICAgIiRDTSsgW14kQ00gJEJLICRDUiAkTEYgJE5MICRaVyAk
U1BdOyIKLSAgICAiJENNKyAkU1AgLyAuOyIKLSAgICAiJFNQKyAkQ00qICRPUDsiCi0gICAgIiRT
UCsgJENNKiAkUVU7IgotICAgICIkU1ArICRDTSogKCRDTCB8ICRDUCk7IgotICAgICIkU1ArICRD
TSogJEIyOyIKLSAgICAiJENNKiAoJEhZIHwgJEJBKSAkQ00qICRITDsiCi0gICAgIigkQ00qICgk
SVMgfCAkU1kpKSsgJENNKiAkTlU7IgotICAgICIoJENMIHwgJENQKSAkQ00qICgkTlUgfCAkSVMg
fCAkU1kpOyIKLSAgICAiJGRpY3Rpb25hcnkgJGRpY3Rpb25hcnk7IjsKLQotc3RhdGljIFN0cmlu
ZyBtYXBMaW5lSXRlcmF0b3JNb2RlVG9SdWxlcyhMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwg
Ym9vbCBpc0NKSykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHJ1bGVzQnVpbGRlcjsKLSAgICBydWxl
c0J1aWxkZXIuYXBwZW5kKHVheDE0UHJvbG9ndWUpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQo
dWF4MTRBc3NpZ25tZW50c0JlZm9yZSk7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNDoKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChp
c0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Q0pLIDogdWF4MTRBc3NpZ25tZW50
c0N1c3RvbURlZmF1bHROb25DSkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVh
a0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2U6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQoaXND
SksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTG9vc2VDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3Vz
dG9tTG9vc2VOb25DSkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0Tm9ybWFsOgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8g
dWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21O
b3JtYWxOb25DSkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9y
TW9kZVVBWDE0U3RyaWN0OgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8gdWF4
MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJp
Y3ROb25DSkspOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZCh1YXgxNEFzc2lnbm1lbnRzQWZ0ZXIpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRG
b3J3YXJkKTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0UmV2ZXJzZSk7Ci0gICAgcnVs
ZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVGb3J3YXJkKTsKLSAgICBydWxlc0J1aWxkZXIuYXBw
ZW5kKHVheDE0U2FmZVJldmVyc2UpOwotICAgIHJldHVybiBydWxlc0J1aWxkZXIudG9TdHJpbmco
KTsKLX0KLQotLy8gUmVjb2duaXplIEJDUDQ3IGNvbXBsaWFudCBwcmltYXJ5IGxhbmd1YWdlIHZh
bHVlcyBvZiAnemgnLCAnamEnLCAna28nCi0vLyAoaW4gYW55IGNvbWJpbmF0aW9uIG9mIGNhc2Up
LCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IHN1YnRhZ3MuIERvbid0Ci0vLyByZWNvZ25pemUgMy1s
ZXR0ZXIgdmFyaWFudHMgJ2NoaScvJ3pobycsICdqcG4nLCBvciAna29yJyBzaW5jZSBCQ1A0Nwot
Ly8gcmVxdWlyZXMgdXNlIG9mIHNob3J0ZXN0IGxhbmd1YWdlIHRhZy4KLWJvb2wgaXNDSktMb2Nh
bGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCi17Ci0gICAgc2l6ZV90IGxlbmd0aCA9IGxv
Y2FsZS5sZW5ndGgoKTsKLSAgICBpZiAobGVuZ3RoIDwgMikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGF1dG8gYzEgPSBsb2NhbGVbMF07Ci0gICAgYXV0byBjMiA9IGxvY2FsZVsxXTsKLSAg
ICBhdXRvIGMzID0gbGVuZ3RoID09IDIgPyAwIDogbG9jYWxlWzJdOwotICAgIGlmICghYzMgfHwg
YzMgPT0gJy0nIHx8IGMzID09ICdfJyB8fCBjMyA9PSAnQCcpIHsKLSAgICAgICAgaWYgKGMxID09
ICd6JyB8fCBjMSA9PSAnWicpCi0gICAgICAgICAgICByZXR1cm4gYzIgPT0gJ2gnIHx8IGMyID09
ICdIJzsKLSAgICAgICAgaWYgKGMxID09ICdqJyB8fCBjMSA9PSAnSicpCi0gICAgICAgICAgICBy
ZXR1cm4gYzIgPT0gJ2EnIHx8IGMyID09ICdBJzsKLSAgICAgICAgaWYgKGMxID09ICdrJyB8fCBj
MSA9PSAnSycpCi0gICAgICAgICAgICByZXR1cm4gYzIgPT0gJ28nIHx8IGMyID09ICdPJzsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1UZXh0QnJlYWtJdGVyYXRvciogb3BlbkxpbmVC
cmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKLXsKLSAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXI7
Ci0gICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGJvb2wgbG9j
YWxlSXNFbXB0eSA9IGxvY2FsZS5pc0VtcHR5KCk7Ci0gICAgaWYgKG1vZGUgPT0gTGluZUJyZWFr
SXRlcmF0b3JNb2RlVUFYMTQpCi0gICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElO
RSwgbG9jYWxlSXNFbXB0eSA/IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpIDogbG9jYWxlLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7Ci0gICAgICAgIGF1dG8gcnVsZXMgPSBtYXBM
aW5lSXRlcmF0b3JNb2RlVG9SdWxlcyhtb2RlLCBpc0NKSyk7Ci0gICAgICAgIHVicmtJdGVyID0g
dWJya19vcGVuUnVsZXMoU3RyaW5nVmlldyhydWxlcykudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCks
IHJ1bGVzLmxlbmd0aCgpLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKLSAgICB9
Ci0gICAgLy8gbG9jYWxlIGNvbWVzIGZyb20gYSB3ZWIgcGFnZSBhbmQgaXQgY2FuIGJlIGludmFs
aWQsIGxlYWRpbmcgSUNVCi0gICAgLy8gdG8gZmFpbCwgaW4gd2hpY2ggY2FzZSB3ZSBmYWxsIGJh
Y2sgdG8gdGhlIGRlZmF1bHQgbG9jYWxlLgotICAgIGlmICghbG9jYWxlSXNFbXB0eSAmJiBVX0ZB
SUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAgICAgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAgICAgICAgdWJya0l0ZXIgPSB1YnJrX29wZW4oVUJSS19MSU5FLCBjdXJyZW50VGV4dEJyZWFr
TG9jYWxlSUQoKSwgMCwgMCwgJm9wZW5TdGF0dXMpOwotICAgIH0KLQotICAgIGlmIChVX0ZBSUxV
UkUob3BlblN0YXR1cykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX29wZW4gZmFpbGVkIHdp
dGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4odWJy
a0l0ZXIpOwotfQotCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0
b3IqJiBpdGVyYXRvcikKLXsKLSAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXIgPSByZWludGVy
cHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpOwotICAgIEFTU0VSVCh1YnJrSXRl
cik7Ci0gICAgdWJya19jbG9zZSh1YnJrSXRlcik7Ci0gICAgaXRlcmF0b3IgPSBudWxscHRyOwot
fQotCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3I7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqIGV4cGVjdGVkLCBUZXh0QnJlYWtJ
dGVyYXRvciogbmV3VmFsdWUpCi17Ci0gICAgcmV0dXJuIFdURjo6d2Vha0NvbXBhcmVBbmRTd2Fw
KCZub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLCBleHBlY3RlZCwgbmV3VmFsdWUpOwot
fQotCi1Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJC
cmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIG1faXRlcmF0b3IgPSBub25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOwotCi0gICAgYm9vbCBjcmVhdGVkSXRlcmF0b3Ig
PSBtX2l0ZXJhdG9yICYmIGNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcihtX2l0ZXJhdG9yLCAwKTsKLSAgICBpZiAoIWNyZWF0ZWRJdGVyYXRvcikKLSAgICAgICAg
bV9pdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUik7Ci0gICAgaWYg
KCFtX2l0ZXJhdG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2l0ZXJhdG9yID0gc2V0VGV4
dEZvckl0ZXJhdG9yKCptX2l0ZXJhdG9yLCBzdHJpbmcpOwotfQotCi1Ob25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpCi17Ci0g
ICAgaWYgKCFjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoMCwg
bV9pdGVyYXRvcikpCi0gICAgICAgIHVicmtfY2xvc2UocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJ
dGVyYXRvcio+KG1faXRlcmF0b3IpKTsKLX0KLQotCi0vLyBJdGVyYXRvciBpbXBsZW1lbmF0aW9u
LgotCi1pbnQgdGV4dEJyZWFrRmlyc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotewot
ICAgIHJldHVybiB1YnJrX2ZpcnN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihp
dGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrTGFzdChUZXh0QnJlYWtJdGVyYXRvciogaXRl
cmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfbGFzdChyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha05leHQoVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiB1YnJrX25leHQocmVpbnRlcnByZXRfY2Fz
dDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtQcmV2aW91
cyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJldmlv
dXMocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWlu
dCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9z
KQotewotICAgIHJldHVybiB1YnJrX3ByZWNlZGluZyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrRm9sbG93aW5nKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICByZXR1cm4gdWJya19m
b2xsb3dpbmcocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9z
KTsKLX0KLQotaW50IHRleHRCcmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9y
KQotewotICAgIHJldHVybiB1YnJrX2N1cnJlbnQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVy
YXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yLCBpbnQgcG9zaXRpb24pCi17Ci0gICAgcmV0dXJuIHVicmtfaXNCb3VuZGFy
eShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3NpdGlvbik7
Ci19Ci0KLWJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikK
LXsKLSAgICBpbnQgcnVsZVN0YXR1cyA9IHVicmtfZ2V0UnVsZVN0YXR1cyhyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLSAgICByZXR1cm4gcnVsZVN0YXR1cyAh
PSBVQlJLX1dPUkRfTk9ORTsKLX0KLQotdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyhjb25z
dCBTdHJpbmcmIHMpCi17Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgoKTsK
LSAgICAKLSAgICBpZiAoIXN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAv
LyBUaGUgb25seSBMYXRpbi0xIEV4dGVuZGVkIEdyYXBoZW1lIENsdXN0ZXIgaXMgQ1IgTEYKLSAg
ICBpZiAocy5pczhCaXQoKSAmJiAhcy5jb250YWlucygnXHInKSkKLSAgICAgICAgcmV0dXJuIHN0
cmluZ0xlbmd0aDsKLQotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7
Ci0gICAgaWYgKCFpdCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKLQotICAgIHVuc2ln
bmVkIG51bSA9IDA7Ci0gICAgd2hpbGUgKHRleHRCcmVha05leHQoaXQpICE9IFRleHRCcmVha0Rv
bmUpCi0gICAgICAgICsrbnVtOwotICAgIHJldHVybiBudW07Ci19Ci0KLXVuc2lnbmVkIG51bUNo
YXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYgcywgdW5zaWduZWQg
bnVtR3JhcGhlbWVDbHVzdGVycykKLXsKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBzLmxl
bmd0aCgpOwotCi0gICAgaWYgKCFzdHJpbmdMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENSIExG
Ci0gICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1pbihzdHJpbmdMZW5ndGgsIG51bUdyYXBoZW1lQ2x1c3RlcnMpOwotCi0gICAgTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChzKTsKLSAgICBpZiAoIWl0KQotICAgICAg
ICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsKLQot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzOyArK2kpIHsK
LSAgICAgICAgaWYgKHRleHRCcmVha05leHQoaXQpID09IFRleHRCcmVha0RvbmUpCi0gICAgICAg
ICAgICByZXR1cm4gc3RyaW5nTGVuZ3RoOwotICAgIH0KLSAgICByZXR1cm4gdGV4dEJyZWFrQ3Vy
cmVudChpdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmExYzIzNTBiNDc2N2Q2Y2UxYzM0ZGUyYzM0YzIyZDQzNTIyYzU4ZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwy
MTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBMYXJzIEtub2xsIDxsYXJzQHRy
b2xsdGVjaC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvcl9oCi0j
ZGVmaW5lIFRleHRCcmVha0l0ZXJhdG9yX2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0
cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBUZXh0QnJlYWtJdGVyYXRvcjsKLQotLy8gTm90ZTogVGhlIHJldHVy
bmVkIGl0ZXJhdG9yIGlzIGdvb2Qgb25seSB1bnRpbCB5b3UgZ2V0IGFub3RoZXIgaXRlcmF0b3Is
IHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IuCi0KLWVudW0g
TGluZUJyZWFrSXRlcmF0b3JNb2RlIHsKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCwK
LSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlLAotICAgIExpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0Tm9ybWFsLAotICAgIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0U3RyaWN0
LAotfTsKLQotLy8gVGhpcyBpcyBzaW1pbGFyIHRvIGNoYXJhY3RlciBicmVhayBpdGVyYXRvciBp
biBtb3N0IGNhc2VzLCBidXQgaXMgc3ViamVjdCB0bwotLy8gcGxhdGZvcm0gVUkgY29udmVudGlv
bnMuIE9uZSBub3RhYmxlIGV4YW1wbGUgd2hlcmUgdGhpcyBjYW4gYmUgZGlmZmVyZW50Ci0vLyBm
cm9tIGNoYXJhY3RlciBicmVhayBpdGVyYXRvciBpcyBUaGFpIHByZXBlbmQgY2hhcmFjdGVycywg
c2VlIGJ1ZyAyNDM0Mi4KLS8vIFVzZSB0aGlzIGZvciBpbnNlcnRpb24gcG9pbnQgYW5kIHNlbGVj
dGlvbiBtYW5pcHVsYXRpb25zLgotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50SXRl
cmF0b3IoU3RyaW5nVmlldyk7Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRv
cihTdHJpbmdWaWV3KTsKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3Io
U3RyaW5nVmlldyk7Ci0KLVdFQkNPUkVfRVhQT1JUIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJl
TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUs
IGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwg
TGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7Ci1UZXh0QnJlYWtJ
dGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
LCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwotdm9pZCBjbG9zZUxpbmVCcmVh
a0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiYpOwotCi1pbnQgdGV4dEJyZWFrRmlyc3QoVGV4
dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9yKik7
Ci1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha1By
ZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKik7Ci1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJl
YWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvcios
IGludCk7Ci1XRUJDT1JFX0VYUE9SVCBpbnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVha0l0
ZXJhdG9yKiwgaW50KTsKLWJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQp
OwotYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLQotY29uc3QgaW50
IFRleHRCcmVha0RvbmUgPSAtMTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NKS0xvY2FsZShj
b25zdCBBdG9taWNTdHJpbmcmKTsKLQotY2xhc3MgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIHsKLXB1
YmxpYzoKLSAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoKQotICAgICAgICA6IG1faXRlcmF0b3Io
bnVsbHB0cikKLSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQotICAgICAg
ICAsIG1fbW9kZShMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgLCBtX2NhY2hl
ZFByaW9yQ29udGV4dExlbmd0aCgwKQotICAgICAgICAsIG1faXNDSksoZmFsc2UpCi0gICAgewot
ICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOwotICAgIH0KLQotICAgIExhenlMaW5lQnJlYWtJ
dGVyYXRvcihTdHJpbmcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSA9IEF0b21p
Y1N0cmluZygpLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSA9IExpbmVCcmVha0l0ZXJhdG9y
TW9kZVVBWDE0KQotICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKLSAgICAgICAgLCBtX2xvY2Fs
ZShsb2NhbGUpCi0gICAgICAgICwgbV9pdGVyYXRvcihudWxscHRyKQotICAgICAgICAsIG1fY2Fj
aGVkUHJpb3JDb250ZXh0KG51bGxwdHIpCi0gICAgICAgICwgbV9tb2RlKG1vZGUpCi0gICAgICAg
ICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKLSAgICB7Ci0gICAgICAgIHJlc2V0UHJp
b3JDb250ZXh0KCk7Ci0gICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOwotICAg
IH0KLQotICAgIH5MYXp5TGluZUJyZWFrSXRlcmF0b3IoKQotICAgIHsKLSAgICAgICAgaWYgKG1f
aXRlcmF0b3IpCi0gICAgICAgICAgICByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IobV9pdGVyYXRv
cik7Ci0gICAgfQotCi0gICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
OyB9Ci0gICAgYm9vbCBpc0xvb3NlQ0pLTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDSksgJiYg
bV9tb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2U7IH0KLQotICAgIFVDaGFy
IGxhc3RDaGFyYWN0ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RG
X0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5l
eHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBtX3ByaW9yQ29u
dGV4dFsxXTsKLSAgICB9Ci0KLSAgICBVQ2hhciBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSBjb25z
dAotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9y
Q29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0
X2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBtX3ByaW9yQ29udGV4dFswXTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldFByaW9yQ29udGV4dChVQ2hhciBsYXN0LCBVQ2hhciBzZWNvbmRUb0xhc3QpCi0g
ICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250
ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVu
Z3RoKTsKLSAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7Ci0gICAgICAg
IG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKLSAgICB9Ci0KLSAgICB2b2lkIHVwZGF0ZVByaW9y
Q29udGV4dChVQ2hhciBsYXN0KQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FS
UkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBl
Y3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzBdID0g
bV9wcmlvckNvbnRleHRbMV07Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKLSAg
ICB9Ci0KLSAgICB2b2lkIHJlc2V0UHJpb3JDb250ZXh0KCkKLSAgICB7Ci0gICAgICAgIENPTVBJ
TEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVh
a0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICBtX3By
aW9yQ29udGV4dFswXSA9IDA7Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gMDsKLSAgICB9
Ci0KLSAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09NUElMRV9BU1NF
UlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0
b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIGlmIChtX3ByaW9y
Q29udGV4dFsxXSkgewotICAgICAgICAgICAgKytwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAgICAg
ICAgICBpZiAobV9wcmlvckNvbnRleHRbMF0pCi0gICAgICAgICAgICAgICAgKytwcmlvckNvbnRl
eHRMZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHByaW9yQ29udGV4dExlbmd0aDsK
LSAgICB9Ci0KLSAgICAvLyBPYnRhaW4gdGV4dCBicmVhayBpdGVyYXRvciwgcG9zc2libHkgcHJl
dmlvdXNseSBjYWNoZWQsIHdoZXJlIHRoaXMgaXRlcmF0b3IgaXMgKG9yIGhhcyBiZWVuKQotICAg
IC8vIGluaXRpYWxpemVkIHRvIHVzZSB0aGUgcHJldmlvdXNseSBzdG9yZWQgc3RyaW5nIGFzIHRo
ZSBwcmltYXJ5IGJyZWFraW5nIGNvbnRleHQgYW5kIHVzaW5nCi0gICAgLy8gcHJldmlvdXNseSBz
dG9yZWQgcHJpb3IgY29udGV4dCBpZiBub24tZW1wdHkuCi0gICAgVGV4dEJyZWFrSXRlcmF0b3Iq
IGdldCh1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgpCi0gICAgewotICAgICAgICBBU1NFUlQo
cHJpb3JDb250ZXh0TGVuZ3RoIDw9IHByaW9yQ29udGV4dENhcGFjaXR5KTsKLSAgICAgICAgY29u
c3QgVUNoYXIqIHByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dExlbmd0aCA/ICZtX3ByaW9yQ29u
dGV4dFtwcmlvckNvbnRleHRDYXBhY2l0eSAtIHByaW9yQ29udGV4dExlbmd0aF0gOiAwOwotICAg
ICAgICBpZiAoIW1faXRlcmF0b3IpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBhY3F1aXJl
TGluZUJyZWFrSXRlcmF0b3IobV9zdHJpbmcsIG1fbG9jYWxlLCBwcmlvckNvbnRleHQsIHByaW9y
Q29udGV4dExlbmd0aCwgbV9tb2RlLCBtX2lzQ0pLKTsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJp
b3JDb250ZXh0ID0gcHJpb3JDb250ZXh0OwotICAgICAgICAgICAgbV9jYWNoZWRQcmlvckNvbnRl
eHRMZW5ndGggPSBwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpb3JD
b250ZXh0ICE9IG1fY2FjaGVkUHJpb3JDb250ZXh0IHx8IHByaW9yQ29udGV4dExlbmd0aCAhPSBt
X2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgcmVzZXRTdHJpbmdBbmRS
ZWxlYXNlSXRlcmF0b3IobV9zdHJpbmcsIG1fbG9jYWxlLCBtX21vZGUpOwotICAgICAgICAgICAg
cmV0dXJuIHRoaXMtPmdldChwcmlvckNvbnRleHRMZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBtX2l0ZXJhdG9yOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXRTdHJpbmdBbmRSZWxl
YXNlSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExp
bmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQotICAgIHsKLSAgICAgICAgaWYgKG1faXRlcmF0b3Ip
Ci0gICAgICAgICAgICByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IobV9pdGVyYXRvcik7Ci0gICAg
ICAgIG1fc3RyaW5nID0gc3RyaW5nOwotICAgICAgICBtX2xvY2FsZSA9IGxvY2FsZTsKLSAgICAg
ICAgbV9pdGVyYXRvciA9IG51bGxwdHI7Ci0gICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0ID0g
bnVsbHB0cjsKLSAgICAgICAgbV9tb2RlID0gbW9kZTsKLSAgICAgICAgbV9pc0NKSyA9IGlzQ0pL
TG9jYWxlKGxvY2FsZSk7Ci0gICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gMDsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByaW9yQ29udGV4
dENhcGFjaXR5ID0gMjsKLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgQXRvbWljU3RyaW5nIG1f
bG9jYWxlOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9yOwotICAgIGNvbnN0IFVD
aGFyKiBtX2NhY2hlZFByaW9yQ29udGV4dDsKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbV9t
b2RlOwotICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoOwotICAgIFVDaGFy
IG1fcHJpb3JDb250ZXh0W3ByaW9yQ29udGV4dENhcGFjaXR5XTsKLSAgICBib29sIG1faXNDSks7
Ci19OwotCi0vLyBJdGVyYXRlcyBvdmVyICJleHRlbmRlZCBncmFwaGVtZSBjbHVzdGVycyIsIGFz
IGRlZmluZWQgaW4gVUFYICMyOS4KLS8vIE5vdGUgdGhhdCBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlv
bnMgbWF5IGJlIGxlc3Mgc29waGlzdGljYXRlZCAtIGUuZy4gSUNVIHByaW9yIHRvCi0vLyB2ZXJz
aW9uIDQuMCBvbmx5IHN1cHBvcnRzICJsZWdhY3kgZ3JhcGhlbWUgY2x1c3RlcnMiLgotLy8gVXNl
IHRoaXMgZm9yIGdlbmVyYWwgdGV4dCBwcm9jZXNzaW5nLCBlLmcuIHN0cmluZyB0cnVuY2F0aW9u
LgotCi1jbGFzcyBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKTsKLXB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmlu
Z1ZpZXcpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKCk7Ci0KLSAgICBvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVy
biBtX2l0ZXJhdG9yOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRl
cmF0b3I7Ci19OwotCi0vLyBDb3VudHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4g
QSBzdXJyb2dhdGUgcGFpciBvciBhIHNlcXVlbmNlCi0vLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hh
cmFjdGVyIGFuZCBmb2xsb3dpbmcgY29tYmluaW5nIGNoYXJhY3RlcnMgaXMKLS8vIGNvdW50ZWQg
YXMgMSBncmFwaGVtZSBjbHVzdGVyLgotdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyhjb25z
dCBTdHJpbmcmKTsKLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdoaWNoIHdp
bGwgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCi0vLyB0aGUgc3BlY2lmaWVkIGdyYXBoZW1lIGNs
dXN0ZXIgbGVuZ3RoLgotdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhj
b25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQpOwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJu
YWxJQ1UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhiNzAwM2MzNWZkMjFlYTZh
YTIxOTkzNWU3YTI4OTlhMjY1YWQ3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1UuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lm
bmRlZiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVX2gKLSNkZWZpbmUgVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVV9oCi0KLS8vIEZJWE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9j
YWxlcyBmb3IgSUNVLCBub3QganVzdCBmb3IgdGV4dCBicmVha2luZywKLS8vIHRoaXMgZmlsZSBh
bmQgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2Nh
bGVJRCgpOwotICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9I
eXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVu
YXRpb25DRi5jcHAKaW5kZXggOWUzNDNjMDI5MTc1ZGVlNTRhMzU0ZDdkNTI4MjYzYjk0MGU0N2Jk
MS4uYzQwZTYyMjczZTAzNDgyYzUxZGUzZGQxOWUxMjQ2ODIyMTcyNTE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCkBAIC0yNywx
MyArMjcsMTMgQEAKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogCiAjaW5jbHVkZSAiTGFuZ3Vh
Z2UuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCiAjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PgogY2xhc3Mg
VGlueUxSVUNhY2hlUG9saWN5PEF0b21pY1N0cmluZywgUmV0YWluUHRyPENGTG9jYWxlUmVmPj4K
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gQ0YgaHlwaGVuYXRp
b24gZnVuY3Rpb25zIHVzZSBsb2NhbGUgKHJlZ2lvbmFsIGZvcm1hdHMpIGxhbmd1YWdlLCB3aGlj
aCBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1hdGNoIHByaW1hcnkgVUkgbGFuZ3VhZ2UsCiAgICAgICAg
IC8vIHNvIHdlIGNhbid0IHVzZSBkZWZhdWx0IGxvY2FsZSBoZXJlLiBTZWUgPHJkYXI6Ly9wcm9i
bGVtLzE0ODk3NjY0Pi4KLSAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBh
ZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRlZmF1bHRMYW5ndWFn
ZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRyPENGTG9jYWxl
UmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAg
ICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShsb2Nh
bGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CiAKQEAgLTY1LDYgKzY1LDkgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9y
TG9jYWxlKGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiBudWxscHRyOwogICAgIH0KIH07Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBjYW5IeXBoZW5hdGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
RWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA1Njg2OWYxNDVkZDc2ODFk
ZmViYjY4ODg5NWJjMTk1NTFlMTNiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKLXsK
LSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAiIjsK
LX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAgICByZXR1
cm4gImVuX3VzIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcAppbmRleCA0N2Y1NmYwOGIz
NTQ4MmNhZTA2NGQ0ZmIxOTQyY2FlNWM4YWIwNzIwLi40MTFjODA2MTRlMjY3Y2ZjNTExZmZhZGIw
YTk1MzYxYzgxYjU0OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcApAQCAtMjQsNyArMjQsNyBA
QAogCiAjaW5jbHVkZSA8TGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNWEwNWZh
NDkxOTVmYjMwYmY2OWRlZDU2MmQ1NDNiOGI2MTAxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2Vy
LmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyKiBjdXJyZW50
U2VhcmNoTG9jYWxlSUQoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2Nh
bGUuCi0gICAgcmV0dXJuICIiOwotfQotCi1jb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9j
YWxlSUQoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCi0gICAg
cmV0dXJuICJlbl91cyI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZkYWVlODFlNjA3ZTY3NTQzYmY2N2ZlODY1MzJhYjUzNWJmN2IyYzAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVUZXh0UHJvdmlk
ZXIuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8v
IFJlbG9jYXRlIHBvaW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbiBhcyByZXF1aXJl
ZC4KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVU
ZXh0KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIpCi17Ci0gICAgaWYgKHBvaW50
ZXIgPj0gc291cmNlLT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRpY19jYXN0PGNoYXIqPihzb3Vy
Y2UtPnBFeHRyYSkgKyBzb3VyY2UtPmV4dHJhU2l6ZSkgewotICAgICAgICAvLyBQb2ludGVyIHJl
ZmVyZW5jZXMgc291cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHN0YXRpY19j
YXN0PGNoYXIqPihkZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4ocG9pbnRlcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLT5wRXh0cmEpKTsK
LSAgICB9IGVsc2UgaWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBvaW50ZXIgPCByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5zaXplT2ZTdHJ1Y3QpIHsKLSAg
ICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0cnVjdHVyZSwgYnV0IG5v
dCBzb3VyY2UgZXh0cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVyID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oZGVzdGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVy
KSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkpOwotICAgIH0KLX0KLQot
VVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNv
dXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIEFTU0VSVF9VTlVT
RUQoZGVlcCwgIWRlZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGludDMyX3QgZXh0cmFTaXplID0gc291cmNlLT5leHRyYVNpemU7
Ci0gICAgZGVzdGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgZXh0cmFTaXplLCBz
dGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBkZXN0
aW5hdGlvbjsKLSAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7Ci0gICAg
aW50MzJfdCBmbGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAgICBpbnQgc2l6ZVRvQ29weSA9
IHN0ZDo6bWluKHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlvbi0+c2l6ZU9mU3RydWN0
KTsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRvQ29weSk7Ci0gICAgZGVz
dGluYXRpb24tPnBFeHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3RpbmF0aW9uLT5mbGFncyA9IGZs
YWdzOwotICAgIG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3VyY2UtPnBFeHRyYSwgZXh0
cmFTaXplKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9u
LT5jb250ZXh0KTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0
aW9uLT5wKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9u
LT5xKTsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAgICBjb25zdCB2b2lkKiBjaHVu
a0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRlc3RpbmF0aW9uLT5jaHVua0Nv
bnRlbnRzKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNodW5rQ29udGVu
dHMpOwotICAgIGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VUNoYXIqPihjaHVua0NvbnRlbnRzKTsKLSAgICByZXR1cm4gZGVzdGluYXRpb247Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1NGZj
NGM3Y2UyMzU5NDQyYzY3ZmFiZjE4YjVlZjZhYjFjNDNhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgVVRleHRQcm92aWRlcl9oCi0jZGVmaW5lIFVUZXh0UHJvdmlkZXJfaAot
Ci0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVu
dW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgewotICAgIE5vQ29udGV4dCwKLSAgICBQcmlv
ckNvbnRleHQsCi0gICAgUHJpbWFyeUNvbnRleHQKLX07Ci0KLWlubGluZSBVVGV4dFByb3ZpZGVy
Q29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCogdGV4dCwgaW50NjRfdCBu
YXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmIgfHwgbmF0aXZl
SW5kZXggPiB0ZXh0LT5iKQotICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6OlBy
aW1hcnlDb250ZXh0OwotICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0LT5iKQotICAgICAgICBy
ZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci0gICAgcmV0dXJuIFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci19Ci0KLWlubGluZSB2b2lkIGluaXRpYWxpemVDb250
ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25zdCBVVGV4dEZ1bmNzKiBmdW5j
cywgY29uc3Qgdm9pZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlv
ckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAgdGV4dC0+cEZ1bmNzID0g
ZnVuY3M7Ci0gICAgdGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8PCBVVEVYVF9QUk9WSURF
Ul9TVEFCTEVfQ0hVTktTOwotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAgdGV4dC0+
cCA9IHN0cmluZzsKLSAgICB0ZXh0LT5hID0gbGVuZ3RoOwotICAgIHRleHQtPnEgPSBwcmlvckNv
bnRleHQ7Ci0gICAgdGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsKLX0KLQotLy8gU2hhcmVk
IGltcGxlbWVudGF0aW9uIGZvciB0aGUgVVRleHRDbG9uZSBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNz
LgotCi1VVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4
dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwotCi0KLS8vIEhlbHBl
cnMgZm9yIHRoZSBVVGV4dEFjY2VzcyBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgotCi1pbmxpbmUg
aW50NjRfdCB1VGV4dEFjY2Vzc1BpbkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2NF90IGxpbWl0
KQotewotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0gMDsKLSAgICBlbHNlIGlm
IChpbmRleCA+IGxpbWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0OwotICAgIHJldHVybiBpbmRl
eDsKLX0KLQotaW5saW5lIGJvb2wgdVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKFVUZXh0
KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wg
Zm9yd2FyZCwgVUJvb2wmIGlzQWNjZXNzaWJsZSkKLXsKLSAgICBpZiAoZm9yd2FyZCkgewotICAg
ICAgICBpZiAobmF0aXZlSW5kZXggPj0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJ
bmRleCA8IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAgICAgICAgIGludDY0X3Qgb2Zm
c2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgICAgICAgICAg
Ly8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQg
ZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAgICAgICAgIHRleHQtPmNodW5r
T2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBz
dGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJs
ZSA9IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAobmF0aXZlSW5kZXggPj0gbmF0aXZlTGVuZ3RoICYmIHRleHQtPmNodW5rTmF0aXZlTGltaXQg
PT0gbmF0aXZlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IHRleHQt
PmNodW5rTGVuZ3RoOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChu
YXRpdmVJbmRleCA+IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPD0gdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCkgewotICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRp
dmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAgICAgICAvLyBFbnN1cmUg
Y2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2UuCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCkgOiAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuYXRpdmVJ
bmRleCA8PSAwICYmICF0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICB0ZXh0
LT5jaHVua09mZnNldCA9IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0
UHJvdmlkZXJMYXRpbjEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDY4NTJj
NzFlNTVlZjk3Y2EwYjBiYTFjZmY4ODBiOTk3MGY3M2M1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzk0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRl
ckxhdGluMS5oIgotCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBMYXRpbjEgcHJv
dmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiwgY29uc3QgVVRl
eHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRp
dmVMZW5ndGgoVVRleHQqKTsKLXN0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCos
IGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4
dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSopOwotc3Rh
dGljIGludDY0X3QgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4dCopOwot
c3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3QgVVRl
eHQqLCBpbnQ2NF90KTsKLXN0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ2xvc2UoVVRleHQqKTsKLQot
c3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHVUZXh0TGF0aW4xRnVuY3MgPSB7Ci0gICAg
c2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAwLAotICAgIHVUZXh0TGF0
aW4xQ2xvbmUsCi0gICAgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRMYXRpbjFB
Y2Nlc3MsCi0gICAgdVRleHRMYXRpbjFFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0
ciwKLSAgICB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlLAotICAgIHVUZXh0TGF0aW4xTWFw
TmF0aXZlSW5kZXhUb1VURjE2LAotICAgIHVUZXh0TGF0aW4xQ2xvc2UsCi0gICAgbnVsbHB0ciwK
LSAgICBudWxscHRyLAotICAgIG51bGxwdHIKLX07Ci0KLXN0YXRpYyBVVGV4dCogdVRleHRMYXRp
bjFDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRl
ZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFkZWVw
KTsKLQotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgVVRleHQqIHJlc3VsdCA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBzaXplb2YoVUNoYXIp
ICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHksIHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJ
TFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwotICAgIAotICAgIHJl
c3VsdC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gc291cmNlLT5wcm92aWRlclByb3BlcnRpZXM7Ci0g
ICAgCi0gICAgLy8gUG9pbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24sIGJ1dCB3aXRoIGFuIGVtcHR5
IGJ1ZmZlci4KLSAgICByZXN1bHQtPmNodW5rTmF0aXZlU3RhcnQgPSBzb3VyY2UtPmNodW5rTmF0
aXZlU3RhcnQ7Ci0gICAgcmVzdWx0LT5jaHVua05hdGl2ZUxpbWl0ID0gc291cmNlLT5jaHVua05h
dGl2ZVN0YXJ0OwotICAgIHJlc3VsdC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFydCk7Ci0gICAgcmVzdWx0LT5jaHVua09m
ZnNldCA9IDA7Ci0gICAgcmVzdWx0LT5jb250ZXh0ID0gc291cmNlLT5jb250ZXh0OwotICAgIHJl
c3VsdC0+YSA9IHNvdXJjZS0+YTsKLSAgICByZXN1bHQtPnBGdW5jcyA9ICZ1VGV4dExhdGluMUZ1
bmNzOwotICAgIHJlc3VsdC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciopcmVzdWx0LT5wRXh0cmE7
Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPihyZXN1bHQtPmNodW5rQ29udGVudHMpLCAw
LCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOwotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5n
dGgoVVRleHQqIHVUZXh0KQotewotICAgIHJldHVybiB1VGV4dC0+YTsKLX0KLQotc3RhdGljIFVC
b29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50NjRfdCBpbmRleCwgVUJvb2wg
Zm9yd2FyZCkKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotCi0gICAgaWYgKGZv
cndhcmQpIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgJiYg
aW5kZXggPj0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAgICAgICAgICAgIC8vIEFscmVh
ZHkgaW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KLSAgICAgICAgICAgIHVU
ZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCAmJiB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBs
ZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIE9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIGJ1dCB3
ZSBjYW4ndCBnZXQgaXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAgICAgICAg
ICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChp
bmRleCA8PSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRleCA+IHVUZXh0LT5jaHVua05h
dGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGluc2lkZSB0aGUgYnVmZmVyLiBT
ZXQgdGhlIG5ldyBvZmZzZXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0
aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAgICAg
ICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICB9Ci0gICAgICAgIGlmICghaW5kZXggJiYgIXVU
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGF0IHRoZSBi
ZWdpbm5pbmc7IGNhbid0IGdvIGFueSBmYXJ0aGVyLgotICAgICAgICAgICAgdVRleHQtPmNodW5r
T2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dCA9IGluZGV4OwotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHVUZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0ICsgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7Ci0gICAgICAgIGlm
ICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKLSAgICAgICAgICAgIHVUZXh0LT5j
aHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOwotCi0gICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9
IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBpbmRl
eDsKLSAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQotICAgICAg
ICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7Ci0KLSAgICAgICAgdVRleHQt
PmNodW5rTmF0aXZlU3RhcnQgPSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIFVUZXh0V2l0aEJ1
ZmZlcklubGluZUNhcGFjaXR5OwotICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlU3RhcnQg
PCAwKQotICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotCi0gICAgICAg
IHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQt
PmNodW5rTmF0aXZlU3RhcnQpOwotICAgIH0KLSAgICB1VGV4dC0+Y2h1bmtMZW5ndGggPSBzdGF0
aWNfY2FzdDxpbnQzMl90Pih1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHVUZXh0LT5jaHVua05h
dGl2ZVN0YXJ0KTsKLQotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFy
Kj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0
LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7Ci0KLSAgICB1VGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1p
dCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKLQotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMg
aW50MzJfdCB1VGV4dExhdGluMUV4dHJhY3QoVVRleHQqIHVUZXh0LCBpbnQ2NF90IHN0YXJ0LCBp
bnQ2NF90IGxpbWl0LCBVQ2hhciogZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksIFVFcnJvckNv
ZGUqIHN0YXR1cykKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotICAgIGlmIChV
X0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRlc3RDYXBh
Y2l0eSA8IDAgfHwgKCFkZXN0ICYmIGRlc3RDYXBhY2l0eSA+IDApKSB7Ci0gICAgICAgICpzdGF0
dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBsaW1pdCB8fCAobGltaXQgLSBzdGFydCkg
PiBJTlQzMl9NQVgpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJS
T1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdGFydCA+IGxlbmd0aCkK
LSAgICAgICAgc3RhcnQgPSBsZW5ndGg7Ci0gICAgaWYgKGxpbWl0ID4gbGVuZ3RoKQotICAgICAg
ICBsaW1pdCA9IGxlbmd0aDsKLQotICAgIGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7Ci0gICAgCi0g
ICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRlc3RDYXBhY2l0
eSA+IDAgJiYgIWRlc3QpIHsKLSAgICAgICAgaW50MzJfdCB0cmltbWVkTGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKLSAgICAgICAgaWYgKHRyaW1tZWRMZW5ndGggPiBkZXN0
Q2FwYWNpdHkpCi0gICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0gZGVzdENhcGFjaXR5OwotCi0g
ICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hh
cio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHJpbW1l
ZExlbmd0aCkpOwotICAgIH0KLQotICAgIGlmIChsZW5ndGggPCBkZXN0Q2FwYWNpdHkpIHsKLSAg
ICAgICAgZGVzdFtsZW5ndGhdID0gMDsKLSAgICAgICAgaWYgKCpzdGF0dXMgPT0gVV9TVFJJTkdf
Tk9UX1RFUk1JTkFURURfV0FSTklORykKLSAgICAgICAgICAgICpzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgfSBlbHNlIGlmIChsZW5ndGggPT0gZGVzdENhcGFjaXR5KQotICAgICAgICAqc3Rh
dHVzID0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsKLSAgICBlbHNlCi0gICAgICAg
ICpzdGF0dXMgPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKLQotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQzMl90PihsZW5ndGgpOwotfQotCi1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU1h
cE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0KiB1VGV4dCkKLXsKLSAgICByZXR1cm4gdVRleHQt
PmNodW5rTmF0aXZlU3RhcnQgKyB1VGV4dC0+Y2h1bmtPZmZzZXQ7Ci19Ci0KLXN0YXRpYyBpbnQz
Ml90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0IFVUZXh0KiB1VGV4dCwg
aW50NjRfdCBuYXRpdmVJbmRleCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHVUZXh0LCB1VGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCA+PSBuYXRpdmVJbmRleCk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1VGV4
dCwgbmF0aXZlSW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDMyX3Q+KG5hdGl2ZUluZGV4KTsKLX0KLQotc3RhdGljIHZvaWQgdVRleHRM
YXRpbjFDbG9zZShVVGV4dCogdVRleHQpCi17Ci0gICAgdVRleHQtPmNvbnRleHQgPSBudWxscHRy
OwotfQotCi1VVGV4dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1
dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVycm9y
Q29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAgICAg
KnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+
dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBpZiAoVV9G
QUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAgdGV4
dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5wRnVuY3MgPSAmdVRleHRMYXRpbjFGdW5jczsKLSAg
ICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKil0ZXh0LT5wRXh0cmE7Ci0gICAgbWVtc2V0
KGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgMCwgc2l6ZW9mKFVDaGFy
KSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKLQotICAgIHJldHVybiB0ZXh0Owot
fQotCi0KLS8vIExhdGluMUNvbnRleHRBd2FyZSBwcm92aWRlcgotCi1zdGF0aWMgVVRleHQqIHVU
ZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBV
RXJyb3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2
ZUxlbmd0aChVVGV4dCopOwotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNj
ZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOwotc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFD
b250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQz
Ml90LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNs
b3NlKFVUZXh0Kik7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0TGF0aW4x
Q29udGV4dEF3YXJlRnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAsCi0g
ICAgMCwKLSAgICAwLAotICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUsCi0gICAgdVRl
eHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0
QXdhcmVBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0LAotICAgIG51
bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgdVRl
eHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0g
ICAgbnVsbHB0cgotfTsKLQotc3RhdGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQpCi17
Ci0gICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICByZXR1cm4gVVRleHRQcm92
aWRlckNvbnRleHQ6Ok5vQ29udGV4dDsKLSAgICByZXR1cm4gdGV4dC0+Y2h1bmtDb250ZW50cyA9
PSB0ZXh0LT5wRXh0cmEgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBV
VGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0
X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewot
ICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7Ci0gICAgaWYg
KGZvcndhcmQpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID49IHRleHQtPmIgJiYgbmF0
aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
ID0gbmF0aXZlSW5kZXg7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJ
bmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIGlmICh0ZXh0
LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVuZ3RoKQotICAgICAgICAgICAgdGV4dC0+Y2h1
bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NF
UlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7
Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleDsKLSAgICAgICAg
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+ZXh0cmFTaXplIC8g
c2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPCB0ZXh0
LT5iKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7Ci0gICAg
fQotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmlu
ZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAgICBBU1NFUlQo
bGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQt
PmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKLSAgICB0ZXh0LT5uYXRpdmVJ
bmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIFN0cmluZ0ltcGw6OmNvcHlD
aGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0
PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQt
PmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKLX0KLQotc3Rh
dGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0gICAgdGV4dExhdGluMUNvbnRl
eHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92
ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90
IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtD
b250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwg
dGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQobmF0
aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJ
bmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2Fy
ZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVu
Z3RoKTsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5jaHVua05h
dGl2ZUxpbWl0ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7Ci0g
ICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGlu
dDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAg
IC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNl
dCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1
bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xl
bmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1By
aW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRp
dmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRl
bnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKLSAgICB0ZXh0LT5j
aHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKLSAgICB0
ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4x
Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNl
LCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0Q2xv
bmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRpYyBp
bnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQot
ewotICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4
LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+Y29udGV4dCkKLSAgICAgICAgcmV0
dXJuIEZBTFNFOwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRMYXRpbjFDb250ZXh0
QXdhcmVOYXRpdmVMZW5ndGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwotICAgIGlm
ICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2
ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuIGlzQWNjZXNz
aWJsZTsKLSAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5kZXgs
IG5hdGl2ZUxlbmd0aCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRleHQg
PSB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVVRl
eHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQs
IG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFBy
b3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50
Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNv
bnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2Fy
ZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZv
cndhcmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
TW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndh
cmQpOwotICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6
UHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1By
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwot
ICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpb3JDb250ZXh0KTsKLSAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRj
aFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGludDMyX3QgdVRleHRMYXRp
bjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBp
bnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAgLy8gSW4gdGhlIHByZXNlbnQg
Y29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlv
bnMKLSAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VS
Uk9SOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRB
d2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOwot
fQotCi1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRo
QnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0
aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVy
cm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAg
IHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAgICAgKnN0
YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6
ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpz
dGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKHRleHQsICZ0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHBy
aW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VU
ZXh0UHJvdmlkZXJMYXRpbjEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VU
ZXh0UHJvdmlkZXJMYXRpbjEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlkNWQy
ODRiZWMwYTgxYjNmODdhYWM2ODNiNDhlMzQ4MGU1MjRlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKLSNkZWZpbmUgVVRleHRQ
cm92aWRlckxhdGluMV9oCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvTENoYXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBpbnQgVVRl
eHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkgPSAxNjsKLQotc3RydWN0IFVUZXh0V2l0aEJ1ZmZl
ciB7Ci0gICAgVVRleHQgdGV4dDsKLSAgICBVQ2hhciBidWZmZXJbVVRleHRXaXRoQnVmZmVySW5s
aW5lQ2FwYWNpdHldOwotfTsKLQotVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVUZXh0
V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBs
ZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2Fy
ZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFy
KiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50
IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlckxhdGluMV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhYWM0OGM4MTUxY2UwMTI1MzZhOGM0
YjE1YWFlZGI4NDg2YjBjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRG
MTYuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCi0KLSNpbmNs
dWRlICJVVGV4dFByb3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVVRGMTZD
b250ZXh0QXdhcmUgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3
YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7Ci1zdGF0
aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0Kik7Ci1z
dGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCosIGludDY0X3Qs
IFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KFVU
ZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7Ci1z
dGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKLQotc3RhdGlj
IGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNzID0gewot
ICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLAotICAgIDAsCi0gICAgMCwKLSAgICB1VGV4
dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2
ZUxlbmd0aCwKLSAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzLAotICAgIHVUZXh0VVRG
MTZDb250ZXh0QXdhcmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBu
dWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlLAot
ICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyCi19OwotCi1zdGF0aWMgaW5s
aW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJlbnRD
b250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50
cykKLSAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7Ci0gICAg
cmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJDb250
ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250
ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0
aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0
ZXh0LT5wKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRl
eCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUlu
ZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQt
PmI7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICBpbnQ2
NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0
YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1
dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0aCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua0xlbmd0
aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1p
dCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXgg
LSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMg
d2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3Ig
Y2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMy
X3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRl
eHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQot
ewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRz
ID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25z
dCBVQ2hhcio+KHRleHQtPnApOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1h
cnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQot
Ci1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEp
OwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5k
ZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQg
PyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0
aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBu
YXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5i
OwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5uYXRpdmVJbmRl
eGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50NjRfdCBvZmZzZXQgPSBuYXRp
dmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIG9m
ZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCBy
YW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWlu
KG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nh
c3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKLX0KLQotc3RhdGlj
IHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRl
eHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3
YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnApOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJ
blByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsK
LX0KLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRl
c3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBz
dGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2Us
IGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVURjE2Q29u
dGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQotewotICAgIHJldHVybiB0ZXh0LT5h
ICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nl
c3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCi17Ci0g
ICAgaWYgKCF0ZXh0LT5jb250ZXh0KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgaW50NjRf
dCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKHRleHQp
OwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodVRleHRBY2Nlc3NJbkNodW5rT3JP
dXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNj
ZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Ci0gICAgbmF0aXZlSW5kZXgg
PSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAgIFVU
ZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2Q29udGV4dEF3YXJl
R2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29u
dGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsK
LSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0
KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAo
Y3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQot
ICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4
dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBu
YXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9IGVsc2UgaWYgKG5ld0Nv
bnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICB0
ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQo
bmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKLSAgICAg
ICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZl
SW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAgIHJldHVybiBUUlVFOwot
fQotCi1zdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCos
IGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2Rl
KQotewotICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBp
cyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCi0gICAgLy8gdGhhdCBkbyBub3QgcGVyZm9y
bSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAq
ZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3Rh
dGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewotICAg
IHRleHQtPmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlblVURjE2Q29udGV4dEF3
YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywgdW5zaWdu
ZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVu
Z3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewotICAg
ICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0gICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7Ci0gICAg
aWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92
aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGE3YjQ3ZGQ3MzRiYWE3MzA4MDM0M2UwNTgwNWQ3MmUwMjNhN2E5ZTguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyVVRGMTZfaAotI2Rl
ZmluZSBVVGV4dFByb3ZpZGVyVVRGMTZfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVUZXh0KiBvcGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4
dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVD
aGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqKTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlclVURjE2
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3Vu
ZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJp
ZXMubW0KaW5kZXggYjg2MGEzNTI5MmMzNTFiNDNiNjk0Nzg4MTVmZGRhMWMxYjI2ZDJiOC4uZDhl
ZTU5OGM3NDM4YjU3MjBjZWVlOTgxN2RlZjNlYWJhOTU1Zjk4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2LDggKzI2
LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGV4dEJvdW5kYXJpZXMuaCIKIAot
I2ltcG9ydCAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKLSNpbXBvcnQgIlRleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1UuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nVG9rZW5pemVy
Lmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHVuaWNvZGUv
dWJyay5oPgpAQCAtMzYsNiArMzQsOCBAQAogI2ltcG9ydCA8dW5pY29kZS91dHlwZXMuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
KyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmg+CiAjaW1wb3J0IDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0
b3JJbnRlcm5hbElDVU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU1Mzk3
NmZiMWQ1ZDcyYmNhNzQ2NzM2YjY4MzcxNTA2YWE4ZDY0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21h
Yy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
OTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQgbWF4TG9jYWxlU3Ry
aW5nTGVuZ3RoID0gMzI7Ci0KLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0
ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxp
c3RSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigiQXBw
bGVUZXh0QnJlYWtMb2NhbGUiKSwKLSAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlv
biwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSk7Ci0g
ICAgaWYgKCFsb2NhbGUgfHwgQ0ZHZXRUeXBlSUQobG9jYWxlLmdldCgpKSAhPSBDRlN0cmluZ0dl
dFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KGxvY2FsZS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCi17Ci0gICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IGxhbmd1YWdlc0FycmF5ID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5n
dWFnZXMoKSk7Ci0gICAgaWYgKCFsYW5ndWFnZXNBcnJheSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgaWYgKCFDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzQXJyYXkuZ2V0KCkpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzQXJyYXkuZ2V0KCksIDApKTsKLX0KLQot
c3RhdGljIHZvaWQgZ2V0TG9jYWxlKENGU3RyaW5nUmVmIGxvY2FsZSwgY2hhciBsb2NhbGVTdHJp
bmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICAvLyBFbXB0eSBzdHJpbmcg
bWVhbnMgInJvb3QgbG9jYWxlIiwgYW5kIHRoYXQgaXMgd2hhdCB3ZSB1c2UgaWYgd2UgY2FuJ3Qg
Z2V0IGEgcHJlZmVyZW5jZS4KLSAgICBsb2NhbGVTdHJpbmdCdWZmZXJbMF0gPSAwOwotICAgIGlm
ICghbG9jYWxlKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZTdHJpbmdHZXRDU3RyaW5nKGxvY2Fs
ZSwgbG9jYWxlU3RyaW5nQnVmZmVyLCBtYXhMb2NhbGVTdHJpbmdMZW5ndGgsIGtDRlN0cmluZ0Vu
Y29kaW5nQVNDSUkpOwotfQotCi1zdGF0aWMgdm9pZCBnZXRTZWFyY2hMb2NhbGUoY2hhciBsb2Nh
bGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICBnZXRMb2NhbGUo
dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0K
LWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNoYXIg
bG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGljIGJv
b2wgZ290U2VhcmNoTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RTZWFyY2hMb2NhbGUpIHsK
LSAgICAgICAgZ2V0U2VhcmNoTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAgICAgIGdv
dFNlYXJjaExvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJpbmdCdWZm
ZXI7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldFRleHRCcmVha0xvY2FsZShjaGFyIGxvY2FsZVN0cmlu
Z0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQotewotICAgIC8vIElmIHRoZXJlIGlzIG5v
IHRleHQgYnJlYWsgbG9jYWxlLCB1c2UgdGhlIHRvcCBsYW5ndWFnZSBwcmVmZXJlbmNlLgotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlID0gdGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5j
ZSgpOwotICAgIGlmIChsb2NhbGUpIHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2Fub25pY2FsTG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExhbmd1
YWdlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlLmdldCgp
KSkpCi0gICAgICAgICAgICBsb2NhbGUgPSBjYW5vbmljYWxMb2NhbGU7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIGxvY2FsZSA9IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpOwotICAgIGdldExvY2FsZShs
b2NhbGUuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJl
bnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5nQnVm
ZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGljIGJvb2wgZ290VGV4dEJyZWFr
TG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RUZXh0QnJlYWtMb2NhbGUpIHsKLSAgICAgICAg
Z2V0VGV4dEJyZWFrTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAgICAgIGdvdFRleHRC
cmVha0xvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJpbmdCdWZmZXI7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTdlMTcwNWVmNTRiOTM5MjE0ZGExODQ4MGRiN2EzMmMz
MmM5MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkK
LXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAi
IjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAgICAv
LyBVc2luZyBlbl9VU19QT1NJWCBub3cgc28gd29yZCBzZWxlY3Rpb24gaW4gYWRkcmVzcyBmaWVs
ZCB3b3JrcyBhcyBleHBlY3RlZCBhcyBiZWZvcmUgKGRvdWJsZS1jbGlja2luZwotICAgIC8vIGlu
IGEgVVJMIHNlbGVjdHMgYSB3b3JkIGRlbGltaXRlZCBieSBwZXJpb2RzIHJhdGhlciB0aGFuIHNl
bGVjdGluZyB0aGUgZW50aXJlIFVSTCkuCi0gICAgLy8gSG93ZXZlciwgdGhpcyBpcyBub3QgZW50
aXJlbHkgY29ycmVjdCAtIHdlIHNob3VsZCBob25vciB0aGUgc3lzdGVtIGxvY2FsZSBpbiB0aGUg
bm9ybWFsIGNhc2UuCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS82Nzg2NzAzPiBTaG91
bGQgdXNlIHN5c3RlbSBsb2NhbGUgZm9yIHRleHQgYnJlYWtpbmcKLSAgICByZXR1cm4gImVuX1VT
X1BPU0lYIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggZTM1NDYwMzE5NTAzMjU4Y2YyOWY3NDNhNWI4NDEwZmYyNGU5ZWViNy4uMmVkNWI1YTk1
ZWVjM2MwNTBjZTFiZDQ5ZGZhMDQ1YjYwNjcxMzFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogCiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
aW5kZXggOGI0ZWMzZjhlZWI5MzJjMWM3ZGM1ZGUxNjY5ZjA4YzQwYmEwNmVjYi4uMmE1YWQ1ZDQ1
MDk0MjU3NzZiOWFjMDQwMDAzNmZjNzYwMWI2ZTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRleHQu
aCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2lu
Y2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBiYWNjNWMyNTNhYzNlN2M5NWQ1YzZm
YTlmMzYxNzU1MjQ0NWE4OTUyLi5kNjNlNjA4OWNkZTQwMzdjNTVlNWYxYzhjNjIyODFlOGFjYTYy
YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTI3LDggKzI3LDgg
QEAKICNpbmNsdWRlICJSZW5kZXJUZXh0TGluZUJveGVzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGlu
ZUxheW91dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVu
dEl0ZXJhdG9yLmgKaW5kZXggYzc5MDZjMTdkYzhlMDE0ZWQwNTBmOTVmY2IwMWNjODZiNTEwMWQ2
NC4uMTA3N2JjYmJmMTYwOTU1NGJjZWJiNzc0NThmMjgwODVmZjYyNmFjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4
dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUmVuZGVy
TGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIgot
I2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJicmVha19saW5lcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAppbmRleCAwNzU3
NmJiYzhiZDRjZmY2ZjUzYWIzNGIwYzEzNjVhM2Y4NDRhOGNhLi5lNGI5NTM2ZmQxYmVkZjFjZTM2
M2Q2NjAxMWQ1MTIzNTkwZWY4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvYnJlYWtfbGluZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19s
aW5lcy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJicmVha19saW5lcy5oIgogCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNs
dWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvYnJlYWtfbGluZXMuaAppbmRleCA5ZTA0ZDFlNDI4Y2EyNjA4MzVhYmViZjk1ZWVjNjQzODli
ZmVlNGQ2Li5hMjk0NjEyOWNiYTZlYjkxNmRhYjllNTFhODBlY2JlOWUxN2ZiMmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaApAQCAtMjIsOSArMjIsOSBAQAogI2lmbmRl
ZiBicmVha19saW5lc19oCiAjZGVmaW5lIGJyZWFrX2xpbmVzX2gKIAotI2luY2x1ZGUgIlRleHRC
cmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
QnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApp
bmRleCAyNzc0ZjI2ODU2MTE5ODNkZjVjMzQ4MzllZGU3MDQ2ZGVkMjZhM2ZkLi5jODlmZTE3Y2Nk
MDY5YTY1Y2UxM2Q4MWFjN2UxYTNjODlmNTE4YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVCcmVha2VyLmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGlu
ZUhlYWRlcnMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283241</attachid>
            <date>2016-07-08 19:22:05 -0700</date>
            <delta_ts>2016-07-09 00:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159594-20160708192129.patch</filename>
            <type>text/plain</type>
            <size>441094</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLjM0M2FmYWRlZDQwYTE4MDQ4MjRhM2ZiYTM2MTNhZWIzZWVmZWE5
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMwIEBACisyMDE2LTA3LTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2luZyBpdGVyYXRvciBj
b2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1ZpZXcgYSBHcmFwaGVt
ZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRvciBuZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9yCisgICAgICAgIGNv
ZGUuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BsYXRmb3JtRWZsLmNtYWtlOgor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0
Zi9UaW55TFJVQ2FjaGUuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBv
b2xJQ1UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmguCisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9v
bDo6TGluZUJyZWFrSXRlcmF0b3JQb29sKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0
b3JQb29sOjpzaGFyZWRQb29sKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0b3JQb29s
OjptYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZCk6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0
ZXJhdG9yUG9vbDo6dGFrZSk6CisgICAgICAgIChXVEY6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6
cHV0KToKKyAgICAgICAgKiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcC4K
KyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKFdURjo6c2V0VGV4dEZvckl0ZXJhdG9y
KToKKyAgICAgICAgKFdURjo6c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6d29yZEJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpzZW50ZW5jZUJyZWFr
SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKToKKyAgICAg
ICAgKFdURjo6YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6cmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6bWFwTGluZUl0ZXJhdG9yTW9kZVRv
UnVsZXMpOgorICAgICAgICAoV1RGOjppc0NKS0xvY2FsZSk6CisgICAgICAgIChXVEY6Om9wZW5M
aW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjpjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtGaXJzdCk6CisgICAgICAgIChXVEY6OnRleHRCcmVh
a0xhc3QpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtOZXh0KToKKyAgICAgICAgKFdURjo6dGV4
dEJyZWFrUHJldmlvdXMpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtQcmVjZWRpbmcpOgorICAg
ICAgICAoV1RGOjp0ZXh0QnJlYWtGb2xsb3dpbmcpOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtD
dXJyZW50KToKKyAgICAgICAgKFdURjo6aXNUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjppc1dv
cmRUZXh0QnJlYWspOgorICAgICAgICAoV1RGOjpudW1HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAg
ICAgKFdURjo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgICogd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaC4KKyAgICAgICAgKFdURjo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjpMYXp5TGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6On5MYXp5TGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RG
OjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnN0cmluZyk6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6aXNMb29zZUNKS01vZGUpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJy
ZWFrSXRlcmF0b3I6Omxhc3RDaGFyYWN0ZXIpOgorICAgICAgICAoV1RGOjpMYXp5TGluZUJyZWFr
SXRlcmF0b3I6OnNlY29uZFRvTGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6c2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjp1cGRhdGVQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I6OnJlc2V0UHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6TGF6eUxp
bmVCcmVha0l0ZXJhdG9yOjpwcmlvckNvbnRleHRMZW5ndGgpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OmdldCk6CisgICAgICAgIChXVEY6OkxhenlMaW5lQnJlYWtJdGVy
YXRvcjo6cmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciop
OgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVS5oLgorICAgICAgICAqIHd0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVRWZsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRCk6CisgICAgICAgICogd3RmL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VHdGsuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmNwcC4KKyAgICAgICAgKFdURjo6Zml4UG9pbnRlcik6CisgICAgICAgIChX
VEY6OnVUZXh0Q2xvbmVJbXBsKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQ
cm92aWRlci5oLgorICAgICAgICAoV1RGOjp1VGV4dFByb3ZpZGVyQ29udGV4dCk6CisgICAgICAg
IChXVEY6OmluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKToKKyAgICAgICAgKFdU
Rjo6dVRleHRBY2Nlc3NQaW5JbmRleCk6CisgICAgICAgIChXVEY6OnVUZXh0QWNjZXNzSW5DaHVu
a09yT3V0T2ZSYW5nZSk6CisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRp
bjEuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlckxhdGluMS5jcHAuCisgICAgICAgIChXVEY6OnVUZXh0TGF0aW4xQ2xvbmUpOgor
ICAgICAgICAoV1RGOjp1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCk6CisgICAgICAgIChXVEY6OnVU
ZXh0TGF0aW4xQWNjZXNzKToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFFeHRyYWN0KToKKyAg
ICAgICAgKFdURjo6dVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZSk6CisgICAgICAgIChXVEY6
OnVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KToKKyAgICAgICAgKFdURjo6dVRleHRM
YXRpbjFDbG9zZSk6CisgICAgICAgIChXVEY6Om9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKToKKyAg
ICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KToKKyAg
ICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KToK
KyAgICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRl
eHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250
ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JD
b250ZXh0KToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSk6Cisg
ICAgICAgIChXVEY6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKToKKyAgICAg
ICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MpOgorICAgICAgICAoV1RGOjp1
VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGlu
MUNvbnRleHRBd2FyZUNsb3NlKToKKyAgICAgICAgKFdURjo6b3BlbkxhdGluMUNvbnRleHRBd2Fy
ZVVUZXh0UHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0
aW4xLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyTGF0aW4xLmguCisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJV
VEYxNi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuY3BwLgorICAgICAgICAoV1RGOjp0ZXh0VVRGMTZDb250ZXh0QXdh
cmVHZXRDdXJyZW50Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW1hcnlDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2Q29udGV4dEF3
YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNv
bnRleHRBd2FyZUNsb25lKToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZU5h
dGl2ZUxlbmd0aCk6CisgICAgICAgIChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3Mp
OgorICAgICAgICAoV1RGOjp1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCk6CisgICAgICAg
IChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9zZSk6CisgICAgICAgIChXVEY6Om9wZW5V
VEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oLgorICAgICAgICAqIHd0Zi90ZXh0L21hYy9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5t
bS4KKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSk6CisgICAgICAgIChX
VEY6OnRvcExhbmd1YWdlUHJlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OmdldExvY2FsZSk6Cisg
ICAgICAgIChXVEY6OmdldFNlYXJjaExvY2FsZSk6CisgICAgICAgIChXVEY6OmN1cnJlbnRTZWFy
Y2hMb2NhbGVJRCk6CisgICAgICAgIChXVEY6OmdldFRleHRCcmVha0xvY2FsZSk6CisgICAgICAg
IChXVEY6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6CisgICAgICAgICogd3RmL3RleHQvd2lu
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdp
bi5jcHAuCisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKwogMjAxNi0wNy0wOCAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIwMjc5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlM2EyMjBlOTkzNWZkMzc1ZjEx
MGFhZTg5YmE0ZWNiNTkxMGVjZjcwLi40MmZkZmEwMWEyMzAwNmNkMDQ5MTM1OWUyMTdlYTk0NjM4
MzA1M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU0IEBACisyMDE2LTA3LTA4ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2lu
ZyBpdGVyYXRvciBjb2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1Zp
ZXcgYSBHcmFwaGVtZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRv
ciBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9y
CisgICAgICAgIGNvZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMg
bm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRv
bS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHA6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAqIGVk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKiBodG1sL1RleHRJbnB1dFR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHA6CisgICAgICAgIChXVEY6OlJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZhbHVlRm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZh
bHVlRm9yS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQ
b29sOjpMaW5lQnJlYWtJdGVyYXRvclBvb2wpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6bWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjp0YWtl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbDo6cHV0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojppbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6c2V0VGV4dEZvckl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldENv
bnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3
b3JkQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZW50ZW5jZUJy
ZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3Vyc29yTW92ZW1lbnRJ
dGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphY3F1aXJlTGluZUJyZWFrSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZUxpbmVCcmVha0l0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1hcExpbmVJdGVyYXRvck1vZGVUb1J1
bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ0pLTG9jYWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5MaW5lQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6On5Ob25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVh
a0ZpcnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVha0xhc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFrTmV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjp0ZXh0QnJlYWtQcmV2aW91cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp0ZXh0QnJlYWtQcmVjZWRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJy
ZWFrRm9sbG93aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRCcmVha0N1cnJl
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNUZXh0QnJlYWspOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aXNXb3JkVGV4dEJyZWFrKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxp
bmVCcmVha0l0ZXJhdG9yOjpMYXp5TGluZUJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjp+TGF6eUxpbmVCcmVha0l0ZXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6
aXNMb29zZUNKS01vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpsYXN0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
enlMaW5lQnJlYWtJdGVyYXRvcjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c2V0UHJpb3JDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6dXBkYXRl
UHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxhenlMaW5lQnJlYWtJ
dGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpwcmlvckNvbnRleHRMZW5ndGgpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpnZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpyZXNldFN0cmluZ0FuZFJlbGVh
c2VJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yOjpvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciopOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Zml4UG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dENsb25lSW1w
bCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6dVRleHRQcm92aWRlckNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRBY2Nlc3NQaW5JbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dExhdGluMUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4
dExhdGluMUV4dHJhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFN
YXBPZmZzZXRUb05hdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGlu
MU1hcE5hdGl2ZUluZGV4VG9VVEYxNik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4
dExhdGluMUNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5MYXRpbjFVVGV4
dFByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRpbjFDb250ZXh0
QXdhcmVHZXRDdXJyZW50Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJ
blByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29u
dGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
cik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVU
RjE2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJl
bnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRB
d2FyZU1vdmVJblByaW1hcnlDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRl
eHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0VVRGMTZDb250
ZXh0QXdhcmVDbG9uZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dFVURjE2Q29u
dGV4dEF3YXJlTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0
VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRl
eHRVVEYxNkNvbnRleHRBd2FyZUV4dHJhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
dVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvcExhbmd1YWdlUHJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpnZXRMb2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2VhcmNoTG9jYWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRUZXh0QnJlYWtMb2NhbGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9icmVha19saW5lcy5jcHA6CisgICAgICAgICogcmVuZGVyaW5n
L2JyZWFrX2xpbmVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaDoK
KwogMjAxNi0wNy0wOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAg
ICAgUHJldmVudCBmdWxsc2NyZWVuIHZpZGVvIGRpbWVuc2lvbiBzdGF0ZSBmcm9tIGJlaW5nIHJl
c2V0IGFmdGVyIGNvbmZpZ3VyaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNDM0ZjY2ZTMzZTljY2Q4Yzk1MzdmNzU3MGVmMmE4MmIwN2VjM2QzMS4uNGJl
NGZjMWRhNDRjYzlhMThmMjEyZTgyMGRiMzU4MGJjNmIyOWVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSwxNSBAQAogCQkxQUNBREQ4NDE4
ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNBREQ4MjE4ODQ0ODAx
MDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi87IH07CiAJCTFB
RkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2FzdHNDRi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi87IH07CiAJCTFBRkRFNjUzMTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRp
b25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
REU2NTIxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmggKi87IH07CisJCTFDMTgxQzdGMUQz
MDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM3RDFEMzA3OERBMDBGNUZBMTYgLyog
VGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OworCQkxQzE4MUM4MDFEMzA3OERBMDBGNUZBMTYg
LyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDMTgxQzdFMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5oICovOyB9OworCQkxQzE4MUM4RjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi87IH07CisJCTFDMTgxQzkw
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QTFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlci5oICovOyB9OworCQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQ
cm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5j
cHAgKi87IH07CisJCTFDMTgxQzkyMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4
MUM4QzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovOyB9OworCQkx
QzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTgxQzhEMUQzMDdBQjgw
MEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovOyB9OworCQkxQzE4MUM5NDFEMzA3
QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlclVURjE2LmggKi87IH07CisJCTFDMTgxQzk2MUQzMDgwMEEwMEY1RkExNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxODFDOTUxRDMwODAwQTAwRjVGQTE2IC8qIFRleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gKi87IH07CiAJCTFGQTQ3QzhBMTUyNTAyREEw
MDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg4MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmNwcCAqLzsgfTsKIAkJMUZBNDdDOEIxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJl
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3
Qzg5MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmggKi87IH07CiAJCTI2MTQ3QjBB
MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBE
REI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovOyB9OwpAQCAtNDE0LDYgKzQy
MywxNyBAQAogCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNV
c2VkQnlTYWZhcmkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
ZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBRkRFNjUyMTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzE4MUM3RDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFrSXRl
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM3RTFEMzA3OERB
MDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODIxRDMwNzlBQzAwRjVGQTE2IC8qIFRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4OTFEMzA3QUI4
MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMxODFDOEExRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxh
dGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDOEMxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGluMS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzE4MUM4RDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJV
VEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMTgxQzhFMUQzMDdBQjgw
MEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgcGF0aCA9IG1hYy9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRkE0N0M4
ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVRocmVhZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02ODgsNiArNzA4LDE5IEBACiAJCQluYW1lID0gTGlicmFyaWVzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMxODFDODgxRDMwN0FCODAwRjVGQTE2IC8qIGljdSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMxODFDODkxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovLAorCQkJCTFDMTgxQzhBMUQzMDdB
QjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggKi8sCisJCQkJMUMxODFDOEIxRDMwN0FCODAw
RjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovLAorCQkJCTFDMTgxQzhDMUQzMDdB
QjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8sCisJCQkJMUMxODFDOEQxRDMw
N0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8sCisJCQkJMUMxODFDOEUx
RDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxRkE0N0M4NzE1
MjUwMkRBMDA1NjhEMUIgLyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTc1MSw2ICs3ODQsNyBAQAogCQlBNUJBMTVGMTE4MjQzMzlGMDBBODJFNjkg
LyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkx
QzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1h
Yy5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5t
bSAqLywKIAkJCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tICovLAog
CQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLywKQEAg
LTEwNDMsNiArMTA3Nyw3IEBACiAJCUE4QTQ3MzFCMTUxQTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzE4MUM4ODFE
MzA3QUI4MDBGNUZBMTYgLyogaWN1ICovLAogCQkJCUE1QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAv
KiBjZiAqLywKIAkJCQlBNUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogbWFjICovLAogCQkJCUE4
QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZhc3RQYXRoLmggKi8sCkBAIC0xMDc5LDYg
KzExMTQsMTAgQEAKIAkJCQk3MEVDQTYwQzFCMDI0MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmlu
Z0ltcGwuaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmNw
cCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggKi8sCisJ
CQkJMUMxODFDN0QxRDMwNzhEQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLywK
KwkJCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLywK
KwkJCQkxQzE4MUM4MTFEMzA3OTdDMDBGNUZBMTYgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggKi8sCisJCQkJMUMxODFDODIxRDMwNzlBQzAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xMjQ3LDYgKzEyODYsNyBAQAogCQkJCTJDMDUzODU0MTVCQzgxOTAw
MEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDcz
RDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVkU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQzE4MUM5MDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRDQxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hGdW5jdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0Q1MTUxQTgyNUIwMDQxMjNGRiAvKiBIYXNoSXRlcmF0b3Jz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNENjE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaE1h
cC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjYzLDYgKzEzMDMsNyBAQAogCQkJCTdDREQ3RkZBMTg2
RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0FD
OTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MERB
MDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMx
ODFDOTQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUxNjQ2QjFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMjcyLDYgKzEzMTMsNyBAQAogCQkJCUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNG
RiAvKiBNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0
MTIzRkYgLyogTUQ1LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJD
MzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4MUM4MDFEMzA3OERBMDBG
NUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VC
MTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzMyLDYgKzEzNzQsNyBAQAogCQkJCUE3NDg3NDUzMTdBMEJEQUUw
MEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQy
NjE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3
NDI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUMxODFDOTIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVCMDA0MTIzRkYgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyog
U3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MDIsNiArMTU0NSw3IEBACiAJCQkJ
QThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTU1NkY1MThBMENDMTgwMDZGNDhGQiAvKiBDcnlw
dG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDM5MTUxQTgy
NUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzk2MUQz
MDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAwNDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRhTG9n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0EwMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRl
TWF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MTUsNiArMTU1OSw3IEBACiAJCQkJQThBNDcz
QzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2NrT2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFt
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzhGMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNG
RiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRDhCOUUxNzMxODc5ODAw
MTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0NE
ODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNTI5LDYgKzE1NzQsNyBAQAogCQkJCUE4QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAv
KiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgy
NUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIzMzRFQjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVy
UG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyog
UGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQz
ODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTU4LDYgKzE2MDQsOCBA
QAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAvKiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAwRDBENkExIC8qIFN0cmluZ1ZpZXdPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcxNTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRv
ZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0
QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQzE4MUM5MTFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MEE5
OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NDgxNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZElkZW50aWZpZXJEYXRhUHRo
cmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NEExNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdWJyay5oIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91YnJrLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTljMGVmNjI3YjY3Mjc5Zjg2ZTQ2MDQ0YmYwZjI1NzEwMmUwYzZjZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oCkBAIC0wLDAgKzEsNTQxIEBACisv
KgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDEzLCBJbnRl
cm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuCisqIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyNpZm5kZWYg
VUJSS19ICisjZGVmaW5lIFVCUktfSAorCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNp
bmNsdWRlICJ1bmljb2RlL3Vsb2MuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3V0ZXh0LmgiCisjaW5j
bHVkZSAidW5pY29kZS9sb2NhbHBvaW50ZXIuaCIKKworLyoqCisgKiBBIHRleHQtYnJlYWsgaXRl
cmF0b3IuCisgKiAgRm9yIHVzYWdlIGluIEMgcHJvZ3JhbXMuCisgKi8KKyNpZm5kZWYgVUJSS19U
WVBFREVGX1VCUkVBS19JVEVSQVRPUgorIyAgIGRlZmluZSBVQlJLX1RZUEVERUZfVUJSRUFLX0lU
RVJBVE9SCisgICAgLyoqCisgICAgICogIE9wYXF1ZSB0eXBlIHJlcHJlc2VudGluZyBhbiBJQ1Ug
QnJlYWsgaXRlcmF0b3Igb2JqZWN0LgorICAgICAqICBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8K
KyAgICB0eXBlZGVmIHN0cnVjdCBVQnJlYWtJdGVyYXRvciBVQnJlYWtJdGVyYXRvcjsKKyNlbmRp
ZgorCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OCisKKyNpbmNsdWRlICJ1bmljb2Rl
L3BhcnNlZXJyLmgiCisKKy8qKgorICogXGZpbGUKKyAqIFxicmllZiBDIEFQSTogQnJlYWtJdGVy
YXRvcgorICoKKyAqIDxoMj4gQnJlYWtJdGVyYXRvciBDIEFQSSA8L2gyPgorICoKKyAqIFRoZSBC
cmVha0l0ZXJhdG9yIEMgQVBJIGRlZmluZXMgIG1ldGhvZHMgZm9yIGZpbmRpbmcgdGhlIGxvY2F0
aW9uCisgKiBvZiBib3VuZGFyaWVzIGluIHRleHQuIFBvaW50ZXIgdG8gYSBVQnJlYWtJdGVyYXRv
ciBtYWludGFpbiBhCisgKiBjdXJyZW50IHBvc2l0aW9uIGFuZCBzY2FuIG92ZXIgdGV4dCByZXR1
cm5pbmcgdGhlIGluZGV4IG9mIGNoYXJhY3RlcnMKKyAqIHdoZXJlIGJvdW5kYXJpZXMgb2NjdXIu
CisgKiA8cD4KKyAqIExpbmUgYm91bmRhcnkgYW5hbHlzaXMgZGV0ZXJtaW5lcyB3aGVyZSBhIHRl
eHQgc3RyaW5nIGNhbiBiZSBicm9rZW4KKyAqIHdoZW4gbGluZS13cmFwcGluZy4gVGhlIG1lY2hh
bmlzbSBjb3JyZWN0bHkgaGFuZGxlcyBwdW5jdHVhdGlvbiBhbmQKKyAqIGh5cGhlbmF0ZWQgd29y
ZHMuCisgKiA8cD4KKyAqIFNlbnRlbmNlIGJvdW5kYXJ5IGFuYWx5c2lzIGFsbG93cyBzZWxlY3Rp
b24gd2l0aCBjb3JyZWN0CisgKiBpbnRlcnByZXRhdGlvbiBvZiBwZXJpb2RzIHdpdGhpbiBudW1i
ZXJzIGFuZCBhYmJyZXZpYXRpb25zLCBhbmQKKyAqIHRyYWlsaW5nIHB1bmN0dWF0aW9uIG1hcmtz
IHN1Y2ggYXMgcXVvdGF0aW9uIG1hcmtzIGFuZCBwYXJlbnRoZXNlcy4KKyAqIDxwPgorICogV29y
ZCBib3VuZGFyeSBhbmFseXNpcyBpcyB1c2VkIGJ5IHNlYXJjaCBhbmQgcmVwbGFjZSBmdW5jdGlv
bnMsIGFzCisgKiB3ZWxsIGFzIHdpdGhpbiB0ZXh0IGVkaXRpbmcgYXBwbGljYXRpb25zIHRoYXQg
YWxsb3cgdGhlIHVzZXIgdG8KKyAqIHNlbGVjdCB3b3JkcyB3aXRoIGEgZG91YmxlIGNsaWNrLiBX
b3JkIHNlbGVjdGlvbiBwcm92aWRlcyBjb3JyZWN0CisgKiBpbnRlcnByZXRhdGlvbiBvZiBwdW5j
dHVhdGlvbiBtYXJrcyB3aXRoaW4gYW5kIGZvbGxvd2luZworICogd29yZHMuIENoYXJhY3RlcnMg
dGhhdCBhcmUgbm90IHBhcnQgb2YgYSB3b3JkLCBzdWNoIGFzIHN5bWJvbHMgb3IKKyAqIHB1bmN0
dWF0aW9uIG1hcmtzLCBoYXZlIHdvcmQtYnJlYWtzIG9uIGJvdGggc2lkZXMuCisgKiA8cD4KKyAq
IENoYXJhY3RlciBib3VuZGFyeSBhbmFseXNpcyBpZGVudGlmaWVzIHRoZSBib3VuZGFyaWVzIG9m
CisgKiAiRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlcnMiLCB3aGljaCBhcmUgZ3JvdXBpbmdzIG9m
IGNvZGVwb2ludHMKKyAqIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgY2hhcmFjdGVyLWxpa2Ug
dW5pdHMgZm9yIG1hbnkgdGV4dCBvcGVyYXRpb25zLgorICogUGxlYXNlIHNlZSBVbmljb2RlIFN0
YW5kYXJkIEFubmV4ICMyOSwgVW5pY29kZSBUZXh0IFNlZ21lbnRhdGlvbiwKKyAqIGh0dHA6Ly93
d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjI5LyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAK
KyAqIG9uIGdyYXBoZW1lIGNsdXN0ZXJzIGFuZCBndWlkZWxpbmVzIG9uIHRoZWlyIHVzZS4KKyAq
IDxwPgorICogVGl0bGUgYm91bmRhcnkgYW5hbHlzaXMgbG9jYXRlcyBhbGwgcG9zaXRpb25zLAor
ICogdHlwaWNhbGx5IHN0YXJ0cyBvZiB3b3JkcywgdGhhdCBzaG91bGQgYmUgc2V0IHRvIFRpdGxl
IENhc2UKKyAqIHdoZW4gdGl0bGUgY2FzaW5nIHRoZSB0ZXh0LgorICogPHA+CisgKiBUaGUgdGV4
dCBib3VuZGFyeSBwb3NpdGlvbnMgYXJlIGZvdW5kIGFjY29yZGluZyB0byB0aGUgcnVsZXMKKyAq
IGRlc2NyaWJlZCBpbiBVbmljb2RlIFN0YW5kYXJkIEFubmV4ICMyOSwgVGV4dCBCb3VuZGFyaWVz
LCBhbmQKKyAqIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXggIzE0LCBMaW5lIEJyZWFraW5nIFByb3Bl
cnRpZXMuICBUaGVzZQorICogYXJlIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnVuaWNvZGUub3Jn
L3JlcG9ydHMvdHIxNC8gYW5kCisgKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIy
OS8uCisgKiA8cD4KKyAqIEluIGFkZGl0aW9uIHRvIHRoZSBwbGFpbiBDIEFQSSBkZWZpbmVkIGlu
IHRoaXMgaGVhZGVyIGZpbGUsIGFuCisgKiBvYmplY3Qgb3JpZW50ZWQgQysrIEFQSSB3aXRoIGVx
dWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyBkZWZpbmVkIGluIHRoZQorICogZmlsZSBicmtpdGVy
LmguCisgKiA8cD4KKyAqIENvZGUgc25pcHBldHMgaWxsdXN0cmF0aW5nIHRoZSB1c2Ugb2YgdGhl
IEJyZWFrIEl0ZXJhdG9yIEFQSXMKKyAqIGFyZSBhdmFpbGFibGUgaW4gdGhlIElDVSBVc2VyIEd1
aWRlLAorICogaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy91c2VyZ3VpZGUvYm91bmRhcnlBbmFseXNp
cy5odG1sCisgKiBhbmQgaW4gdGhlIHNhbXBsZSBwcm9ncmFtIGljdS9zb3VyY2Uvc2FtcGxlcy9i
cmVhay9icmVhay5jcHAKKyAqLworCisvKiogVGhlIHBvc3NpYmxlIHR5cGVzIG9mIHRleHQgYm91
bmRhcmllcy4gIEBzdGFibGUgSUNVIDIuMCAqLwordHlwZWRlZiBlbnVtIFVCcmVha0l0ZXJhdG9y
VHlwZSB7CisgIC8qKiBDaGFyYWN0ZXIgYnJlYWtzICBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJS
S19DSEFSQUNURVIgPSAwLAorICAvKiogV29yZCBicmVha3MgQHN0YWJsZSBJQ1UgMi4wICovCisg
IFVCUktfV09SRCA9IDEsCisgIC8qKiBMaW5lIGJyZWFrcyBAc3RhYmxlIElDVSAyLjAgKi8KKyAg
VUJSS19MSU5FID0gMiwKKyAgLyoqIFNlbnRlbmNlIGJyZWFrcyBAc3RhYmxlIElDVSAyLjAgKi8K
KyAgVUJSS19TRU5URU5DRSA9IDMsCisKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisg
IC8qKgorICAgKiBUaXRsZSBDYXNlIGJyZWFrcworICAgKiBUaGUgaXRlcmF0b3IgY3JlYXRlZCB1
c2luZyB0aGlzIHR5cGUgbG9jYXRlcyB0aXRsZSBib3VuZGFyaWVzIGFzIGRlc2NyaWJlZCBmb3IK
KyAgICogVW5pY29kZSAzLjIgb25seS4gRm9yIFVuaWNvZGUgNC4wIGFuZCBhYm92ZSB0aXRsZSBi
b3VuZGFyeSBpdGVyYXRpb24sCisgICAqIHBsZWFzZSB1c2UgV29yZCBCb3VuZGFyeSBpdGVyYXRv
ci4KKyAgICoKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDIuOCBVc2UgdGhlIHdvcmQgYnJlYWsgaXRl
cmF0b3IgZm9yIHRpdGxlY2FzaW5nIGZvciBVbmljb2RlIDQgYW5kIGxhdGVyLgorICAgKi8KKyAg
VUJSS19USVRMRSA9IDQsCisjZW5kaWYgLyogVV9ISURFX0RFUFJFQ0FURURfQVBJICovCisgIFVC
UktfQ09VTlQgPSA1Cit9IFVCcmVha0l0ZXJhdG9yVHlwZTsKKworLyoqIFZhbHVlIGluZGljYXRp
bmcgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4gcmV0dXJuZWQuCisgKiAgQHN0YWJsZSBJ
Q1UgMi4wCisgKi8KKyNkZWZpbmUgVUJSS19ET05FICgoaW50MzJfdCkgLTEpCisKKworLyoqCisg
KiAgRW51bSBjb25zdGFudHMgZm9yIHRoZSB3b3JkIGJyZWFrIHRhZ3MgcmV0dXJuZWQgYnkKKyAq
ICBnZXRSdWxlU3RhdHVzKCkuICBBIHJhbmdlIG9mIHZhbHVlcyBpcyBkZWZpbmVkIGZvciBlYWNo
IGNhdGVnb3J5IG9mCisgKiAgd29yZCwgdG8gYWxsb3cgZm9yIGZ1cnRoZXIgc3ViZGl2aXNpb25z
IG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2VzLgorICogIEFwcGxpY2F0aW9ucyBzaG91
bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3aXRoaW4gdGhlIHJhbmdlLCByYXRoZXIK
KyAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2YWx1ZXMuCisgKiAgQHN0YWJsZSBJQ1Ug
Mi4yCisqLwordHlwZWRlZiBlbnVtIFVXb3JkQnJlYWsgeworICAgIC8qKiBUYWcgdmFsdWUgZm9y
ICJ3b3JkcyIgdGhhdCBkbyBub3QgZml0IGludG8gYW55IG9mIG90aGVyIGNhdGVnb3JpZXMuCisg
ICAgICogIEluY2x1ZGVzIHNwYWNlcyBhbmQgbW9zdCBwdW5jdHVhdGlvbi4gKi8KKyAgICBVQlJL
X1dPUkRfTk9ORSAgICAgICAgICAgPSAwLAorICAgIC8qKiBVcHBlciBib3VuZCBmb3IgdGFncyBm
b3IgdW5jYXRlZ29yaXplZCB3b3Jkcy4gKi8KKyAgICBVQlJLX1dPUkRfTk9ORV9MSU1JVCAgICAg
PSAxMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMgdGhhdCBhcHBlYXIgdG8gYmUgbnVt
YmVycywgbG93ZXIgbGltaXQuICAgICovCisgICAgVUJSS19XT1JEX05VTUJFUiAgICAgICAgID0g
MTAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIHRoYXQgYXBwZWFyIHRvIGJlIG51bWJl
cnMsIHVwcGVyIGxpbWl0LiAgICAqLworICAgIFVCUktfV09SRF9OVU1CRVJfTElNSVQgICA9IDIw
MCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyB0aGF0IGNvbnRhaW4gbGV0dGVycywgZXhj
bHVkaW5nCisgICAgICogIGhpcmFnYW5hLCBrYXRha2FuYSBvciBpZGVvZ3JhcGhpYyBjaGFyYWN0
ZXJzLCBsb3dlciBsaW1pdC4gICAgKi8KKyAgICBVQlJLX1dPUkRfTEVUVEVSICAgICAgICAgPSAy
MDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMgY29udGFpbmluZyBsZXR0ZXJzLCB1cHBl
ciBsaW1pdCAgKi8KKyAgICBVQlJLX1dPUkRfTEVUVEVSX0xJTUlUICAgPSAzMDAsCisgICAgLyoq
IFRhZyB2YWx1ZSBmb3Igd29yZHMgY29udGFpbmluZyBrYW5hIGNoYXJhY3RlcnMsIGxvd2VyIGxp
bWl0ICovCisgICAgVUJSS19XT1JEX0tBTkEgICAgICAgICAgID0gMzAwLAorICAgIC8qKiBUYWcg
dmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcga2FuYSBjaGFyYWN0ZXJzLCB1cHBlciBsaW1pdCAq
LworICAgIFVCUktfV09SRF9LQU5BX0xJTUlUICAgICA9IDQwMCwKKyAgICAvKiogVGFnIHZhbHVl
IGZvciB3b3JkcyBjb250YWluaW5nIGlkZW9ncmFwaGljIGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0
ICovCisgICAgVUJSS19XT1JEX0lERU8gICAgICAgICAgID0gNDAwLAorICAgIC8qKiBUYWcgdmFs
dWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcgaWRlb2dyYXBoaWMgY2hhcmFjdGVycywgdXBwZXIgbGlt
aXQgKi8KKyAgICBVQlJLX1dPUkRfSURFT19MSU1JVCAgICAgPSA1MDAKK30gVVdvcmRCcmVhazsK
KworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRoZSBsaW5lIGJyZWFrIHRhZ3MgcmV0dXJu
ZWQgYnkgZ2V0UnVsZVN0YXR1cygpLgorICogIEEgcmFuZ2Ugb2YgdmFsdWVzIGlzIGRlZmluZWQg
Zm9yIGVhY2ggY2F0ZWdvcnkgb2YKKyAqICB3b3JkLCB0byBhbGxvdyBmb3IgZnVydGhlciBzdWJk
aXZpc2lvbnMgb2YgYSBjYXRlZ29yeSBpbiBmdXR1cmUgcmVsZWFzZXMuCisgKiAgQXBwbGljYXRp
b25zIHNob3VsZCBjaGVjayBmb3IgdGFnIHZhbHVlcyBmYWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2Us
IHJhdGhlcgorICogIHRoYW4gZm9yIHNpbmdsZSBpbmRpdmlkdWFsIHZhbHVlcy4KKyAqICBAc3Rh
YmxlIElDVSAyLjgKKyovCit0eXBlZGVmIGVudW0gVUxpbmVCcmVha1RhZyB7CisgICAgLyoqIFRh
ZyB2YWx1ZSBmb3Igc29mdCBsaW5lIGJyZWFrcywgcG9zaXRpb25zIGF0IHdoaWNoIGEgbGluZSBi
cmVhaworICAgICAgKiAgaXMgYWNjZXB0YWJsZSBidXQgbm90IHJlcXVpcmVkICAgICAgICAgICAg
ICAgICovCisgICAgVUJSS19MSU5FX1NPRlQgICAgICAgICAgICA9IDAsCisgICAgLyoqIFVwcGVy
IGJvdW5kIGZvciBzb2Z0IGxpbmUgYnJlYWtzLiAgICAgICAgICAgICAgKi8KKyAgICBVQlJLX0xJ
TkVfU09GVF9MSU1JVCAgICAgID0gMTAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIGEgaGFyZCwg
b3IgbWFuZGF0b3J5IGxpbmUgYnJlYWsgICovCisgICAgVUJSS19MSU5FX0hBUkQgICAgICAgICAg
ICA9IDEwMCwKKyAgICAvKiogVXBwZXIgYm91bmQgZm9yIGhhcmQgbGluZSBicmVha3MuICAgICAg
ICAgICAgICAqLworICAgIFVCUktfTElORV9IQVJEX0xJTUlUICAgICAgPSAyMDAKK30gVUxpbmVC
cmVha1RhZzsKKworCisKKy8qKgorICogIEVudW0gY29uc3RhbnRzIGZvciB0aGUgc2VudGVuY2Ug
YnJlYWsgdGFncyByZXR1cm5lZCBieSBnZXRSdWxlU3RhdHVzKCkuCisgKiAgQSByYW5nZSBvZiB2
YWx1ZXMgaXMgZGVmaW5lZCBmb3IgZWFjaCBjYXRlZ29yeSBvZgorICogIHNlbnRlbmNlLCB0byBh
bGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2YgYSBjYXRlZ29yeSBpbiBmdXR1cmUgcmVs
ZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBmb3IgdGFnIHZhbHVlcyBmYWxs
aW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICogIHRoYW4gZm9yIHNpbmdsZSBpbmRpdmlk
dWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgKKyovCit0eXBlZGVmIGVudW0gVVNlbnRl
bmNlQnJlYWtUYWcgeworICAgIC8qKiBUYWcgdmFsdWUgZm9yIGZvciBzZW50ZW5jZXMgIGVuZGlu
ZyB3aXRoIGEgc2VudGVuY2UgdGVybWluYXRvcgorICAgICAgKiAoJy4nLCAnPycsICchJywgZXRj
LikgY2hhcmFjdGVyLCBwb3NzaWJseSBmb2xsb3dlZCBieSBhCisgICAgICAqIGhhcmQgc2VwYXJh
dG9yIChDUiwgTEYsIFBTLCBldGMuKQorICAgICAgKi8KKyAgICBVQlJLX1NFTlRFTkNFX1RFUk0g
ICAgICAgPSAwLAorICAgIC8qKiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3Igc2VudGVuY2VzIGVu
ZGVkIGJ5IHNlbnRlbmNlIHRlcm1pbmF0b3JzLiAgICAqLworICAgIFVCUktfU0VOVEVOQ0VfVEVS
TV9MSU1JVCA9IDEwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciBmb3Igc2VudGVuY2VzIHRoYXQg
ZG8gbm90IGNvbnRhaW4gYW4gZW5kaW5nCisgICAgICAqIHNlbnRlbmNlIHRlcm1pbmF0b3IgKCcu
JywgJz8nLCAnIScsIGV0Yy4pIGNoYXJhY3RlciwgYnV0CisgICAgICAqIGFyZSBlbmRlZCBvbmx5
IGJ5IGEgaGFyZCBzZXBhcmF0b3IgKENSLCBMRiwgUFMsIGV0Yy4pIG9yIGVuZCBvZiBpbnB1dC4K
KyAgICAgICovCisgICAgVUJSS19TRU5URU5DRV9TRVAgICAgICAgID0gMTAwLAorICAgIC8qKiBV
cHBlciBib3VuZCBmb3IgdGFncyBmb3Igc2VudGVuY2VzIGVuZGVkIGJ5IGEgc2VwYXJhdG9yLiAg
ICAgICAgICAgICAgKi8KKyAgICBVQlJLX1NFTlRFTkNFX1NFUF9MSU1JVCAgPSAyMDAKKyAgICAv
KiogVGFnIHZhbHVlIGZvciBhIGhhcmQsIG9yIG1hbmRhdG9yeSBsaW5lIGJyZWFrICAqLworfSBV
U2VudGVuY2VCcmVha1RhZzsKKworCisvKioKKyAqIE9wZW4gYSBuZXcgVUJyZWFrSXRlcmF0b3Ig
Zm9yIGxvY2F0aW5nIHRleHQgYm91bmRhcmllcyBmb3IgYSBzcGVjaWZpZWQgbG9jYWxlLgorICog
QSBVQnJlYWtJdGVyYXRvciBtYXkgYmUgdXNlZCBmb3IgZGV0ZWN0aW5nIGNoYXJhY3RlciwgbGlu
ZSwgd29yZCwKKyAqIGFuZCBzZW50ZW5jZSBicmVha3MgaW4gdGV4dC4KKyAqIEBwYXJhbSB0eXBl
IFRoZSB0eXBlIG9mIFVCcmVha0l0ZXJhdG9yIHRvIG9wZW46IG9uZSBvZiBVQlJLX0NIQVJBQ1RF
UiwgVUJSS19XT1JELAorICogVUJSS19MSU5FLCBVQlJLX1NFTlRFTkNFCisgKiBAcGFyYW0gbG9j
YWxlIFRoZSBsb2NhbGUgc3BlY2lmeWluZyB0aGUgdGV4dC1icmVha2luZyBjb252ZW50aW9ucy4K
KyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIGl0ZXJhdGVkIG92ZXIuCisgKiBAcGFyYW0g
dGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGV4dCwgb3IgLTEgaWYgbnVs
bC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBBIFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBh
bnkgZXJyb3JzLgorICogQHJldHVybiBBIFVCcmVha0l0ZXJhdG9yIGZvciB0aGUgc3BlY2lmaWVk
IGxvY2FsZS4KKyAqIEBzZWUgdWJya19vcGVuUnVsZXMKKyAqIEBzdGFibGUgSUNVIDIuMAorICov
CitVX1NUQUJMRSBVQnJlYWtJdGVyYXRvciogVV9FWFBPUlQyCit1YnJrX29wZW4oVUJyZWFrSXRl
cmF0b3JUeXBlIHR5cGUsCisgICAgICBjb25zdCBjaGFyICpsb2NhbGUsCisgICAgICBjb25zdCBV
Q2hhciAqdGV4dCwKKyAgICAgIGludDMyX3QgdGV4dExlbmd0aCwKKyAgICAgIFVFcnJvckNvZGUg
KnN0YXR1cyk7CisKKy8qKgorICogT3BlbiBhIG5ldyBVQnJlYWtJdGVyYXRvciBmb3IgbG9jYXRp
bmcgdGV4dCBib3VuZGFyaWVzIHVzaW5nIHNwZWNpZmllZCBicmVha2luZyBydWxlcy4KKyAqIFRo
ZSBydWxlIHN5bnRheCBpcyAuLi4gKFRCRCkKKyAqIEBwYXJhbSBydWxlcyBBIHNldCBvZiBydWxl
cyBzcGVjaWZ5aW5nIHRoZSB0ZXh0IGJyZWFraW5nIGNvbnZlbnRpb25zLgorICogQHBhcmFtIHJ1
bGVzTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBydWxlcywgb3IgLTEgaWYgbnVs
bC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHRleHQgVGhlIHRleHQgdG8gYmUgaXRlcmF0ZWQgb3Zl
ci4gIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIHVicmtfc2V0VGV4dCgpIGlzCisgKiAgICAg
ICAgdXNlZCB0byBzcGVjaWZ5IHRoZSB0ZXh0IHRvIGJlIGl0ZXJhdGVkLgorICogQHBhcmFtIHRl
eHRMZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRleHQsIG9yIC0xIGlmIG51bGwt
dGVybWluYXRlZC4KKyAqIEBwYXJhbSBwYXJzZUVyciAgIFJlY2VpdmVzIHBvc2l0aW9uIGFuZCBj
b250ZXh0IGluZm9ybWF0aW9uIGZvciBhbnkgc3ludGF4IGVycm9ycworICogICAgICAgICAgICAg
ICAgICAgZGV0ZWN0ZWQgd2hpbGUgcGFyc2luZyB0aGUgcnVsZXMuCisgKiBAcGFyYW0gc3RhdHVz
IEEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJvcnMuCisgKiBAcmV0dXJuIEEgVUJyZWFr
SXRlcmF0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcnVsZXMuCisgKiBAc2VlIHVicmtfb3BlbgorICog
QHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIFVCcmVha0l0ZXJhdG9yKiBVX0VYUE9SVDIK
K3Vicmtfb3BlblJ1bGVzKGNvbnN0IFVDaGFyICAgICAqcnVsZXMsCisgICAgICAgICAgICAgICBp
bnQzMl90ICAgICAgICAgcnVsZXNMZW5ndGgsCisgICAgICAgICAgICAgICBjb25zdCBVQ2hhciAg
ICAgKnRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgIHRleHRMZW5ndGgsCisg
ICAgICAgICAgICAgICBVUGFyc2VFcnJvciAgICAgKnBhcnNlRXJyLAorICAgICAgICAgICAgICAg
VUVycm9yQ29kZSAgICAgICpzdGF0dXMpOworCisvKioKKyAqIFRocmVhZCBzYWZlIGNsb25pbmcg
b3BlcmF0aW9uCisgKiBAcGFyYW0gYmkgaXRlcmF0b3IgdG8gYmUgY2xvbmVkCisgKiBAcGFyYW0g
c3RhY2tCdWZmZXIgPGVtPkRlcHJlY2F0ZWQgZnVuY3Rpb25hbGl0eSBhcyBvZiBJQ1UgNTIsIHVz
ZSBOVUxMLjwvZW0+PGJyPgorICogIHVzZXIgYWxsb2NhdGVkIHNwYWNlIGZvciB0aGUgbmV3IGNs
b25lLiBJZiBOVUxMIG5ldyBtZW1vcnkgd2lsbCBiZSBhbGxvY2F0ZWQuCisgKiAgSWYgYnVmZmVy
IGlzIG5vdCBsYXJnZSBlbm91Z2gsIG5ldyBtZW1vcnkgd2lsbCBiZSBhbGxvY2F0ZWQuCisgKiAg
Q2xpZW50cyBjYW4gdXNlIHRoZSBVX0JSS19TQUZFQ0xPTkVfQlVGRkVSU0laRS4KKyAqIEBwYXJh
bSBwQnVmZmVyU2l6ZSA8ZW0+RGVwcmVjYXRlZCBmdW5jdGlvbmFsaXR5IGFzIG9mIElDVSA1Miwg
dXNlIE5VTEwgb3IgMS48L2VtPjxicj4KKyAqICBwb2ludGVyIHRvIHNpemUgb2YgYWxsb2NhdGVk
IHNwYWNlLgorICogIElmICpwQnVmZmVyU2l6ZSA9PSAwLCBhIHN1ZmZpY2llbnQgc2l6ZSBmb3Ig
dXNlIGluIGNsb25pbmcgd2lsbAorICogIGJlIHJldHVybmVkICgncHJlLWZsaWdodGluZycpCisg
KiAgSWYgKnBCdWZmZXJTaXplIGlzIG5vdCBlbm91Z2ggZm9yIGEgc3RhY2stYmFzZWQgc2FmZSBj
bG9uZSwKKyAqICBuZXcgbWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVkLgorICogQHBhcmFtIHN0YXR1
cyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBvcGVyYXRpb24gd2VudCBvbiBzbW9vdGhseSBvciB0
aGVyZSB3ZXJlIGVycm9ycworICogIEFuIGluZm9ybWF0aW9uYWwgc3RhdHVzIHZhbHVlLCBVX1NB
RkVDTE9ORV9BTExPQ0FURURfRVJST1IsIGlzIHVzZWQgaWYgYW55IGFsbG9jYXRpb25zIHdlcmUg
bmVjZXNzYXJ5LgorICogQHJldHVybiBwb2ludGVyIHRvIHRoZSBuZXcgY2xvbmUKKyAqIEBzdGFi
bGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJdGVyYXRvciAqIFVfRVhQT1JUMgordWJy
a19zYWZlQ2xvbmUoCisgICAgICAgICAgY29uc3QgVUJyZWFrSXRlcmF0b3IgKmJpLAorICAgICAg
ICAgIHZvaWQgKnN0YWNrQnVmZmVyLAorICAgICAgICAgIGludDMyX3QgKnBCdWZmZXJTaXplLAor
ICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FU
RURfQVBJCisKKy8qKgorICAqIEEgcmVjb21tZW5kZWQgc2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUg
bWVtb3J5IGJ1ZmZlciB0byBiZSBwYXNzZWQgdG8gdWJya19zYXZlQ2xvbmUoKS4KKyAgKiBAZGVw
cmVjYXRlZCBJQ1UgNTIuIERvIG5vdCByZWx5IG9uIHVicmtfc2FmZUNsb25lKCkgY2xvbmluZyBp
bnRvIGFueSBwcm92aWRlZCBidWZmZXIuCisgICovCisjZGVmaW5lIFVfQlJLX1NBRkVDTE9ORV9C
VUZGRVJTSVpFIDEKKworI2VuZGlmIC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLworCisvKioK
KyogQ2xvc2UgYSBVQnJlYWtJdGVyYXRvci4KKyogT25jZSBjbG9zZWQsIGEgVUJyZWFrSXRlcmF0
b3IgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9y
IHRvIGNsb3NlLgorICogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9S
VDIKK3VicmtfY2xvc2UoVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworI2lmIFVfU0hPV19DUExVU1BM
VVNfQVBJCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8qKgorICogXGNsYXNzIExvY2FsVUJyZWFr
SXRlcmF0b3JQb2ludGVyCisgKiAiU21hcnQgcG9pbnRlciIgY2xhc3MsIGNsb3NlcyBhIFVCcmVh
a0l0ZXJhdG9yIHZpYSB1YnJrX2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUg
TG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFz
ZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitVX0RFRklO
RV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVQnJlYWtJdGVyYXRvclBvaW50ZXIsIFVCcmVha0l0
ZXJhdG9yLCB1YnJrX2Nsb3NlKTsKKworVV9OQU1FU1BBQ0VfRU5ECisKKyNlbmRpZgorCisvKioK
KyAqIFNldHMgYW4gZXhpc3RpbmcgaXRlcmF0b3IgdG8gcG9pbnQgdG8gYSBuZXcgcGllY2Ugb2Yg
dGV4dAorICogQHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRo
ZSB0ZXh0IHRvIGJlIHNldAorICogQHBhcmFtIHRleHRMZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUg
dGV4dAorICogQHBhcmFtIHN0YXR1cyBUaGUgZXJyb3IgY29kZQorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1YnJrX3NldFRleHQoVUJyZWFrSXRlcmF0
b3IqIGJpLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiAgICB0ZXh0LAorICAgICAgICAgICAg
IGludDMyX3QgICAgICAgICB0ZXh0TGVuZ3RoLAorICAgICAgICAgICAgIFVFcnJvckNvZGUqICAg
ICBzdGF0dXMpOworCisKKy8qKgorICogU2V0cyBhbiBleGlzdGluZyBpdGVyYXRvciB0byBwb2lu
dCB0byBhIG5ldyBwaWVjZSBvZiB0ZXh0LgorICoKKyAqIEFsbCBpbmRleCBwb3NpdGlvbnMgcmV0
dXJuZWQgYnkgYnJlYWsgaXRlcmF0b3IgZnVuY3Rpb25zIGFyZQorICogbmF0aXZlIGluZGljZXMg
ZnJvbSB0aGUgVVRleHQuIEZvciBleGFtcGxlLCB3aGVuIGJyZWFraW5nIFVURi04CisgKiBlbmNv
ZGVkIHRleHQsIHRoZSBicmVhayBwb3NpdGlvbnMgcmV0dXJuZWQgYnkgXHJlZiB1YnJrX25leHQs
IFxyZWYgdWJya19wcmV2aW91cywgZXRjLgorICogd2lsbCBiZSBVVEYtOCBzdHJpbmcgaW5kaWNl
cywgbm90IFVURi0xNiBwb3NpdGlvbnMuCisgKgorICogQHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0
byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIHNldC4KKyAqICAgICAgICAgICAg
IFRoaXMgZnVuY3Rpb24gbWFrZXMgYSBzaGFsbG93IGNsb25lIG9mIHRoZSBzdXBwbGllZCBVVGV4
dC4gIFRoaXMgbWVhbnMKKyAqICAgICAgICAgICAgIHRoYXQgdGhlIGNhbGxlciBpcyBmcmVlIHRv
IGltbWVkaWF0ZWx5IGNsb3NlIG9yIG90aGVyd2lzZSByZXVzZSB0aGUKKyAqICAgICAgICAgICAg
IFVUZXh0IHRoYXQgd2FzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciwgYnV0IHRoYXQgdGhlIHVuZGVy
bHlpbmcgdGV4dCBpdHNlbGYKKyAqICAgICAgICAgICAgIG11c3Qgbm90IGJlIGFsdGVyZWQgd2hp
bGUgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGUgYnJlYWsgaXRlcmF0b3IuCisgKiBAcGFyYW0gc3Rh
dHVzIFRoZSBlcnJvciBjb2RlCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgdm9p
ZCBVX0VYUE9SVDIKK3Vicmtfc2V0VVRleHQoVUJyZWFrSXRlcmF0b3IqIGJpLAorICAgICAgICAg
ICAgIFVUZXh0KiAgICAgICAgICB0ZXh0LAorICAgICAgICAgICAgIFVFcnJvckNvZGUqICAgICBz
dGF0dXMpOworCisKKworLyoqCisgKiBEZXRlcm1pbmUgdGhlIG1vc3QgcmVjZW50bHktcmV0dXJu
ZWQgdGV4dCBib3VuZGFyeS4KKyAqCisgKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRv
IHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBpbmRleCBtb3N0IHJlY2VudGx5IHJldHVy
bmVkIGJ5IFxyZWYgdWJya19uZXh0LCBccmVmIHVicmtfcHJldmlvdXMsCisgKiBccmVmIHVicmtf
Zmlyc3QsIG9yIFxyZWYgdWJya19sYXN0LgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RB
QkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2N1cnJlbnQoY29uc3QgVUJyZWFrSXRlcmF0b3Ig
KmJpKTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byB0aGUgYm91bmRhcnkgZm9s
bG93aW5nIHRoZSBjdXJyZW50IGJvdW5kYXJ5LgorICoKKyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsg
aXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBu
ZXh0IHRleHQgYm91bmRhcnksIG9yIFVCUktfRE9ORQorICogaWYgYWxsIHRleHQgYm91bmRhcmll
cyBoYXZlIGJlZW4gcmV0dXJuZWQuCisgKiBAc2VlIHVicmtfcHJldmlvdXMKKyAqIEBzdGFibGUg
SUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordWJya19uZXh0KFVCcmVh
a0l0ZXJhdG9yICpiaSk7CisKKy8qKgorICogU2V0IHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0
aGUgYm91bmRhcnkgcHJlY2VkaW5nIHRoZSBjdXJyZW50IGJvdW5kYXJ5LgorICoKKyAqIEBwYXJh
bSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUgY2hhcmFjdGVy
IGluZGV4IG9mIHRoZSBwcmVjZWRpbmcgdGV4dCBib3VuZGFyeSwgb3IgVUJSS19ET05FCisgKiBp
ZiBhbGwgdGV4dCBib3VuZGFyaWVzIGhhdmUgYmVlbiByZXR1cm5lZC4KKyAqIEBzZWUgdWJya19u
ZXh0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIK
K3VicmtfcHJldmlvdXMoVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBTZXQgdGhlIGl0
ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRo
ZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisgKiBUaGlzIGlzIG5vdCBhbHdheXMgdGhlIHNhbWUgYXMg
aW5kZXggMCBvZiB0aGUgdGV4dC4KKyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8g
dXNlLgorICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0
ZXIgaW4gdGhlIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAqIEBzZWUgdWJya19sYXN0CisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VicmtfZmlyc3Qo
VUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9u
IHRvIHRoZSBpbmRleCBpbW1lZGlhdGVseSA8RU0+YmV5b25kPC9FTT4gdGhlIGxhc3QgY2hhcmFj
dGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisgKiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBh
cyB0aGUgbGFzdCBjaGFyYWN0ZXIuCisgKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRv
IHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBvZmZzZXQgaW1tZWRpYXRlbHkgPEVNPmJl
eW9uZDwvRU0+IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUKKyAqIHRleHQgYmVpbmcgc2Nhbm5l
ZC4KKyAqIEBzZWUgdWJya19maXJzdAorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxF
IGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2xhc3QoVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoq
CisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwcmVj
ZWRpbmcgdGhlIHNwZWNpZmllZCBvZmZzZXQuCisgKiBUaGUgbmV3IHBvc2l0aW9uIGlzIGFsd2F5
cyBzbWFsbGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuCisgKiBAcGFyYW0gYmkgVGhlIGJy
ZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBvZmZzZXQgVGhlIG9mZnNldCB0byBiZWdp
biBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQgYm91bmRhcnkgcHJlY2VkaW5nIG9mZnNl
dCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX2ZvbGxvd2luZworICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX3ByZWNlZGluZyhVQnJl
YWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0KTsKKworLyoqCisgKiBB
ZHZhbmNlIHRoZSBpdGVyYXRvciB0byB0aGUgZmlyc3QgYm91bmRhcnkgZm9sbG93aW5nIHRoZSBz
cGVjaWZpZWQgb2Zmc2V0LgorICogVGhlIHZhbHVlIHJldHVybmVkIGlzIGFsd2F5cyBncmVhdGVy
IHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuCisgKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJh
dG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBvZmZzZXQgVGhlIG9mZnNldCB0byBiZWdpbiBzY2Fubmlu
Zy4KKyAqIEByZXR1cm4gVGhlIHRleHQgYm91bmRhcnkgZm9sbG93aW5nIG9mZnNldCwgb3IgVUJS
S19ET05FLgorICogQHNlZSB1YnJrX3ByZWNlZGluZworICogQHN0YWJsZSBJQ1UgMi4wCisgKi8K
K1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2ZvbGxvd2luZyhVQnJlYWtJdGVyYXRv
ciAqYmksCisgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0KTsKKworLyoqCisqIEdldCBhIGxvY2Fs
ZSBmb3Igd2hpY2ggdGV4dCBicmVha2luZyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUuCisqIEEg
VUJyZWFrSXRlcmF0b3IgaW4gYSBsb2NhbGUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxs
IHBlcmZvcm0gdGhlIGNvcnJlY3QKKyogdGV4dCBicmVha2luZyBmb3IgdGhlIGxvY2FsZS4KKyog
QHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZGVzaXJlZCBsb2NhbGUuCisqIEByZXR1cm4g
QSBsb2NhbGUgZm9yIHdoaWNoIG51bWJlciB0ZXh0IGJyZWFraW5nIGluZm9ybWF0aW9uIGlzIGF2
YWlsYWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVicmtfY291bnRBdmFpbGFibGUKKyogQHN0
YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1YnJrX2dl
dEF2YWlsYWJsZShpbnQzMl90IGluZGV4KTsKKworLyoqCisqIERldGVybWluZSBob3cgbWFueSBs
b2NhbGVzIGhhdmUgdGV4dCBicmVha2luZyBpbmZvcm1hdGlvbiBhdmFpbGFibGUuCisqIFRoaXMg
ZnVuY3Rpb24gaXMgbW9zdCB1c2VmdWwgYXMgZGV0ZXJtaW5pbmcgdGhlIGxvb3AgZW5kaW5nIGNv
bmRpdGlvbiBmb3IKKyogY2FsbHMgdG8gXHJlZiB1YnJrX2dldEF2YWlsYWJsZS4KKyogQHJldHVy
biBUaGUgbnVtYmVyIG9mIGxvY2FsZXMgZm9yIHdoaWNoIHRleHQgYnJlYWtpbmcgaW5mb3JtYXRp
b24gaXMgYXZhaWxhYmxlLgorKiBAc2VlIHVicmtfZ2V0QXZhaWxhYmxlCisqIEBzdGFibGUgSUNV
IDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2NvdW50QXZhaWxhYmxl
KHZvaWQpOworCisKKy8qKgorKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNmaWVkIHBvc2l0aW9u
IGlzIGEgYm91bmRhcnkgcG9zaXRpb24uICBBcyBhIHNpZGUKKyogZWZmZWN0LCBsZWF2ZXMgdGhl
IGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBhdAorKiBv
ciBhZnRlciAib2Zmc2V0Ii4KKyogQHBhcmFtIGJpIFRoZSBicmVhayBpdGVyYXRvciB0byB1c2Uu
CisqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCB0byBjaGVjay4KKyogQHJldHVybiBUcnVlIGlm
ICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uCisqIEBzdGFibGUgSUNVIDIuMAorKi8K
K1VfU1RBQkxFICBVQm9vbCBVX0VYUE9SVDIKK3VicmtfaXNCb3VuZGFyeShVQnJlYWtJdGVyYXRv
ciAqYmksIGludDMyX3Qgb2Zmc2V0KTsKKworLyoqCisgKiBSZXR1cm4gdGhlIHN0YXR1cyBmcm9t
IHRoZSBicmVhayBydWxlIHRoYXQgZGV0ZXJtaW5lZCB0aGUgbW9zdCByZWNlbnRseQorICogcmV0
dXJuZWQgYnJlYWsgcG9zaXRpb24uICBUaGUgdmFsdWVzIGFwcGVhciBpbiB0aGUgcnVsZSBzb3Vy
Y2UKKyAqIHdpdGhpbiBicmFja2V0cywgezEyM30sIGZvciBleGFtcGxlLiAgRm9yIHJ1bGVzIHRo
YXQgZG8gbm90IHNwZWNpZnkgYQorICogc3RhdHVzLCBhIGRlZmF1bHQgdmFsdWUgb2YgMCBpcyBy
ZXR1cm5lZC4KKyAqIDxwPgorICogRm9yIHdvcmQgYnJlYWsgaXRlcmF0b3JzLCB0aGUgcG9zc2li
bGUgdmFsdWVzIGFyZSBkZWZpbmVkIGluIGVudW0gVVdvcmRCcmVhay4KKyAqIEBzdGFibGUgSUNV
IDIuMgorICovCitVX1NUQUJMRSAgaW50MzJfdCBVX0VYUE9SVDIKK3VicmtfZ2V0UnVsZVN0YXR1
cyhVQnJlYWtJdGVyYXRvciAqYmkpOworCisvKioKKyAqIEdldCB0aGUgc3RhdHVzZXMgZnJvbSB0
aGUgYnJlYWsgcnVsZXMgdGhhdCBkZXRlcm1pbmVkIHRoZSBtb3N0IHJlY2VudGx5CisgKiByZXR1
cm5lZCBicmVhayBwb3NpdGlvbi4gIFRoZSB2YWx1ZXMgYXBwZWFyIGluIHRoZSBydWxlIHNvdXJj
ZQorICogd2l0aGluIGJyYWNrZXRzLCB7MTIzfSwgZm9yIGV4YW1wbGUuICBUaGUgZGVmYXVsdCBz
dGF0dXMgdmFsdWUgZm9yIHJ1bGVzCisgKiB0aGF0IGRvIG5vdCBleHBsaWNpdGx5IHByb3ZpZGUg
b25lIGlzIHplcm8uCisgKiA8cD4KKyAqIEZvciB3b3JkIGJyZWFrIGl0ZXJhdG9ycywgdGhlIHBv
c3NpYmxlIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiBlbnVtIFVXb3JkQnJlYWsuCisgKiBAcGFyYW0g
YmkgICAgICAgIFRoZSBicmVhayBpdGVyYXRvciB0byB1c2UKKyAqIEBwYXJhbSBmaWxsSW5WZWMg
YW4gYXJyYXkgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhlIHN0YXR1cyB2YWx1ZXMuCisgKiBAcGFy
YW0gY2FwYWNpdHkgIHRoZSBsZW5ndGggb2YgdGhlIHN1cHBsaWVkIHZlY3Rvci4gIEEgbGVuZ3Ro
IG9mIHplcm8gY2F1c2VzCisgKiAgICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiB0byByZXR1
cm4gdGhlIG51bWJlciBvZiBzdGF0dXMgdmFsdWVzLCBpbiB0aGUKKyAqICAgICAgICAgICAgICAg
ICAgbm9ybWFsIHdheSwgd2l0aG91dCBhdHRlbXRwaW5nIHRvIHN0b3JlIGFueSB2YWx1ZXMuCisg
KiBAcGFyYW0gc3RhdHVzICAgIHJlY2VpdmVzIGVycm9yIGNvZGVzLgorICogQHJldHVybiAgICAg
ICAgICBUaGUgbnVtYmVyIG9mIHJ1bGUgc3RhdHVzIHZhbHVlcyBmcm9tIHJ1bGVzIHRoYXQgZGV0
ZXJtaW5lZAorICogICAgICAgICAgICAgICAgICB0aGUgbW9zdCByZWNlbnQgYm91bmRhcnkgcmV0
dXJuZWQgYnkgdGhlIGJyZWFrIGl0ZXJhdG9yLgorICogQHN0YWJsZSBJQ1UgMy4wCisgKi8KK1Vf
U1RBQkxFICBpbnQzMl90IFVfRVhQT1JUMgordWJya19nZXRSdWxlU3RhdHVzVmVjKFVCcmVha0l0
ZXJhdG9yICpiaSwgaW50MzJfdCAqZmlsbEluVmVjLCBpbnQzMl90IGNhcGFjaXR5LCBVRXJyb3JD
b2RlICpzdGF0dXMpOworCisvKioKKyAqIFJldHVybiB0aGUgbG9jYWxlIG9mIHRoZSBicmVhayBp
dGVyYXRvci4gWW91IGNhbiBjaG9vc2UgYmV0d2VlbiB0aGUgdmFsaWQgYW5kCisgKiB0aGUgYWN0
dWFsIGxvY2FsZS4KKyAqIEBwYXJhbSBiaSBicmVhayBpdGVyYXRvcgorICogQHBhcmFtIHR5cGUg
bG9jYWxlIHR5cGUgKHZhbGlkIG9yIGFjdHVhbCkKKyAqIEBwYXJhbSBzdGF0dXMgZXJyb3IgY29k
ZQorICogQHJldHVybiBsb2NhbGUgc3RyaW5nCisgKiBAc3RhYmxlIElDVSAyLjgKKyAqLworVV9T
VEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1YnJrX2dldExvY2FsZUJ5VHlwZShjb25zdCBV
QnJlYWtJdGVyYXRvciAqYmksIFVMb2NEYXRhTG9jYWxlVHlwZSB0eXBlLCBVRXJyb3JDb2RlKiBz
dGF0dXMpOworCisvKioKKyAgKiAgU2V0IHRoZSBzdWJqZWN0IHRleHQgc3RyaW5nIHVwb24gd2hp
Y2ggdGhlIGJyZWFrIGl0ZXJhdG9yIGlzIG9wZXJhdGluZworICAqICB3aXRob3V0IGNoYW5naW5n
IGFueSBvdGhlciBhc3BlY3Qgb2YgdGhlIHN0YXRlLgorICAqICBUaGUgbmV3IGFuZCBwcmV2aW91
cyB0ZXh0IHN0cmluZ3MgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuCisgICoKKyAgKiAgVGhp
cyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGVudmlyb25tZW50cyB3aGVyZSBJQ1Ug
aXMgb3BlcmF0aW5nIG9uCisgICogIHN0cmluZ3MgdGhhdCBtYXkgbW92ZSBhcm91bmQgaW4gbWVt
b3J5LiAgSXQgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIG5vdGlmeWluZworICAqICBJQ1UgdGhh
dCB0aGUgc3RyaW5nIGhhcyBiZWVuIHJlbG9jYXRlZCwgYW5kIHByb3ZpZGluZyBhIG5ldyBVVGV4
dCB0byBhY2Nlc3MgdGhlCisgICogIHN0cmluZyBpbiBpdHMgbmV3IHBvc2l0aW9uLgorICAqCisg
ICogIE5vdGUgdGhhdCB0aGUgYnJlYWsgaXRlcmF0b3IgbmV2ZXIgY29waWVzIHRoZSB1bmRlcmx5
aW5nIHRleHQKKyAgKiAgb2YgYSBzdHJpbmcgYmVpbmcgcHJvY2Vzc2VkLCBidXQgYWx3YXlzIG9w
ZXJhdGVzIGRpcmVjdGx5IG9uIHRoZSBvcmlnaW5hbCB0ZXh0CisgICogIHByb3ZpZGVkIGJ5IHRo
ZSB1c2VyLiBSZWZyZXNoaW5nIHNpbXBseSBkcm9wcyB0aGUgcmVmZXJlbmNlcyB0byB0aGUgb2xk
IHRleHQKKyAgKiAgYW5kIHJlcGxhY2VzIHRoZW0gd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBuZXcu
CisgICoKKyAgKiAgQ2F1dGlvbjogIHRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgdXNlZCBvbmx5
IGJ5IHZlcnkgc3BlY2lhbGl6ZWQKKyAgKiAgICAgICAgICAgIHN5c3RlbS1sZXZlbCBjb2RlLiAg
IE9uZSBleGFtcGxlIHVzZSBjYXNlIGlzIHdpdGggZ2FyYmFnZSBjb2xsZWN0aW9uCisgICogICAg
ICAgICAgICB0aGF0IG1vdmVzIHRoZSB0ZXh0IGluIG1lbW9yeS4KKyAgKgorICAqIEBwYXJhbSBi
aSAgICAgICAgIFRoZSBicmVhayBpdGVyYXRvci4KKyAgKiBAcGFyYW0gdGV4dCAgICAgICBUaGUg
bmV3IChtb3ZlZCkgdGV4dCBzdHJpbmcuCisgICogQHBhcmFtIHN0YXR1cyAgICAgUmVjZWl2ZXMg
ZXJyb3JzIGRldGVjdGVkIGJ5IHRoaXMgZnVuY3Rpb24uCisgICoKKyAgKiBAc3RhYmxlIElDVSA0
OQorICAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VicmtfcmVmcmVzaFVUZXh0KFVCcmVh
a0l0ZXJhdG9yICpiaSwKKyAgICAgICAgICAgICAgICAgICAgICAgVVRleHQgICAgICAgICAgKnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICpzdGF0dXMpOworCisj
ZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0JSRUFLX0lURVJBVElPTiAqLworCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRleHQuaCBiL1NvdXJjZS9XVEYvaWN1
L3VuaWNvZGUvdXRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDMxOTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIy
MjE1ZTY0ZmYzMzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi9pY3UvdW5pY29kZS91
dGV4dC5oCkBAIC0wLDAgKzEsMTYwMCBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoK
KyogICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgor
KgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIGZpbGUgbmFtZTogIHV0ZXh0LmgKKyogICBl
bmNvZGluZzogICBVUy1BU0NJSQorKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQorKiAgIGlu
ZGVudGF0aW9uOjQKKyoKKyogICBjcmVhdGVkIG9uOiAyMDA0b2N0MDYKKyogICBjcmVhdGVkIGJ5
OiBNYXJrdXMgVy4gU2NoZXJlcgorKi8KKworI2lmbmRlZiBfX1VURVhUX0hfXworI2RlZmluZSBf
X1VURVhUX0hfXworCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IEFic3RyYWN0IFVu
aWNvZGUgVGV4dCBBUEkKKyAqCisgKiBUaGUgVGV4dCBBY2Nlc3MgQVBJIHByb3ZpZGVzIGEgbWVh
bnMgdG8gYWxsb3cgdGV4dCB0aGF0IGlzIHN0b3JlZCBpbiBhbHRlcm5hdGl2ZQorICogZm9ybWF0
cyB0byB3b3JrIHdpdGggSUNVIHNlcnZpY2VzLiAgSUNVIG5vcm1hbGx5IG9wZXJhdGVzIG9uIHRl
eHQgdGhhdCBpcworICogc3RvcmVkIGluIFVURi0xNiBmb3JtYXQsIGluIChVQ2hhciAqKSBhcnJh
eXMgZm9yIHRoZSBDIEFQSXMgb3IgYXMgdHlwZQorICogVW5pY29kZVN0cmluZyBmb3IgQysrIEFQ
SXMuCisgKgorICogSUNVIFRleHQgQWNjZXNzIGFsbG93cyBvdGhlciBmb3JtYXRzLCBzdWNoIGFz
IFVURi04IG9yIG5vbi1jb250aWd1b3VzCisgKiBVVEYtMTYgc3RyaW5ncywgdG8gYmUgcGxhY2Vk
IGluIGEgVVRleHQgd3JhcHBlciBhbmQgdGhlbiBwYXNzZWQgdG8gSUNVIHNlcnZpY2VzLgorICoK
KyAqIFRoZXJlIGFyZSB0aHJlZSBnZW5lcmFsIGNsYXNzZXMgb2YgdXNhZ2UgZm9yIFVUZXh0Ogor
ICoKKyAqICAgICBBcHBsaWNhdGlvbiBMZXZlbCBVc2UuICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB1
c2FnZSAtIGFwcGxpY2F0aW9ucyB3b3VsZAorICogICAgIHVzZSBvbmUgb2YgdGhlIHV0ZXh0X29w
ZW4oKSBmdW5jdGlvbnMgb24gdGhlaXIgaW5wdXQgdGV4dCwgYW5kIHBhc3MKKyAqICAgICB0aGUg
cmVzdWx0aW5nIFVUZXh0IHRvIHRoZSBkZXNpcmVkIElDVSBzZXJ2aWNlLgorICoKKyAqICAgICBT
ZWNvbmQgaXMgdXNhZ2UgaW4gSUNVIFNlcnZpY2VzLCBzdWNoIGFzIGJyZWFrIGl0ZXJhdGlvbiwg
dGhhdCB3aWxsIG5lZWQgdG8KKyAqICAgICBvcGVyYXRlIG9uIGlucHV0IHByZXNlbnRlZCB0byB0
aGVtIGFzIGEgVVRleHQuICBUaGVzZSBpbXBsZW1lbnRhdGlvbnMKKyAqICAgICB3aWxsIG5lZWQg
dG8gdXNlIHRoZSBpdGVyYXRpb24gYW5kIHJlbGF0ZWQgVVRleHQgZnVuY3Rpb25zIHRvIGdhaW4K
KyAqICAgICBhY2Nlc3MgdG8gdGhlIGFjdHVhbCB0ZXh0LgorICoKKyAqICAgICBUaGUgdGhpcmQg
Y2xhc3Mgb2YgVVRleHQgdXNlcnMgYXJlICJ0ZXh0IHByb3ZpZGVycy4iICBUaGVzZSBhcmUgdGhl
CisgKiAgICAgVVRleHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgdmFyaW91cyB0ZXh0IHN0b3Jh
Z2UgZm9ybWF0cy4gIEFuIGFwcGxpY2F0aW9uCisgKiAgICAgb3Igc3lzdGVtIHdpdGggYSB1bmlx
dWUgdGV4dCBzdG9yYWdlIGZvcm1hdCBjYW4gaW1wbGVtZW50IGEgc2V0IG9mCisgKiAgICAgVVRl
eHQgcHJvdmlkZXIgZnVuY3Rpb25zIGZvciB0aGF0IGZvcm1hdCwgd2hpY2ggd2lsbCB0aGVuIGFs
bG93CisgKiAgICAgSUNVIHNlcnZpY2VzIHRvIG9wZXJhdGUgb24gdGhhdCBmb3JtYXQuCisgKgor
ICoKKyAqIDxlbT5JdGVyYXRpbmcgb3ZlciB0ZXh0PC9lbT4KKyAqCisgKiBIZXJlIGlzIHNhbXBs
ZSBjb2RlIGZvciBhIGZvcndhcmQgaXRlcmF0aW9uIG92ZXIgdGhlIGNvbnRlbnRzIG9mIGEgVVRl
eHQKKyAqCisgKiBcY29kZQorICogICAgVUNoYXIzMiAgYzsKKyAqICAgIFVUZXh0ICAgICp1dCA9
IHdoYXRldmVyKCk7CisgKgorICogICAgZm9yIChjPXV0ZXh0X25leHQzMkZyb20odXQsIDApOyBj
Pj0wOyBjPXV0ZXh0X25leHQzMih1dCkpIHsKKyAqICAgICAgIC8vIGRvIHdoYXRldmVyIHdpdGgg
dGhlIGNvZGVwb2ludCBjIGhlcmUuCisgKiAgICB9CisgKiBcZW5kY29kZQorICoKKyAqIEFuZCBo
ZXJlIGlzIHNpbWlsYXIgY29kZSB0byBpdGVyYXRlIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwg
ZnJvbSB0aGUgZW5kCisgKiBvZiB0aGUgdGV4dCB0b3dhcmRzIHRoZSBiZWdpbm5pbmcuCisgKgor
ICogXGNvZGUKKyAqICAgIFVDaGFyMzIgIGM7CisgKiAgICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZl
cigpOworICogICAgaW50ICAgICAgdGV4dExlbmd0aCA9IHV0ZXh0X25hdGl2ZUxlbmd0aCh1dCk7
CisgKiAgICBmb3IgKGM9dXRleHRfcHJldmlvdXMzMkZyb20odXQsIHRleHRMZW5ndGgpOyBjPj0w
OyBjPXV0ZXh0X3ByZXZpb3VzMzIodXQpKSB7CisgKiAgICAgICAvLyBkbyB3aGF0ZXZlciB3aXRo
IHRoZSBjb2RlcG9pbnQgYyBoZXJlLgorICogICAgfQorICogXGVuZGNvZGUKKyAqCisgKiA8ZW0+
Q2hhcmFjdGVycyBhbmQgSW5kZXhpbmc8L2VtPgorICoKKyAqIEluZGV4aW5nIGludG8gdGV4dCBi
eSBVVGV4dCBmdW5jdGlvbnMgaXMgbmVhcmx5IGFsd2F5cyBpbiB0ZXJtcyBvZiB0aGUgbmF0aXZl
CisgKiBpbmRleGluZyBvZiB0aGUgdW5kZXJseWluZyB0ZXh0IHN0b3JhZ2UuICBUaGUgc3RvcmFn
ZSBmb3JtYXQgY291bGQgYmUgVVRGLTgKKyAqIG9yIFVURi0zMiwgZm9yIGV4YW1wbGUuICBXaGVu
IGNvZGluZyB0byB0aGUgVVRleHQgYWNjZXNzIEFQSSwgbm8gYXNzdW1wdGlvbnMKKyAqIGNhbiBi
ZSBtYWRlIHJlZ2FyZGluZyB0aGUgc2l6ZSBvZiBjaGFyYWN0ZXJzLCBvciBob3cgZmFyIGFuIGlu
ZGV4CisgKiBtYXkgbW92ZSB3aGVuIGl0ZXJhdGluZyBiZXR3ZWVuIGNoYXJhY3RlcnMuCisgKgor
ICogQWxsIGluZGljZXMgc3VwcGxpZWQgdG8gVVRleHQgZnVuY3Rpb25zIGFyZSBwaW5uZWQgdG8g
dGhlIGxlbmd0aCBvZiB0aGUKKyAqIHRleHQuICBBbiBvdXQtb2YtYm91bmRzIGluZGV4IGlzIG5v
dCBjb25zaWRlcmVkIHRvIGJlIGFuIGVycm9yLCBidXQgaXMKKyAqIGFkanVzdGVkIHRvIGJlIGlu
IHRoZSByYW5nZSAgMCA8PSBpbmRleCA8PSBsZW5ndGggb2YgaW5wdXQgdGV4dC4KKyAqCisgKgor
ICogV2hlbiBhbiBpbmRleCBwb3NpdGlvbiBpcyByZXR1cm5lZCBmcm9tIGEgVVRleHQgZnVuY3Rp
b24sIGl0IHdpbGwgYmUKKyAqIGEgbmF0aXZlIGluZGV4IHRvIHRoZSB1bmRlcmx5aW5nIHRleHQu
ICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11bml0IGNoYXJhY3RlcnMsCisgKiBpdCB3aWxsICBhbHdh
eXMgcmVmZXIgdG8gdGhlIGZpcnN0IHBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIsCisgKiBuZXZl
ciB0byB0aGUgaW50ZXJpb3IuICBUaGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIHRoaW5nIGFz
IHNheWluZyB0aGF0CisgKiBhIHJldHVybmVkIGluZGV4IHdpbGwgYWx3YXlzIHBvaW50IHRvIGEg
Ym91bmRhcnkgYmV0d2VlbiBjaGFyYWN0ZXJzLgorICoKKyAqIFdoZW4gYSBuYXRpdmUgaW5kZXgg
aXMgc3VwcGxpZWQgdG8gYSBVVGV4dCBmdW5jdGlvbiwgYWxsIGluZGljZXMgdGhhdAorICogcmVm
ZXIgdG8gYW55IHBhcnQgb2YgYSBtdWx0aS11bml0IGNoYXJhY3RlciByZXByZXNlbnRhdGlvbiBh
cmUgY29uc2lkZXJlZAorICogdG8gYmUgZXF1aXZhbGVudC4gIEluIHRoZSBjYXNlIG9mIG11bHRp
LXVuaXQgY2hhcmFjdGVycywgYW4gaW5jb21pbmcgaW5kZXgKKyAqIHdpbGwgYmUgbG9naWNhbGx5
IG5vcm1hbGl6ZWQgdG8gcmVmZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjaGFyYWN0ZXIuCisgKiAK
KyAqIEl0IGlzIHBvc3NpYmxlIHRvIHRlc3Qgd2hldGhlciBhIG5hdGl2ZSBpbmRleCBpcyBvbiBh
IGNvZGUgcG9pbnQgYm91bmRhcnkKKyAqIGJ5IGRvaW5nIGEgdXRleHRfc2V0TmF0aXZlSW5kZXgo
KSBmb2xsb3dlZCBieSBhIHV0ZXh0X2dldE5hdGl2ZUluZGV4KCkuCisgKiBJZiB0aGUgaW5kZXgg
aXMgcmV0dXJuZWQgdW5jaGFuZ2VkLCBpdCB3YXMgb24gYSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAg
SWYKKyAqIGFuIGFkanVzdGVkIGluZGV4IGlzIHJldHVybmVkLCB0aGUgb3JpZ2luYWwgaW5kZXgg
cmVmZXJyZWQgdG8gdGhlCisgKiBpbnRlcmlvciBvZiBhIGNoYXJhY3Rlci4KKyAqCisgKiA8ZW0+
Q29udmVudGlvbnMgZm9yIGNhbGxpbmcgVVRleHQgZnVuY3Rpb25zPC9lbT4KKyAqCisgKiBNb3N0
IFVUZXh0IGFjY2VzcyBmdW5jdGlvbnMgaGF2ZSBhcyB0aGVpciBmaXJzdCBwYXJhbWV0ZXIgYSAo
VVRleHQgKikgcG9pbnRlciwKKyAqIHdoaWNoIHNwZWNpZmllcyB0aGUgVVRleHQgdG8gYmUgdXNl
ZC4gIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZQorICogcG9pbnRlciBtdXN0IHJlZmVyIHRv
IGEgdmFsaWQsIG9wZW4gVVRleHQuICBBdHRlbXB0aW5nIHRvCisgKiB1c2UgYSBjbG9zZWQgVVRl
eHQgb3IgcGFzc2luZyBhIE5VTEwgcG9pbnRlciBpcyBhIHByb2dyYW1taW5nIGVycm9yIGFuZAor
ICogd2lsbCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRzIG9yIE5VTEwgcG9pbnRlciBleGNlcHRp
b25zLgorICogCisgKiBUaGUgVVRleHRfT3BlbiBmYW1pbHkgb2YgZnVuY3Rpb25zIGNhbiBlaXRo
ZXIgb3BlbiBhbiBleGlzdGluZyAoY2xvc2VkKQorICogVVRleHQsIG9yIGhlYXAgYWxsb2NhdGUg
YSBuZXcgVVRleHQuICBIZXJlIGlzIHNhbXBsZSBjb2RlIGZvciBjcmVhdGluZworICogYSBzdGFj
ay1hbGxvY2F0ZWQgVVRleHQuCisgKgorICogXGNvZGUKKyAqICAgIGNoYXIgICAgICpzID0gd2hh
dGV2ZXIoKTsgIC8vIEEgdXRmLTggc3RyaW5nIAorICogICAgVV9FcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICogICAgVVRleHQgICAgdXQgPSBVVEVYVF9JTklUSUFMSVpFUjsKKyAq
ICAgIHV0ZXh0X29wZW5VVEY4KHV0LCBzLCAtMSwgJnN0YXR1cyk7CisgKiAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpIHsKKyAqICAgICAgICAvLyBlcnJvciBoYW5kbGluZworICogICAgfSBlbHNl
IHsKKyAqICAgICAgICAvLyB3b3JrIHdpdGggdGhlIFVUZXh0CisgKiAgICB9CisgKiBcZW5kY29k
ZQorICoKKyAqIEFueSBleGlzdGluZyBVVGV4dCBwYXNzZWQgdG8gYW4gb3BlbiBmdW5jdGlvbiBf
bXVzdF8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLCAKKyAqIGVpdGhlciBieSB0aGUgVVRFWFRfSU5J
VElBTElaRVIsIG9yIGJ5IGhhdmluZyBiZWVuIG9yaWdpbmFsbHkgaGVhcC1hbGxvY2F0ZWQKKyAq
IGJ5IGFuIG9wZW4gZnVuY3Rpb24uICBQYXNzaW5nIE5VTEwgd2lsbCBjYXVzZSB0aGUgb3BlbiBm
dW5jdGlvbiB0bworICogaGVhcC1hbGxvY2F0ZSBhbmQgZnVsbHkgaW5pdGlhbGl6ZSBhIG5ldyBV
VGV4dC4KKyAqCisgKi8KKworCisKKyNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgorI2luY2x1
ZGUgInVuaWNvZGUvdWNoYXIuaCIKKyNpZiBVX1NIT1dfQ1BMVVNQTFVTX0FQSQorI2luY2x1ZGUg
InVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCisjaW5jbHVkZSAidW5pY29kZS9yZXAuaCIKKyNpbmNs
dWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUgInVuaWNvZGUvY2hhcml0ZXIuaCIKKyNl
bmRpZgorCisKK1VfQ0RFQ0xfQkVHSU4KKworc3RydWN0IFVUZXh0OwordHlwZWRlZiBzdHJ1Y3Qg
VVRleHQgVVRleHQ7IC8qKjwgQyB0eXBlZGVmIGZvciBzdHJ1Y3QgVVRleHQuIEBzdGFibGUgSUNV
IDMuNiAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEMg
RnVuY3Rpb25zIGZvciBjcmVhdGluZyBVVGV4dCB3cmFwcGVycyBhcm91bmQgdmFyaW91cyBraW5k
cyBvZiB0ZXh0IHN0cmluZ3MuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CisKKworLyoqCisgICogQ2xvc2UgZnVuY3Rpb24gZm9yIFVUZXh0IGluc3RhbmNlcy4KKyAgKiBD
bGVhbnMgdXAsIHJlbGVhc2VzIGFueSByZXNvdXJjZXMgYmVpbmcgaGVsZCBieSBhbiBvcGVuIFVU
ZXh0LgorICAqIDxwPgorICAqICAgSWYgdGhlIFVUZXh0IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRl
ZCBieSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4gZnVuY3Rpb25zLAorICAqICAgdGhlIHN0b3JhZ2Ug
YXNzb2NpYXRlZCB3aXRoIHRoZSB1dGV4dCB3aWxsIGFsc28gYmUgZnJlZWQuCisgICogICBJZiB0
aGUgVVRleHQgc3RvcmFnZSBvcmlnaW5hdGVkIHdpdGggdGhlIGFwcGxpY2F0aW9uLCBhcyBpdCB3
b3VsZCB3aXRoCisgICogICBhIGxvY2FsIG9yIHN0YXRpYyBpbnN0YW5jZSwgdGhlIHN0b3JhZ2Ug
d2lsbCBub3QgYmUgZGVsZXRlZC4KKyAgKgorICAqICAgQW4gb3BlbiBVVGV4dCBjYW4gYmUgcmVz
ZXQgdG8gcmVmZXIgdG8gbmV3IHN0cmluZyBieSB1c2luZyBvbmUgb2YgdGhlIHV0ZXh0X29wZW4o
KQorICAqICAgZnVuY3Rpb25zIHdpdGhvdXQgZmlyc3QgY2xvc2luZyB0aGUgVVRleHQuICAKKyAg
KgorICAqIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJlIGNsb3NlZC4KKyAgKiBAcmV0dXJuICAg
IE5VTEwgaWYgdGhlIFVUZXh0IHN0cnVjdCB3YXMgZGVsZXRlZCBieSB0aGUgY2xvc2UuICBJZiB0
aGUgVVRleHQgc3RydWN0CisgICogICAgICAgICAgICB3YXMgb3JpZ2luYWxseSBwcm92aWRlZCBi
eSB0aGUgY2FsbGVyIHRvIHRoZSBvcGVuIGZ1bmN0aW9uLCBpdCBpcworICAqICAgICAgICAgICAg
cmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIG1heSBiZSBzYWZlbHkgdXNlZCBhZ2FpbiBp
bgorICAqICAgICAgICAgICAgYSBzdWJzZXF1ZW50IHV0ZXh0X29wZW4uCisgICoKKyAgKiBAc3Rh
YmxlIElDVSAzLjQKKyAgKi8KK1VfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9jbG9z
ZShVVGV4dCAqdXQpOworCisjaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKKworVV9OQU1FU1BBQ0Vf
QkVHSU4KKworLyoqCisgKiBcY2xhc3MgTG9jYWxVVGV4dFBvaW50ZXIKKyAqICJTbWFydCBwb2lu
dGVyIiBjbGFzcywgY2xvc2VzIGEgVVRleHQgdmlhIHV0ZXh0X2Nsb3NlKCkuCisgKiBGb3IgbW9z
dCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoKKyAqIEBz
ZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFibGUgSUNV
IDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVVGV4dFBvaW50ZXIs
IFVUZXh0LCB1dGV4dF9jbG9zZSk7CisKK1VfTkFNRVNQQUNFX0VORAorCisjZW5kaWYKKworLyoq
CisgKiBPcGVuIGEgcmVhZC1vbmx5IFVUZXh0IGltcGxlbWVudGF0aW9uIGZvciBVVEYtOCBzdHJp
bmdzLgorICogCisgKiBcaHRtbG9ubHkKKyAqIEFueSBpbnZhbGlkIFVURi04IGluIHRoZSBpbnB1
dCB3aWxsIGJlIGhhbmRsZWQgaW4gdGhpcyB3YXk6CisgKiBhIHNlcXVlbmNlIG9mIGJ5dGVzIHRo
YXQgaGFzIHRoZSBmb3JtIG9mIGEgdHJ1bmNhdGVkLCBidXQgb3RoZXJ3aXNlIHZhbGlkLAorICog
VVRGLTggc2VxdWVuY2Ugd2lsbCBiZSByZXBsYWNlZCBieSBhIHNpbmdsZSB1bmljb2RlIHJlcGxh
Y2VtZW50IGNoYXJhY3RlciwgXHVGRkZELiAKKyAqIEFueSBvdGhlciBpbGxlZ2FsIGJ5dGVzIHdp
bGwgZWFjaCBiZSByZXBsYWNlZCBieSBhIFx1RkZGRC4KKyAqIFxlbmRodG1sb25seQorICogCisg
KiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5l
dyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBt
dXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVu
CisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIFVU
Ri04IHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBVVEYtOCBzdHJpbmcuICBNdXN0IG5vdCBi
ZSBOVUxMLgorICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBVVEYtOCBzdHJpbmcg
aW4gYnl0ZXMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMKKyAqICAgICAgICAgICAgICAgemVybyB0
ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUuCisg
KiBAcmV0dXJuICAgICAgIEEgcG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIHByZS1hbGxvY2F0
ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBpdAorICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBi
ZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBV
VGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlblVURjgoVVRleHQgKnV0LCBjb25zdCBjaGFyICpz
LCBpbnQ2NF90IGxlbmd0aCwgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIE9wZW4g
YSByZWFkLW9ubHkgVVRleHQgZm9yIFVDaGFyICogc3RyaW5nLgorICogCisgKiBAcGFyYW0gdXQg
ICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxs
IGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRv
IGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAg
ICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIFVDaGFyIHN0cmluZy4K
KyAqIEBwYXJhbSBzICAgICAgQSBVQ2hhciAoVVRGLTE2KSBzdHJpbmcKKyAqIEBwYXJhbSBsZW5n
dGggVGhlIG51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGlucHV0IHN0cmluZywgb3IgLTEgaWYgdGhl
IHN0cmluZyBpcworICogICAgICAgICAgICAgICB6ZXJvIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0g
c3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAgQSBwb2lu
dGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgcHJlLWFsbG9jYXRlZCBVVGV4dCB3YXMgcHJvdmlkZWQs
IGl0CisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVybmVkLgor
ICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4
dF9vcGVuVUNoYXJzKFVUZXh0ICp1dCwgY29uc3QgVUNoYXIgKnMsIGludDY0X3QgbGVuZ3RoLCBV
RXJyb3JDb2RlICpzdGF0dXMpOworCisKKyNpZiBVX1NIT1dfQ1BMVVNQTFVTX0FQSQorLyoqCisg
KiBPcGVuIGEgd3JpdGFibGUgVVRleHQgZm9yIGEgbm9uLWNvbnN0IFVuaWNvZGVTdHJpbmcuIAor
ICogCisgKiBAcGFyYW0gdXQgICAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVM
TCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICAgIElmIG5v
bi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2gg
d2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBz
cGVjaWZpZWQgaW5wdXQgc3RyaW5nLgorICogQHBhcmFtIHMgICAgICAgQSBVbmljb2RlU3RyaW5n
LgorICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUuCisgKiBAcmV0dXJu
ICAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgVVRleHQgd2FzIHN1cHBsaWVkIGFz
IGlucHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgICAgd2lsbCBhbHdheXMgYmUgdXNlZCBhbmQg
cmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVVRleHQgKiBVX0VY
UE9SVDIKK3V0ZXh0X29wZW5Vbmljb2RlU3RyaW5nKFVUZXh0ICp1dCwgaWN1OjpVbmljb2RlU3Ry
aW5nICpzLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisKKy8qKgorICogT3BlbiBhIFVUZXh0IGZv
ciBhIGNvbnN0IFVuaWNvZGVTdHJpbmcuICAgVGhlIHJlc3VsdGluZyBVVGV4dCB3aWxsIG5vdCBi
ZSB3cml0YWJsZS4KKyAqIAorICogQHBhcmFtIHV0ICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1
Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAg
ICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVj
dCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5j
ZSB0aGUgc3BlY2lmaWVkIGlucHV0IHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBjb25zdCBV
bmljb2RlU3RyaW5nIHRvIGJlIHdyYXBwZWQuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUg
cmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJ
ZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwgdGhpcworICogICAgICAgICAgICAgICB3
aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICov
CitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlbkNvbnN0VW5pY29kZVN0cmlu
ZyhVVGV4dCAqdXQsIGNvbnN0IGljdTo6VW5pY29kZVN0cmluZyAqcywgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKKworCisvKioKKyAqIE9wZW4gYSB3cml0YWJsZSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBm
b3IgYW4gSUNVIFJlcGxhY2VhYmxlIG9iamVjdC4KKyAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRv
IGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgor
ICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCByZWZlciB0byBhbiBhbHJlYWR5IGV4
aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4KKyAqICAgICAgICAgICAgICAgYmUgcmVzZXQg
dG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVwbGFjZWFibGUgdGV4dC4KKyAqIEBwYXJhbSBy
ZXAgICAgQSBSZXBsYWNlYWJsZSB0ZXh0IG9iamVjdC4KKyAqIEBwYXJhbSBzdGF0dXMgRXJyb3Jz
IGFyZSByZXR1cm5lZCBoZXJlLgorICogQHJldHVybiAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4
dC4gIElmIGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCisgKiAgICAgICAgICAg
ICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVybmVkLgorICogQHNlZSBSZXBsYWNlYWJs
ZQorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCit1
dGV4dF9vcGVuUmVwbGFjZWFibGUoVVRleHQgKnV0LCBpY3U6OlJlcGxhY2VhYmxlICpyZXAsIFVF
cnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3BlbiBhICBVVGV4dCBpbXBsZW1lbnRhdGlv
biBvdmVyIGFuIElDVSBDaGFyYWN0ZXJJdGVyYXRvci4KKyAqIEBwYXJhbSB1dCAgICBQb2ludGVy
IHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVk
LgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCByZWZlciB0byBhbiBhbHJlYWR5
IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4KKyAqICAgICAgICAgICAgICAgYmUgcmVz
ZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVwbGFjZWFibGUgdGV4dC4KKyAqIEBwYXJh
bSBjaSAgICAgQSBDaGFyYWN0ZXIgSXRlcmF0b3IuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBh
cmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAgUG9pbnRlciB0byB0aGUgVVRleHQu
ICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwgdGhpcworICogICAgICAgICAgICAg
ICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAqIEBzZWUgUmVwbGFjZWFibGUK
KyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRl
eHRfb3BlbkNoYXJhY3Rlckl0ZXJhdG9yKFVUZXh0ICp1dCwgaWN1OjpDaGFyYWN0ZXJJdGVyYXRv
ciAqY2ksIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNlbmRpZgorCisKKy8qKgorICAqICBDbG9u
ZSBhIFVUZXh0LiAgVGhpcyBpcyBtdWNoIGxpa2Ugb3BlbmluZyBhIFVUZXh0IHdoZXJlIHRoZSBz
b3VyY2UgdGV4dCBpcyBpdHNlbGYKKyAgKiAgYW5vdGhlciBVVGV4dC4KKyAgKgorICAqICBBIGRl
ZXAgY2xvbmUgd2lsbCBjb3B5IGJvdGggdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlcyBhbmQgdGhl
IHVuZGVybHlpbmcgdGV4dC4KKyAgKiAgVGhlIG9yaWdpbmFsIGFuZCBjbG9uZWQgVVRleHQgd2ls
bCBvcGVyYXRlIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnRseTsgbW9kaWZpY2F0aW9ucworICAqICBt
YWRlIHRvIHRoZSB0ZXh0IGluIG9uZSB3aWxsIG5vdCBhZmZlY3QgdGhlIG90aGVyLiAgVGV4dCBw
cm92aWRlcnMgYXJlIG5vdAorICAqICByZXF1aXJlZCB0byBzdXBwb3J0IGRlZXAgY2xvbmVzLiAg
VGhlIHVzZXIgb2YgY2xvbmUoKSBtdXN0IGNoZWNrIHRoZSBzdGF0dXMgcmV0dXJuCisgICogIGFu
ZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgZmFpbHVyZXMuCisgICoKKyAgKiAgVGhlIHN0YW5kYXJk
IFVUZXh0IGltcGxlbWVudGF0aW9ucyBmb3IgVVRGOCwgVUNoYXIgKiwgVW5pY29kZVN0cmluZyBh
bmQKKyAgKiAgUmVwbGFjZWFibGUgYWxsIHN1cHBvcnQgZGVlcCBjbG9uaW5nLgorICAqCisgICog
IFRoZSBVVGV4dCByZXR1cm5lZCBmcm9tIGEgZGVlcCBjbG9uZSB3aWxsIGJlIHdyaXRhYmxlLCBh
c3N1bWluZyB0aGF0IHRoZSB0ZXh0CisgICogIHByb3ZpZGVyIGlzIGFibGUgdG8gc3VwcG9ydCB3
cml0aW5nLCBldmVuIGlmIHRoZSBzb3VyY2UgVVRleHQgaGFkIGJlZW4gbWFkZQorICAqICBub24t
d3JpdGFibGUgYnkgbWVhbnMgb2YgVVRleHRfZnJlZXplKCkuCisgICoKKyAgKiAgQSBzaGFsbG93
IGNsb25lIHJlcGxpY2F0ZXMgb25seSB0aGUgVVRleHQgZGF0YSBzdHJ1Y3R1cmVzOyBpdCBkb2Vz
IG5vdCBtYWtlCisgICogIGEgY29weSBvZiB0aGUgdW5kZXJseWluZyB0ZXh0LiAgU2hhbGxvdyBj
bG9uZXMgY2FuIGJlIHVzZWQgYXMgYW4gZWZmaWNpZW50IHdheSB0byAKKyAgKiAgaGF2ZSBtdWx0
aXBsZSBpdGVyYXRvcnMgYWN0aXZlIGluIGEgc2luZ2xlIHRleHQgc3RyaW5nIHRoYXQgaXMgbm90
IGJlaW5nCisgICogIG1vZGlmaWVkLgorICAqCisgICogIEEgc2hhbGxvdyBjbG9uZSBvcGVyYXRp
b24gd2lsbCBub3QgZmFpbCwgYmFycmluZyB0cnVseSBleGNlcHRpb25hbCBjb25kaXRpb25zIHN1
Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICoKKyAgKiAgU2hhbGxv
dyBVVGV4dCBjbG9uZXMgc2hvdWxkIGJlIGF2b2lkZWQgaWYgdGhlIFVUZXh0IGZ1bmN0aW9ucyB0
aGF0IG1vZGlmeSB0aGUKKyAgKiAgdGV4dCBhcmUgZXhwZWN0ZWQgdG8gYmUgdXNlZCwgZWl0aGVy
IG9uIHRoZSBvcmlnaW5hbCBvciB0aGUgY2xvbmVkIFVUZXh0LgorICAqICBBbnkgc3VjaCBtb2Rp
ZmljYXRpb25zICBjYW4gY2F1c2UgdW5wcmVkaWN0YWJsZSBiZWhhdmlvci4gIFJlYWQgT25seQor
ICAqICBzaGFsbG93IGNsb25lcyBwcm92aWRlIHNvbWUgcHJvdGVjdGlvbiBhZ2FpbnN0IGVycm9y
cyBvZiB0aGlzIHR5cGUgYnkKKyAgKiAgZGlzYWJsaW5nIHRleHQgbW9kaWZpY2F0aW9uIHZpYSB0
aGUgY2xvbmVkIFVUZXh0LgorICAqCisgICogIEEgc2hhbGxvdyBjbG9uZSBtYWRlIHdpdGggdGhl
IHJlYWRPbmx5IHBhcmFtZXRlciA9PSBGQUxTRSB3aWxsIHByZXNlcnZlIHRoZSAKKyAgKiAgdXRl
eHRfaXNXcml0YWJsZSgpIHN0YXRlIG9mIHRoZSBzb3VyY2Ugb2JqZWN0LiAgTm90ZSwgaG93ZXZl
ciwgdGhhdAorICAqICB3cml0ZSBvcGVyYXRpb25zIG11c3QgYmUgYXZvaWRlZCB3aGlsZSBtb3Jl
IHRoYW4gb25lIFVUZXh0IGV4aXN0cyB0aGF0IHJlZmVyCisgICogIHRvIHRoZSBzYW1lIHVuZGVy
bHlpbmcgdGV4dC4KKyAgKgorICAqICBBIFVUZXh0IGFuZCBpdHMgY2xvbmUgbWF5IGJlIHNhZmVs
eSBjb25jdXJyZW50bHkgYWNjZXNzZWQgYnkgc2VwYXJhdGUgdGhyZWFkcy4KKyAgKiAgVGhpcyBp
cyB0cnVlIGZvciByZWFkIGFjY2VzcyBvbmx5IHdpdGggc2hhbGxvdyBjbG9uZXMsIGFuZCBmb3Ig
Ym90aCByZWFkIGFuZAorICAqICB3cml0ZSBhY2Nlc3Mgd2l0aCBkZWVwIGNsb25lcy4KKyAgKiAg
SXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBUZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0
aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25zdHJhaW50IGlzIG1ldC4KKyAgKgorICAq
ICBAcGFyYW0gZGVzdCAgIEEgVVRleHQgc3RydWN0IHRvIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBy
ZXN1bHQgb2YgdGhlIGNsb25lIG9wZXJhdGlvbiwKKyAgKiAgICAgICAgICAgICAgICBvciBOVUxM
IGlmIHRoZSBjbG9uZSBmdW5jdGlvbiBzaG91bGQgaGVhcC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBz
dHJ1Y3QuCisgICogICAgICAgICAgICAgICAgSWYgbm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4g
YWxyZWFkeSBleGlzdGluZyBVVGV4dCwgd2hpY2ggd2lsbCB0aGVuCisgICogICAgICAgICAgICAg
ICAgYmUgcmVzZXQgdG8gYmVjb21lIHRoZSBjbG9uZS4KKyAgKiAgQHBhcmFtIHNyYyAgICBUaGUg
VVRleHQgdG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBh
IGRlZXAgY2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cgY2xvbmUuCisgICogIEBwYXJhbSByZWFk
T25seSBUUlVFIHRvIHJlcXVlc3QgdGhhdCB0aGUgY2xvbmVkIFVUZXh0IGhhdmUgcmVhZCBvbmx5
IGFjY2VzcyB0byB0aGUgCisgICogICAgICAgICAgICAgICAgdW5kZXJseWluZyB0ZXh0LiAgCisK
KyAgKiAgQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUuICBGb3IgZGVlcCBj
bG9uZXMsIFVfVU5TVVBQT1JURURfRVJST1IKKyAgKiAgICAgICAgICAgICAgICB3aWxsIGJlIHJl
dHVybmVkIGlmIHRoZSB0ZXh0IHByb3ZpZGVyIGlzIHVuYWJsZSB0byBjbG9uZSB0aGUKKyAgKiAg
ICAgICAgICAgICAgICBvcmlnaW5hbCB0ZXh0LgorICAqICBAcmV0dXJuICAgICAgIFRoZSBuZXds
eSBjcmVhdGVkIGNsb25lLCBvciBOVUxMIGlmIHRoZSBjbG9uZSBvcGVyYXRpb24gZmFpbGVkLgor
ICAqICBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCit1
dGV4dF9jbG9uZShVVGV4dCAqZGVzdCwgY29uc3QgVVRleHQgKnNyYywgVUJvb2wgZGVlcCwgVUJv
b2wgcmVhZE9ubHksIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKworLyoqCisgICogIENvbXBhcmUg
dHdvIFVUZXh0IG9iamVjdHMgZm9yIGVxdWFsaXR5LgorICAqICBVVGV4dHMgYXJlIGVxdWFsIGlm
IHRoZXkgYXJlIGl0ZXJhdGluZyBvdmVyIHRoZSBzYW1lIHRleHQsIGFuZAorICAqICAgIGhhdmUg
dGhlIHNhbWUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpdGhpbiB0aGUgdGV4dC4KKyAgKiAgICBJZiBl
aXRoZXIgb3IgYm90aCBvZiB0aGUgcGFyYW1ldGVycyBhcmUgTlVMTCwgdGhlIGNvbXBhcmlzb24g
aXMgRkFMU0UuCisgICoKKyAgKiAgQHBhcmFtIGEgICBUaGUgZmlyc3Qgb2YgdGhlIHR3byBVVGV4
dHMgdG8gY29tcGFyZS4KKyAgKiAgQHBhcmFtIGIgICBUaGUgb3RoZXIgVVRleHQgdG8gYmUgY29t
cGFyZWQuCisgICogIEByZXR1cm4gICAgVFJVRSBpZiB0aGUgdHdvIFVUZXh0cyBhcmUgZXF1YWwu
CisgICogIEBzdGFibGUgSUNVIDMuNgorICAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1
dGV4dF9lcXVhbHMoY29uc3QgVVRleHQgKmEsIGNvbnN0IFVUZXh0ICpiKTsKKworCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9ucyB0byB3b3JrIHdpdGggdGhlIHRleHQg
cmVwcmVzZXRlZCBieSBhIFVUZXh0IHdyYXBwZXIKKyAqCisgKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CisKKy8qKgorICAqIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LiAgRGVwZW5kaW5nIG9uIHRo
ZSBjaGFyYWN0ZXJpc3RpY3MKKyAgKiBvZiB0aGUgdW5kZXJseWluZyB0ZXh0IHJlcHJlc2VudGF0
aW9uLCB0aGlzIG1heSBiZSBleHBlbnNpdmUuICAKKyAgKiBAc2VlICB1dGV4dF9pc0xlbmd0aEV4
cGVuc2l2ZSgpCisgICoKKyAgKgorICAqIEBwYXJhbSB1dCAgdGhlIHRleHQgdG8gYmUgYWNjZXNz
ZWQuCisgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LCBleHByZXNzZWQgaW4gbmF0
aXZlIHVuaXRzLgorICAqCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBpbnQ2
NF90IFVfRVhQT1JUMgordXRleHRfbmF0aXZlTGVuZ3RoKFVUZXh0ICp1dCk7CisKKy8qKgorICog
IFJldHVybiBUUlVFIGlmIGNhbGN1bGF0aW5nIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY291bGQg
YmUgZXhwZW5zaXZlLgorICogIEZpbmRpbmcgdGhlIGxlbmd0aCBvZiBOVUwgdGVybWluYXRlZCBz
dHJpbmdzIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXhwZW5zaXZlLgorICoKKyAqICBOb3RlIHRoYXQg
dGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gbWF5IGNoYW5nZQorICogIGFzIHRoZSByZXN1bHQg
b2Ygb3RoZXIgb3BlcmF0aW9ucyBvbiBhIFVUZXh0LgorICogIE9uY2UgdGhlIGxlbmd0aCBvZiBh
IHN0cmluZyBoYXMgYmVlbiBkaXNjb3ZlcmVkLCBpdCB3aWxsIG5vIGxvbmdlcgorICogIGJlIGV4
cGVuc2l2ZSB0byByZXBvcnQgaXQuCisgKgorICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFj
Y2Vzc2VkLgorICogQHJldHVybiBUUlVFIGlmIGRldGVybWluaW5nIHRoZSBsZW5ndGggb2YgdGhl
IHRleHQgY291bGQgYmUgdGltZSBjb25zdW1pbmcuCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwor
VV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9pc0xlbmd0aEV4cGVuc2l2ZShjb25zdCBV
VGV4dCAqdXQpOworCisvKioKKyAqIFJldHVybnMgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIHJlcXVl
c3RlZCBpbmRleCwKKyAqIG9yIFVfU0VOVElORUwgKC0xKSBpZiBpdCBpcyBvdXQgb2YgYm91bmRz
LgorICoKKyAqIElmIHRoZSBzcGVjaWZpZWQgaW5kZXggcG9pbnRzIHRvIHRoZSBpbnRlcmlvciBv
ZiBhIG11bHRpLXVuaXQKKyAqIGNoYXJhY3RlciAtIG9uZSBvZiB0aGUgdHJhaWwgYnl0ZXMgb2Yg
YSBVVEYtOCBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUgLQorICogdGhlIGNvbXBsZXRlIGNvZGUgcG9p
bnQgd2lsbCBiZSByZXR1cm5lZC4KKyAqCisgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwg
YmUgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgcmV0dXJuZWQgY29kZSBwb2ludC4KKyAqCisgKiBU
aGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB0aGUgdGhlIHNlcXVlbmNlCisg
KiAgICB1dGV4dF9zZXROYXRpdmVJbmRleChpbmRleCk7CisgKiAgICB1dGV4dF9jdXJyZW50MzIo
KTsKKyAqIChUaGVyZSBpcyBhIHN1YnRsZSBkaWZmZXJlbmNlIGlmIHRoZSBpbmRleCBpcyBvdXQg
b2YgYm91bmRzIGJ5IGJlaW5nIGxlc3MgdGhhbiB6ZXJvIC0gCisgKiB1dGV4dF9zZXROYXRpdmVJ
bmRleChuZWdhdGl2ZSB2YWx1ZSkgc2V0cyB0aGUgaW5kZXggdG8gemVybywgYWZ0ZXIgd2hpY2gg
dXRleHRfY3VycmVudCgpCisgKiB3aWxsIHJldHVybiB0aGUgY2hhciBhdCB6ZXJvLiAgdXRleHRf
Y2hhcjMyQXQobmVnYXRpdmUgaW5kZXgpLCBvbiB0aGUgb3RoZXIgaGFuZCwgd2lsbAorICogcmV0
dXJuIHRoZSBVX1NFTlRJTkVMIHZhbHVlIG9mIC0xLikKKyAqIAorICogQHBhcmFtIHV0IHRoZSB0
ZXh0IHRvIGJlIGFjY2Vzc2VkCisgKiBAcGFyYW0gbmF0aXZlSW5kZXggdGhlIG5hdGl2ZSBpbmRl
eCBvZiB0aGUgY2hhcmFjdGVyIHRvIGJlIGFjY2Vzc2VkLiAgSWYgdGhlIGluZGV4IHBvaW50cwor
ICogICAgICAgIHRvIG90aGVyIHRoYW4gdGhlIGZpcnN0IHVuaXQgb2YgYSBtdWx0aS11bml0IGNo
YXJhY3RlciwgaXQgd2lsbCBiZSBhZGp1c3RlZAorICogICAgICAgIHRvIHRoZSBzdGFydCBvZiB0
aGUgY2hhcmFjdGVyLgorICogQHJldHVybiB0aGUgY29kZSBwb2ludCBhdCB0aGUgc3BlY2lmaWVk
IGluZGV4LgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBP
UlQyCit1dGV4dF9jaGFyMzJBdChVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisK
Ky8qKgorICoKKyAqIEdldCB0aGUgY29kZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24g
cG9zaXRpb24sCisgKiBvciBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIGl0ZXJhdGlvbiBoYXMgcmVh
Y2hlZCB0aGUgZW5kIG9mCisgKiB0aGUgaW5wdXQgdGV4dC4KKyAqCisgKiBAcGFyYW0gdXQgdGhl
IHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBAcmV0dXJuIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQg
YXQgdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24uCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0ZXh0X2N1cnJlbnQzMihVVGV4dCAqdXQp
OworCisKKy8qKgorICogR2V0IHRoZSBjb2RlIHBvaW50IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlv
biBwb3NpdGlvbiBvZiB0aGUgVVRleHQsIGFuZAorICogYWR2YW5jZSB0aGUgcG9zaXRpb24gdG8g
dGhlIGZpcnN0IGluZGV4IGZvbGxvd2luZyB0aGUgY2hhcmFjdGVyLgorICoKKyAqIElmIHRoZSBw
b3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0ICh0aGUgaW5kZXggZm9sbG93aW5nCisg
KiB0aGUgbGFzdCBjaGFyYWN0ZXIsIHdoaWNoIGlzIGFsc28gdGhlIGxlbmd0aCBvZiB0aGUgdGV4
dCksIAorICogcmV0dXJuIFVfU0VOVElORUwgKC0xKSBhbmQgZG8gbm90IGFkdmFuY2UgdGhlIGlu
ZGV4LiAKKyAqCisgKiBUaGlzIGlzIGEgcG9zdC1pbmNyZW1lbnQgb3BlcmF0aW9uLgorICoKKyAq
IEFuIGlubGluZSBtYWNybyB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24sIFVURVhUX05FWFQzMigp
LCAKKyAqIGlzIGF2YWlsYWJsZSBmb3IgcGVyZm9ybWFuY2UgY3JpdGljYWwgdXNlLgorICoKKyAq
IEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KKyAqIEByZXR1cm4gdGhlIFVuaWNv
ZGUgY29kZSBwb2ludCBhdCB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHNlZSBVVEVYVF9O
RVhUMzIKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JU
MgordXRleHRfbmV4dDMyKFVUZXh0ICp1dCk7CisKKworLyoqCisgKiAgTW92ZSB0aGUgaXRlcmF0
b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJhY3RlciAoY29kZSBwb2ludCkgd2hvc2UKKyAqICBpbmRl
eCBwcmVjZWRlcyB0aGUgY3VycmVudCBwb3NpdGlvbiwgYW5kIHJldHVybiB0aGF0IGNoYXJhY3Rl
ci4KKyAqICBUaGlzIGlzIGEgcHJlLWRlY3JlbWVudCBvcGVyYXRpb24uCisgKgorICogIElmIHRo
ZSBpbml0aWFsIHBvc2l0aW9uIGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCAoaW5kZXggb2Yg
MCkgCisgKiAgcmV0dXJuIFVfU0VOVElORUwgKC0xKSwgYW5kIGxlYXZlIHRoZSBwb3NpdGlvbiB1
bmNoYW5nZWQuCisgKgorICogIEFuIGlubGluZSBtYWNybyB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rp
b24sIFVURVhUX1BSRVZJT1VTMzIoKSwgCisgKiAgaXMgYXZhaWxhYmxlIGZvciBwZXJmb3JtYW5j
ZSBjcml0aWNhbCB1c2UuCisgKgorICogIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3Nl
ZC4KKyAqICBAcmV0dXJuIHRoZSBwcmV2aW91cyBVQ2hhcjMyIGNvZGUgcG9pbnQsIG9yIFVfU0VO
VElORUwgKC0xKSAKKyAqICAgICAgICAgIGlmIHRoZSBpdGVyYXRpb24gaGFzIHJlYWNoZWQgdGhl
IHN0YXJ0IG9mIHRoZSB0ZXh0LgorICogIEBzZWUgVVRFWFRfUFJFVklPVVMzMgorICogIEBzdGFi
bGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfcHJldmlv
dXMzMihVVGV4dCAqdXQpOworCisKKy8qKgorICAqIFNldCB0aGUgaXRlcmF0aW9uIGluZGV4IGFu
ZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhhdCBpbmRleC4gCisgICogTGVhdmUgdGhlIGl0
ZXJhdGlvbiBpbmRleCBhdCB0aGUgc3RhcnQgb2YgdGhlIGZvbGxvd2luZyBjb2RlIHBvaW50Lgor
ICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9zdCBlZmZpY2llbnQgYW5kIGNvbnZlbmll
bnQgd2F5IHRvCisgICogYmVnaW4gYSBmb3J3YXJkIGl0ZXJhdGlvbi4gIFRoZSByZXN1bHRzIGFy
ZSBpZGVudGljYWwgdG8gdGhlIHRob3NlCisgICogZnJvbSB0aGUgc2VxdWVuY2UKKyAgKiBcY29k
ZQorICAqICAgIHV0ZXh0X3NldEluZGV4KCk7CisgICogICAgdXRleHRfbmV4dDMyKCk7CisgICog
XGVuZGNvZGUKKyAgKgorICAqICBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisg
ICogIEBwYXJhbSBuYXRpdmVJbmRleCBJdGVyYXRpb24gaW5kZXgsIGluIHRoZSBuYXRpdmUgdW5p
dHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCisgICogIEByZXR1cm4gQ29kZSBwb2ludCB3aGljaCBz
dGFydHMgYXQgb3IgYmVmb3JlIGluZGV4LAorICAqICAgICAgICAgb3IgVV9TRU5USU5FTCAoLTEp
IGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NU
QUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4dDMyRnJvbShVVGV4dCAqdXQsIGludDY0
X3QgbmF0aXZlSW5kZXgpOworCisKKworLyoqCisgICogU2V0IHRoZSBpdGVyYXRpb24gaW5kZXgs
IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgcHJlY2VkaW5nIHRoZQorICAqIG9uZSBzcGVjaWZp
ZWQgYnkgdGhlIGluaXRpYWwgaW5kZXguICBMZWF2ZSB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisg
ICogYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXR1cm5lZCBjb2RlIHBvaW50LgorICAqCisgICogVGhp
cyBmdW5jdGlvbiBpcyB0aGUgbW9zdCBlZmZpY2llbnQgYW5kIGNvbnZlbmllbnQgd2F5IHRvCisg
ICogYmVnaW4gYSBiYWNrd2FyZHMgaXRlcmF0aW9uLgorICAqCisgICogQHBhcmFtIHV0IHRoZSB0
ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEBwYXJhbSBuYXRpdmVJbmRleCBJdGVyYXRpb24gaW5k
ZXggaW4gdGhlIG5hdGl2ZSB1bml0cyBvZiB0aGUgdGV4dCBwcm92aWRlci4KKyAgKiBAcmV0dXJu
IENvZGUgcG9pbnQgcHJlY2VkaW5nIHRoZSBvbmUgYXQgdGhlIGluaXRpYWwgaW5kZXgsCisgICog
ICAgICAgICBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQgaXMgb3V0IG9mIGJvdW5kcy4KKyAgKgor
ICAqIEBzdGFibGUgSUNVIDMuNAorICAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0
ZXh0X3ByZXZpb3VzMzJGcm9tKFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7CisKKy8q
KgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBwb3NpdGlvbiwgd2hpY2ggY2FuIHJhbmdl
IGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LgorICAqIFRoZSBwb3NpdGlv
biBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1dCB0ZXh0LCBpbiB3aGF0ZXZlciBmb3Jt
YXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRGLTggZm9yIGV4YW1wbGUpLCBhbmQgbWF5
IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0aGUgY29ycmVzcG9uZGluZyBVQ2hhciAo
VVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQgcG9zaXRpb24gd2lsbCBhbHdheXMgYmUg
YWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuIAorICAqCisgICogQHBhcmFtIHV0IHRo
ZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEByZXR1cm4gdGhlIGN1cnJlbnQgaW5kZXggcG9z
aXRpb24sIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCisgICogQHN0
YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBpbnQ2NF90IFVfRVhQT1JUMgordXRleHRfZ2V0
TmF0aXZlSW5kZXgoY29uc3QgVVRleHQgKnV0KTsKKworLyoqCisgKiBTZXQgdGhlIGN1cnJlbnQg
aXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBuZWFyZXN0IGNvZGUgcG9pbnQKKyAqIGJvdW5kYXJ5
IGF0IG9yIHByZWNlZGluZyB0aGUgc3BlY2lmaWVkIGluZGV4LgorICogVGhlIGluZGV4IGlzIGlu
IHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFsIGlucHV0IHRleHQuCisgKiBJZiB0aGUg
aW5kZXggaXMgb3V0IG9mIHJhbmdlLCBpdCB3aWxsIGJlIHBpbm5lZCB0byBiZSB3aXRoaW4KKyAq
IHRoZSByYW5nZSBvZiB0aGUgaW5wdXQgdGV4dC4KKyAqIDxwPgorICogSXQgd2lsbCB1c3VhbGx5
IGJlIG1vcmUgZWZmaWNpZW50IHRvIGJlZ2luIGFuIGl0ZXJhdGlvbgorICogdXNpbmcgdGhlIGZ1
bmN0aW9ucyB1dGV4dF9uZXh0MzJGcm9tKCkgb3IgdXRleHRfcHJldmlvdXMzMkZyb20oKQorICog
cmF0aGVyIHRoYW4gc2V0SW5kZXgoKS4KKyAqIDxwPgorICogTW92aW5nIHRoZSBpbmRleCBwb3Np
dGlvbiB0byBhbiBhZGphY2VudCBjaGFyYWN0ZXIgaXMgYmVzdCBkb25lCisgKiB3aXRoIHV0ZXh0
X25leHQzMigpLCB1dGV4dF9wcmV2aW91czMyKCkgb3IgdXRleHRfbW92ZUluZGV4MzIoKS4KKyAq
IEF0dGVtcHRpbmcgdG8gZG8gZGlyZWN0IGFyaXRobWV0aWMgb24gdGhlIGluZGV4IHBvc2l0aW9u
IGlzCisgKiBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBzaXplIChpbiBuYXRpdmUg
dW5pdHMpIG9mIGEKKyAqIGNoYXJhY3RlciBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0ZXIKKyAqIChVVEYtOCwgVVRGLTE2LCBVVEYtMzIsIGFy
Yml0cmFyeSBjb2RlcGFnZSksIGFuZCBpcyBub3QKKyAqIGVhc2lseSBrbm93YWJsZS4KKyAqCisg
KiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBAcGFyYW0gbmF0aXZlSW5k
ZXggdGhlIG5hdGl2ZSB1bml0IGluZGV4IG9mIHRoZSBuZXcgaXRlcmF0aW9uIHBvc2l0aW9uLgor
ICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9z
ZXROYXRpdmVJbmRleChVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisvKioKKyAq
IE1vdmUgdGhlIGl0ZXJhdG9yIHBvc3Rpb24gYnkgZGVsdGEgY29kZSBwb2ludHMuICBUaGUgbnVt
YmVyIG9mIGNvZGUgcG9pbnRzCisgKiBpcyBhIHNpZ25lZCBudW1iZXI7IGEgbmVnYXRpdmUgZGVs
dGEgd2lsbCBtb3ZlIHRoZSBpdGVyYXRvciBiYWNrd2FyZHMsCisgKiB0b3dhcmRzIHRoZSBzdGFy
dCBvZiB0aGUgdGV4dC4KKyAqIDxwPgorICogVGhlIGluZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRl
bHRhPC9jb2RlPiBjb2RlIHBvaW50cworICogZm9yd2FyZCBvciBiYWNrd2FyZCwgYnV0IG5vIGZ1
cnRoZXIgYmFja3dhcmQgdGhhbiB0byAwIGFuZAorICogbm8gZnVydGhlciBmb3J3YXJkIHRoYW4g
dG8gdXRleHRfbmF0aXZlTGVuZ3RoKCkuCisgKiBUaGUgcmVzdWx0aW5nIGluZGV4IHZhbHVlIHdp
bGwgYmUgaW4gYmV0d2VlbiAwIGFuZCBsZW5ndGgsIGluY2x1c2l2ZS4KKyAqCisgKiBAcGFyYW0g
dXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBAcGFyYW0gZGVsdGEgdGhlIHNpZ25lZCBu
dW1iZXIgb2YgY29kZSBwb2ludHMgdG8gbW92ZSB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uLgorICog
QHJldHVybiBUUlVFIGlmIHRoZSBwb3NpdGlvbiBjb3VsZCBiZSBtb3ZlZCB0aGUgcmVxdWVzdGVk
IG51bWJlciBvZiBwb3NpdGlvbnMgd2hpbGUKKyAqICAgICAgICAgICAgICBzdGF5aW5nIHdpdGhp
biB0aGUgcmFuZ2UgWzAgLSB0ZXh0IGxlbmd0aF0uCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwor
VV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9tb3ZlSW5kZXgzMihVVGV4dCAqdXQsIGlu
dDMyX3QgZGVsdGEpOworCisvKioKKyAqIEdldCB0aGUgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFy
YWN0ZXIgcHJlY2VlZGluZyB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAqIElmIHRoZSBpdGVyYXRp
b24gcG9zaXRpb24gaXMgYWxyZWFkeSBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQsIHplcm8KKyAq
IGlzIHJldHVybmVkLgorICogVGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSBzYW1lIGFzIHRoYXQg
b2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNlcXVlbmNlLAorICogYnV0IHdpdGhvdXQgdGhl
IHNpZGUgZWZmZWN0IG9mIGNoYW5naW5nIHRoZSBpdGVyYXRpb24gcG9zaXRpb24uCisgKiAgIAor
ICogXGNvZGUKKyAqICAgIFVUZXh0ICAqdXQgPSB3aGF0ZXZlcjsKKyAqICAgICAgLi4uCisgKiAg
ICB1dGV4dF9wcmV2aW91cyh1dCkKKyAqICAgIHV0ZXh0X2dldE5hdGl2ZUluZGV4KHV0KTsKKyAq
IFxlbmRjb2RlCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBtb3N0IHVzZWZ1bCBkdXJpbmcgZm9y
d2FyZHMgaXRlcmF0aW9uLCB3aGVyZSBpdCB3aWxsIGdldCB0aGUKKyAqICAgbmF0aXZlIGluZGV4
IG9mIHRoZSBjaGFyYWN0ZXIgbW9zdCByZWNlbnRseSByZXR1cm5lZCBmcm9tIHV0ZXh0X25leHQo
KS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQKKyAqIEByZXR1cm4g
dGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHByZWNlZWRpbmcgdGhlIGN1cnJlbnQg
aW5kZXggcG9zaXRpb24sCisgKiAgICAgICAgIG9yIHplcm8gaWYgdGhlIGN1cnJlbnQgcG9zaXRp
b24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICogQHN0YWJsZSBJQ1UgMy42CisgKi8K
K1VfU1RBQkxFIGludDY0X3QgVV9FWFBPUlQyCit1dGV4dF9nZXRQcmV2aW91c05hdGl2ZUluZGV4
KFVUZXh0ICp1dCk7IAorCisKKy8qKgorICoKKyAqIEV4dHJhY3QgdGV4dCBmcm9tIGEgVVRleHQg
aW50byBhIFVDaGFyIGJ1ZmZlci4gIFRoZSByYW5nZSBvZiB0ZXh0IHRvIGJlIGV4dHJhY3RlZAor
ICogaXMgc3BlY2lmaWVkIGluIHRoZSBuYXRpdmUgaW5kaWNlcyBvZiB0aGUgVVRleHQgcHJvdmlk
ZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vzc2FyaWx5CisgKiBiZSBVVEYtMTYgaW5kaWNlcy4KKyAq
IDxwPgorICogVGhlIHNpemUgKG51bWJlciBvZiAxNiBiaXQgVUNoYXJzKSBvZiB0aGUgZGF0YSB0
byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJuZWQuICBUaGUKKyAqIGZ1bGwgbnVtYmVyIG9mIFVDaGFy
cyBpcyByZXR1cm5lZCwgZXZlbiB3aGVuIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyB0cnVuY2F0ZWQK
KyAqIGJlY2F1c2UgdGhlIHNwZWNpZmllZCBidWZmZXIgc2l6ZSBpcyB0b28gc21hbGwuCisgKiA8
cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11
c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQorICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYg
dGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgVGhp
cworICogdGVybWluYXRpbmcgTlVMIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgbGVu
Z3RoLgorICogPHA+CisgKiBUaGUgaXRlcmF0aW9uIGluZGV4IGlzIGxlZnQgYXQgdGhlIHBvc2l0
aW9uIGZvbGxvd2luZyB0aGUgbGFzdCBleHRyYWN0ZWQgY2hhcmFjdGVyLgorICoKKyAqIEBwYXJh
bSAgdXQgICAgdGhlIFVUZXh0IGZyb20gd2hpY2ggdG8gZXh0cmFjdCBkYXRhLgorICogQHBhcmFt
ICBuYXRpdmVTdGFydCB0aGUgbmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8g
ZXh0cmFjdC5cCisgKiAgICAgICAgICAgICAgIElmIHRoZSBzcGVjaWZpZWQgaW5kZXggaXMgb3V0
IG9mIHJhbmdlLAorICogICAgICAgICAgICAgICBpdCB3aWxsIGJlIHBpbm5lZCB0byB0byBiZSB3
aXRoaW4gMCA8PSBpbmRleCA8PSB0ZXh0TGVuZ3RoCisgKiBAcGFyYW0gIG5hdGl2ZUxpbWl0IHRo
ZSBuYXRpdmUgc3RyaW5nIGluZGV4IG9mIHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIGxhc3QK
KyAqICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4dHJhY3QuICBJZiB0aGUgc3BlY2lmaWVk
IGluZGV4IGlzIG91dCBvZiByYW5nZSwKKyAqICAgICAgICAgICAgICAgaXQgd2lsbCBiZSBwaW5u
ZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0gaW5kZXggPD0gdGV4dExlbmd0aC4KKyAqICAgICAgICAg
ICAgICAgbmF0aXZlTGltaXQgbXVzdCBiZSA+PSBuYXRpdmVTdGFydC4KKyAqIEBwYXJhbSAgZGVz
dCAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4
dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSwgaW4gVUNoYXJz
LCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5IGJlIHplcm8KKyAqICAgICAgICAgICAg
ICAgZm9yIHByZWNvbXB1dGluZyB0aGUgcmVxdWlyZWQgc2l6ZS4KKyAqIEBwYXJhbSAgc3RhdHVz
IHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAgICAgICAgIFVfQlVGRkVSX09WRVJGTE9X
X0VSUk9SOiB0aGUgZXh0cmFjdGVkIHRleHQgd2FzIHRydW5jYXRlZCBiZWNhdXNlIHRoZSAKKyAq
ICAgICAgICAgYnVmZmVyIHdhcyB0b28gc21hbGwuICBSZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMg
Zm9yIHByZWZsaWdodGluZy4KKyAqIEByZXR1cm4gTnVtYmVyIG9mIFVDaGFycyBpbiB0aGUgZGF0
YSB0byBiZSBleHRyYWN0ZWQuICBEb2VzIG5vdCBpbmNsdWRlIGEgdHJhaWxpbmcgTlVMLgorICoK
KyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordXRl
eHRfZXh0cmFjdChVVGV4dCAqdXQsCisgICAgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwg
aW50NjRfdCBuYXRpdmVMaW1pdCwKKyAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBk
ZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisKKy8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgI2RlZmluZSBpbmxpbmUgdmVyc2lv
bnMgb2Ygc2VsZWN0ZWQgcGVyZm9ybWFuY2UtY3JpdGljYWwgdGV4dCBhY2Nlc3MgZnVuY3Rpb25z
CisgKiAgICAgICAgICBDYXV0aW9uOiAgZG8gbm90IHVzZSBhdXRvIGluY3JlbWVudCsrIG9yIGRl
Y3JlbWVudC0tIGV4cHJlc3Npb25zCisgKiAgICAgICAgICAgICAgICAgICAgYXMgcGFyYW1ldGVy
cyB0byB0aGVzZSBtYWNyb3MuCisgKgorICogICAgICAgICAgRm9yIG1vc3QgdXNlLCB3aGVyZSB0
aGVyZSBpcyBubyBleHRyZW1lIHBlcmZvcm1hbmNlIGNvbnN0cmFpbnQsIHRoZQorICogICAgICAg
ICAgbm9ybWFsLCBub24taW5saW5lIGZ1bmN0aW9ucyBhcmUgYSBiZXR0ZXIgY2hvaWNlLiAgVGhl
IHJlc3VsdGluZyBjb2RlCisgKiAgICAgICAgICB3aWxsIGJlIHNtYWxsZXIsIGFuZCwgaWYgdGhl
IG5lZWQgZXZlciBhcmlzZXMsIGVhc2llciB0byBkZWJ1Zy4KKyAqCisgKiAgICAgICAgICBUaGVz
ZSBhcmUgaW1wbGVtZW50ZWQgYXMgI2RlZmluZXMgcmF0aGVyIHRoYW4gcmVhbCBmdW5jdGlvbnMK
KyAqICAgICAgICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8gZnVsbHkgcG9ydGFibGUgd2F5IHRvIGRv
IGlubGluZSBmdW5jdGlvbnMgaW4gcGxhaW4gQy4KKyAqCisgKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLworCisjaWZuZGVmIFVfSElERV9JTlRFUk5BTF9BUEkKKy8qKgorICogaW5saW5lIHZl
cnNpb24gb2YgdXRleHRfY3VycmVudDMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1
YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29kZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRp
b24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LgorICogUmV0dXJucyBVX1NFTlRJTkVMICgtMSkgaWYg
dGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhlCisgKiB0ZXh0LgorICoKKyAqIEBpbnRl
cm5hbCBJQ1UgNC40IHRlY2hub2xvZ3kgcHJldmlldworICovCisjZGVmaW5lIFVURVhUX0NVUlJF
TlQzMih1dCkgIFwKKyAgICAoKHV0KS0+Y2h1bmtPZmZzZXQgPCAodXQpLT5jaHVua0xlbmd0aCAm
JiAoKHV0KS0+Y2h1bmtDb250ZW50cylbKHV0KS0+Y2h1bmtPZmZzZXRdPDB4ZDgwMCA/IFwKKyAg
ICAoKHV0KS0+Y2h1bmtDb250ZW50cylbKCh1dCktPmNodW5rT2Zmc2V0KV0gOiB1dGV4dF9jdXJy
ZW50MzIodXQpKQorI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCisKKy8qKgorICog
aW5saW5lIHZlcnNpb24gb2YgdXRleHRfbmV4dDMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNh
bCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29kZSBwb2ludCBhdCB0aGUgY3VycmVudCBp
dGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LCBhbmQKKyAqIGFkdmFuY2UgdGhlIHBvc2l0
aW9uIHRvIHRoZSBmaXJzdCBpbmRleCBmb2xsb3dpbmcgdGhlIGNoYXJhY3Rlci4KKyAqIFRoaXMg
aXMgYSBwb3N0LWluY3JlbWVudCBvcGVyYXRpb24uCisgKiBSZXR1cm5zIFVfU0VOVElORUwgKC0x
KSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGUKKyAqIHRleHQuCisgKgorICog
QHN0YWJsZSBJQ1UgMy40CisgKi8KKyNkZWZpbmUgVVRFWFRfTkVYVDMyKHV0KSAgXAorICAgICgo
dXQpLT5jaHVua09mZnNldCA8ICh1dCktPmNodW5rTGVuZ3RoICYmICgodXQpLT5jaHVua0NvbnRl
bnRzKVsodXQpLT5jaHVua09mZnNldF08MHhkODAwID8gXAorICAgICgodXQpLT5jaHVua0NvbnRl
bnRzKVsoKHV0KS0+Y2h1bmtPZmZzZXQpKytdIDogdXRleHRfbmV4dDMyKHV0KSkKKworLyoqCisg
KiBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4dF9wcmV2aW91czMyKCksIGZvciBwZXJmb3JtYW5jZS1j
cml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqICBNb3ZlIHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0
byB0aGUgY2hhcmFjdGVyIChjb2RlIHBvaW50KSB3aG9zZQorICogIGluZGV4IHByZWNlZGVzIHRo
ZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQgcmV0dXJuIHRoYXQgY2hhcmFjdGVyLgorICogIFRoaXMg
aXMgYSBwcmUtZGVjcmVtZW50IG9wZXJhdGlvbi4KKyAqICBSZXR1cm5zIFVfU0VOVElORUwgKC0x
KSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSAgdGV4dC4KKyAqCisgKiBA
c3RhYmxlIElDVSAzLjQKKyAqLworI2RlZmluZSBVVEVYVF9QUkVWSU9VUzMyKHV0KSAgXAorICAg
ICgodXQpLT5jaHVua09mZnNldCA+IDAgJiYgXAorICAgICAodXQpLT5jaHVua0NvbnRlbnRzWyh1
dCktPmNodW5rT2Zmc2V0LTFdIDwgMHhkODAwID8gXAorICAgICAgICAgICh1dCktPmNodW5rQ29u
dGVudHNbLS0oKHV0KS0+Y2h1bmtPZmZzZXQpXSAgOiAgdXRleHRfcHJldmlvdXMzMih1dCkpCisK
Ky8qKgorICAqICBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4dF9nZXROYXRpdmVJbmRleCgpLCBmb3Ig
cGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4KKyAgKgorICAqIEdldCB0aGUgY3VycmVu
dCBpdGVyYXRvciBwb3NpdGlvbiwgd2hpY2ggY2FuIHJhbmdlIGZyb20gMCB0byAKKyAgKiB0aGUg
bGVuZ3RoIG9mIHRoZSB0ZXh0LgorICAqIFRoZSBwb3NpdGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBp
bnRvIHRoZSBpbnB1dCB0ZXh0LCBpbiB3aGF0ZXZlciBmb3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAo
cG9zc2libHkgVVRGLTggZm9yIGV4YW1wbGUpLCBhbmQgbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNh
bWUgYXMKKyAgKiB0aGUgY29ycmVzcG9uZGluZyBVQ2hhciAoVVRGLTE2KSBpbmRleC4KKyAgKiBU
aGUgcmV0dXJuZWQgcG9zaXRpb24gd2lsbCBhbHdheXMgYmUgYWxpZ25lZCB0byBhIGNvZGUgcG9p
bnQgYm91bmRhcnkuIAorICAqCisgICogQHN0YWJsZSBJQ1UgMy42CisgICovCisjZGVmaW5lIFVU
RVhUX0dFVE5BVElWRUlOREVYKHV0KSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgodXQp
LT5jaHVua09mZnNldCA8PSAodXQpLT5uYXRpdmVJbmRleGluZ0xpbWl0PyAgIFwKKyAgICAgICAg
KHV0KS0+Y2h1bmtOYXRpdmVTdGFydCsodXQpLT5jaHVua09mZnNldCA6ICAgICBcCisgICAgICAg
ICh1dCktPnBGdW5jcy0+bWFwT2Zmc2V0VG9OYXRpdmUodXQpKSAgICAKKworLyoqCisgICogIGlu
bGluZSB2ZXJzaW9uIG9mIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCksIGZvciBwZXJmb3JtYW5jZS1j
cml0aWNhbCBzaXR1YXRpb25zLgorICAqCisgICogU2V0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBw
b3NpdGlvbiB0byB0aGUgbmVhcmVzdCBjb2RlIHBvaW50CisgICogYm91bmRhcnkgYXQgb3IgcHJl
Y2VkaW5nIHRoZSBzcGVjaWZpZWQgaW5kZXguCisgICogVGhlIGluZGV4IGlzIGluIHRoZSBuYXRp
dmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFsIGlucHV0IHRleHQuCisgICogSWYgdGhlIGluZGV4IGlz
IG91dCBvZiByYW5nZSwgaXQgd2lsbCBiZSBwaW5uZWQgdG8gYmUgd2l0aGluCisgICogdGhlIHJh
bmdlIG9mIHRoZSBpbnB1dCB0ZXh0LgorICAqCisgICogQHN0YWJsZSBJQ1UgMy44CisgICovCisj
ZGVmaW5lIFVURVhUX1NFVE5BVElWRUlOREVYKHV0LCBpeCkgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB7IGludDY0X3QgX19vZmZzZXQgPSAoaXgpIC0gKHV0KS0+Y2h1bmtOYXRpdmVTdGFy
dDsgXAorICAgICAgaWYgKF9fb2Zmc2V0Pj0wICYmIF9fb2Zmc2V0PD0oaW50NjRfdCkodXQpLT5u
YXRpdmVJbmRleGluZ0xpbWl0KSB7IFwKKyAgICAgICAgICAodXQpLT5jaHVua09mZnNldD0oaW50
MzJfdClfX29mZnNldDsgXAorICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgIHV0ZXh0X3NldE5h
dGl2ZUluZGV4KCh1dCksIChpeCkpOyB9IH0KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKKyAqCisgKiAgIEZ1bmN0aW9ucyByZWxhdGVkIHRvIHdyaXRpbmcgb3IgbW9kaWZ5aW5n
IHRoZSB0ZXh0LgorICogICBUaGVzZSB3aWxsIHdvcmsgb25seSB3aXRoIG1vZGlmaWFibGUgVVRl
eHRzLiAgQXR0ZW1wdGluZyB0bworICogICBtb2RpZnkgYSByZWFkLW9ubHkgVVRleHQgd2lsbCBy
ZXR1cm4gYW4gZXJyb3Igc3RhdHVzLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CisKKworLyoqCisgKiAgUmV0dXJuIFRSVUUgaWYgdGhlIHRleHQgY2FuIGJlIHdyaXR0ZW4gKG1v
ZGlmaWVkKSB3aXRoIHV0ZXh0X3JlcGxhY2UoKSBvcgorICogIHV0ZXh0X2NvcHkoKS4gIEZvciB0
aGUgdGV4dCB0byBiZSB3cml0YWJsZSwgdGhlIHRleHQgcHJvdmlkZXIgbXVzdAorICogIGJlIG9m
IGEgdHlwZSB0aGF0IHN1cHBvcnRzIHdyaXRpbmcgYW5kIHRoZSBVVGV4dCBtdXN0IG5vdCBiZSBm
cm96ZW4uCisgKgorICogIEF0dGVtcHRpbmcgdG8gbW9kaWZ5IHRleHQgd2hlbiB1dGV4dF9pc1dy
aXRlYWJsZSgpIGlzIEZBTFNFIHdpbGwgZmFpbCAtCisgKiAgdGhlIHRleHQgd2lsbCBub3QgYmUg
bW9kaWZpZWQsIGFuZCBhbiBlcnJvciB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9u
CisgKiAgdGhhdCBhdHRlbXB0ZWQgdGhlIG1vZGlmaWNhdGlvbi4KKyAqCisgKiBAcGFyYW0gIHV0
ICAgdGhlIFVUZXh0IHRvIGJlIHRlc3RlZC4KKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCBp
cyBtb2RpZmlhYmxlLgorICoKKyAqIEBzZWUgICAgdXRleHRfZnJlZXplKCkKKyAqIEBzZWUgICAg
dXRleHRfcmVwbGFjZSgpCisgKiBAc2VlICAgIHV0ZXh0X2NvcHkoKQorICogQHN0YWJsZSBJQ1Ug
My40CisgKgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3V0ZXh0X2lzV3JpdGFibGUo
Y29uc3QgVVRleHQgKnV0KTsKKworCisvKioKKyAgKiBUZXN0IHdoZXRoZXIgdGhlcmUgaXMgbWV0
YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4KKyAgKiBAc2VlIFJlcGxhY2VhYmxlOjpo
YXNNZXRhRGF0YSgpCisgICoKKyAgKiBAcGFyYW0gdXQgVGhlIFVUZXh0IHRvIGJlIHRlc3RlZAor
ICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdW5kZXJseWluZyB0ZXh0IGluY2x1ZGVzIG1ldGEgZGF0
YS4KKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgor
dXRleHRfaGFzTWV0YURhdGEoY29uc3QgVVRleHQgKnV0KTsKKworCisvKioKKyAqIFJlcGxhY2Ug
YSByYW5nZSBvZiB0aGUgb3JpZ2luYWwgdGV4dCB3aXRoIGEgcmVwbGFjZW1lbnQgdGV4dC4KKyAq
CisgKiBMZWF2ZXMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIGF0IHRoZSBwb3NpdGlv
biBmb2xsb3dpbmcgdGhlCisgKiAgbmV3bHkgaW5zZXJ0ZWQgcmVwbGFjZW1lbnQgdGV4dC4KKyAq
CisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFVUZXh0IHR5cGVzIHRoYXQg
c3VwcG9ydCB3cml0aW5nLAorICogdGhhdCBpcywgb25lcyB3aGVyZSB1dGV4dF9pc1dyaXRhYmxl
KCkgcmV0dXJucyBUUlVFLgorICoKKyAqIFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUg
c2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRleHQgb3BlbmVkIG9udG8gdGhlCisgKiB1bmRlcmx5
aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIEJlaGF2aW9yIGFmdGVyIGEgcmVwbGFjZSBvcGVyYXRp
b24KKyAqIG9uIGEgVVRleHQgaXMgdW5kZWZpbmVkIGZvciBhbnkgb3RoZXIgYWRkaXRpb25hbCBV
VGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlmaWVkIHN0cmluZy4KKyAqCisgKiBAcGFy
YW0gdXQgICAgICAgICAgICAgICB0aGUgVVRleHQgcmVwcmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJl
IG9wZXJhdGVkIG9uLgorICogQHBhcmFtIG5hdGl2ZVN0YXJ0ICAgICAgdGhlIG5hdGl2ZSBpbmRl
eCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNlZAorICogQHBhcmFtIG5h
dGl2ZUxpbWl0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2lu
ZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICogQHBhcmFtIHJlcGxhY2VtZW50VGV4dCAg
cG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICogQHBhcmFtIHJlcGxhY2VtZW50TGVu
Z3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgdGV4dCwgb3IgLTEgaWYgdGhlIHRleHQgaXMg
TlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICByZWNlaXZlcyBhbnkg
ZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUKKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICoKKyAqIEByZXR1cm4gVGhlIHNpZ25l
ZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0cyBieSB3aGljaAorICogICAgICAgICB0
aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9yIGNvbnRyYWN0ZWQuCisgKgorICogQHN0
YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1dGV4dF9yZXBs
YWNlKFVUZXh0ICp1dCwKKyAgICAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90
IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpyZXBsYWNlbWVudFRleHQs
IGludDMyX3QgcmVwbGFjZW1lbnRMZW5ndGgsCisgICAgICAgICAgICAgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKKworCisKKy8qKgorICoKKyAqIENvcHkgb3IgbW92ZSBhIHN1YnN0cmluZyBmcm9tIG9u
ZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxlIHJldGFpbmlu
ZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgorICogVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmluZ3MuCisgKiBUaGUgZGVz
dGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICoKKyAq
IFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7
CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4K
KyAqCisgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlzIGxlZnQgZm9sbG93aW5nIHRoZSBuZXds
eSBpbnNlcnRlZCB0ZXh0CisgKiBhdCB0aGUgZGVzdGluYXRpb24gcG9zaXRpb24uCisgKgorICog
VGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBVVGV4dCB0eXBlcyB0aGF0IHN1cHBv
cnQgd3JpdGluZywKKyAqIHRoYXQgaXMsIG9uZXMgd2hlcmUgdXRleHRfaXNXcml0YWJsZSgpIHJl
dHVybnMgVFJVRS4KKyAqCisgKiBXaGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZXJlIHNob3Vs
ZCBiZSBvbmx5IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBvbnRvIHRoZQorICogdW5kZXJseWluZyBu
YXRpdmUgdGV4dCBzdHJpbmcuICBCZWhhdmlvciBhZnRlciBhIGNvcHkgb3BlcmF0aW9uCisgKiBv
biBhIFVUZXh0IGlzIHVuZGVmaW5lZCBpbiBhbnkgb3RoZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhh
dCByZWZlciB0byB0aGUKKyAqIG1vZGlmaWVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gdXQgICAg
ICAgICAgIFRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0ZWQgb24u
CisgKiBAcGFyYW0gbmF0aXZlU3RhcnQgIFRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIHN0YXJ0IG9m
IHRoZSByZWdpb24gdG8gYmUgY29waWVkIG9yIG1vdmVkCisgKiBAcGFyYW0gbmF0aXZlTGltaXQg
IFRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiBmb2xsb3dpbmcgdGhl
IHJlZ2lvbgorICogICAgICAgICAgICAgICAgICAgICB0byBiZSBjb3BpZWQuCisgKiBAcGFyYW0g
ZGVzdEluZGV4ICAgIFRoZSBuYXRpdmUgZGVzdGluYXRpb24gaW5kZXggdG8gd2hpY2ggdGhlIHNv
dXJjZSBzdWJzdHJpbmcgaXMKKyAqICAgICAgICAgICAgICAgICAgICAgY29waWVkIG9yIG1vdmVk
LgorICogQHBhcmFtIG1vdmUgICAgICAgICBJZiBUUlVFLCB0aGVuIHRoZSBzdWJzdHJpbmcgaXMg
bW92ZWQsIG5vdCBjb3BpZWQvZHVwbGljYXRlZC4KKyAqIEBwYXJhbSBzdGF0dXMgICAgICAgcmVj
ZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3NpYmxlIGVycm9ycyBpbmNsdWRlIFVfTk9fV1JJ
VEVfUEVSTUlTU0lPTgorICogICAgICAgICAgICAgICAgICAgICAgIAorICogQHN0YWJsZSBJQ1Ug
My40CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9jb3B5KFVUZXh0ICp1dCwK
KyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAg
ICAgICAgIGludDY0X3QgZGVzdEluZGV4LAorICAgICAgICAgIFVCb29sIG1vdmUsCisgICAgICAg
ICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAgKiAgPHA+CisgICogIEZyZWV6ZSBh
IFVUZXh0LiAgVGhpcyBwcmV2ZW50cyBhbnkgbW9kaWZpY2F0aW9uIHRvIHRoZSB1bmRlcmx5aW5n
IHRleHQgaXRzZWxmCisgICogIGJ5IG1lYW5zIG9mIGZ1bmN0aW9ucyBvcGVyYXRpbmcgb24gdGhp
cyBVVGV4dC4KKyAgKiAgPC9wPgorICAqICA8cD4KKyAgKiAgT25jZSBmcm96ZW4sIGEgVVRleHQg
Y2FuIG5vdCBiZSB1bmZyb3plbi4gIFRoZSBpbnRlbnQgaXMgdG8gZW5zdXJlCisgICogIHRoYXQg
YSB0aGUgdGV4dCB1bmRlcmx5aW5nIGEgZnJvemVuIFVUZXh0IHdyYXBwZXIgY2Fubm90IGJlIG1v
ZGlmaWVkIHZpYSB0aGF0IFVUZXh0LgorICAqICA8L3A+CisgICogIDxwPgorICAqICBDYXV0aW9u
OiAgZnJlZXppbmcgYSBVVGV4dCB3aWxsIGRpc2FibGUgY2hhbmdlcyBtYWRlIHZpYSB0aGUgc3Bl
Y2lmaWMKKyAgKiAgIGZyb3plbiBVVGV4dCB3cmFwcGVyIG9ubHk7IGl0IHdpbGwgbm90IGhhdmUg
YW55IGVmZmVjdCBvbiB0aGUgYWJpbGl0eSB0bworICAqICAgZGlyZWN0bHkgbW9kaWZ5IHRoZSB0
ZXh0IGJ5IGJ5cGFzc2luZyB0aGUgVVRleHQuICBBbnkgc3VjaCBiYWNrZG9vciBtb2RpZmljYXRp
b25zCisgICogICBhcmUgYWx3YXlzIGFuIGVycm9yIHdoaWxlIFVUZXh0IGFjY2VzcyBpcyBvY2N1
cmluZyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nCisgICogICB0ZXh0IGNhbiBnZXQgb3V0IG9mIHN5
bmMgd2l0aCBVVGV4dCdzIGJ1ZmZlcmluZy4KKyAgKiAgPC9wPgorICAqCisgICogIEBwYXJhbSB1
dCAgVGhlIFVUZXh0IHRvIGJlIGZyb3plbi4KKyAgKiAgQHNlZSAgIHV0ZXh0X2lzV3JpdGFibGUo
KQorICAqICBAc3RhYmxlIElDVSAzLjYKKyAgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1
dGV4dF9mcmVlemUoVVRleHQgKnV0KTsKKworCisvKioKKyAqIFVUZXh0IHByb3ZpZGVyIHByb3Bl
cnRpZXMgKGJpdCBmaWVsZCBpbmRleGVzKS4KKyAqCisgKiBAc2VlIFVUZXh0CisgKiBAc3RhYmxl
IElDVSAzLjQKKyAqLworZW51bSB7CisgICAgLyoqCisgICAgICogSXQgaXMgcG90ZW50aWFsbHkg
dGltZSBjb25zdW1pbmcgZm9yIHRoZSBwcm92aWRlciB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBv
ZiB0aGUgdGV4dC4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBVVEVYVF9Q
Uk9WSURFUl9MRU5HVEhfSVNfRVhQRU5TSVZFID0gMSwKKyAgICAvKioKKyAgICAgKiBUZXh0IGNo
dW5rcyByZW1haW4gdmFsaWQgYW5kIHVzYWJsZSB1bnRpbCB0aGUgdGV4dCBvYmplY3QgaXMgbW9k
aWZpZWQgb3IKKyAgICAgKiBkZWxldGVkLCBub3QganVzdCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRo
ZSBhY2Nlc3MoKSBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgICAgKiAod2hpY2ggaXMgdGhlIGRlZmF1
bHQpLgorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAqLworICAgIFVURVhUX1BST1ZJREVS
X1NUQUJMRV9DSFVOS1MgPSAyLAorICAgIC8qKgorICAgICAqIFRoZSBwcm92aWRlciBzdXBwb3J0
cyBtb2RpZnlpbmcgdGhlIHRleHQgdmlhIHRoZSByZXBsYWNlKCkgYW5kIGNvcHkoKQorICAgICAq
IGZ1bmN0aW9ucy4KKyAgICAgKiBAc2VlIFJlcGxhY2VhYmxlCisgICAgICogQHN0YWJsZSBJQ1Ug
My40CisgICAgICovCisgICAgVVRFWFRfUFJPVklERVJfV1JJVEFCTEUgPSAzLAorICAgIC8qKgor
ICAgICAqIFRoZXJlIGlzIG1ldGEgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHRleHQuCisgICAg
ICogQHNlZSBSZXBsYWNlYWJsZTo6aGFzTWV0YURhdGEoKQorICAgICAqIEBzdGFibGUgSUNVIDMu
NAorICAgICAqLyAKKyAgICBVVEVYVF9QUk9WSURFUl9IQVNfTUVUQV9EQVRBID0gNCwKKyAgICAv
KioKKyAgICAgKiBUZXh0IHByb3ZpZGVyIG93bnMgdGhlIHRleHQgc3RvcmFnZS4KKyAgICAgKiAg
R2VuZXJhbGx5IG9jY3VycyBhcyB0aGUgcmVzdWx0IG9mIGEgZGVlcCBjbG9uZSBvZiB0aGUgVVRl
eHQuCisgICAgICogIFdoZW4gY2xvc2luZyB0aGUgVVRleHQsIHRoZSBhc3NvY2lhdGVkIHRleHQg
bXVzdAorICAgICAqICBhbHNvIGJlIGNsb3NlZC9kZWxldGVkL2ZyZWVkLyB3aGF0ZXZlciBpcyBh
cHByb3ByaWF0ZS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICAgVVRFWFRf
UFJPVklERVJfT1dOU19URVhUID0gNQorfTsKKworLyoqCisgICogRnVuY3Rpb24gdHlwZSBkZWNs
YXJhdGlvbiBmb3IgVVRleHQuY2xvbmUoKS4KKyAgKgorICAqICBjbG9uZSBhIFVUZXh0LiAgTXVj
aCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3aGVyZSB0aGUgc291cmNlIHRleHQgaXMgaXRzZWxmCisg
ICogIGFub3RoZXIgVVRleHQuCisgICoKKyAgKiAgQSBkZWVwIGNsb25lIHdpbGwgY29weSBib3Ro
IHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSB1bmRlcmx5aW5nIHRleHQuCisgICog
IFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVkIFVUZXh0IHdpbGwgb3BlcmF0ZSBjb21wbGV0ZWx5IGlu
ZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlvbnMKKyAgKiAgbWFkZSB0byB0aGUgdGV4dCBpbiBvbmUg
d2lsbCBub3QgZWZmZWN0IHRoZSBvdGhlci4gIFRleHQgcHJvdmlkZXJzIGFyZSBub3QKKyAgKiAg
cmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVwIGNsb25lcy4gIFRoZSB1c2VyIG9mIGNsb25lKCkgbXVz
dCBjaGVjayB0aGUgc3RhdHVzIHJldHVybgorICAqICBhbmQgYmUgcHJlcGFyZWQgdG8gaGFuZGxl
IGZhaWx1cmVzLgorICAqCisgICogIEEgc2hhbGxvdyBjbG9uZSByZXBsaWNhdGVzIG9ubHkgdGhl
IFVUZXh0IGRhdGEgc3RydWN0dXJlczsgaXQgZG9lcyBub3QgbWFrZQorICAqICBhIGNvcHkgb2Yg
dGhlIHVuZGVybHlpbmcgdGV4dC4gIFNoYWxsb3cgY2xvbmVzIGNhbiBiZSB1c2VkIGFzIGFuIGVm
ZmljaWVudCB3YXkgdG8gCisgICogIGhhdmUgbXVsdGlwbGUgaXRlcmF0b3JzIGFjdGl2ZSBpbiBh
IHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0IGlzIG5vdCBiZWluZworICAqICBtb2RpZmllZC4KKyAg
KgorICAqICBBIHNoYWxsb3cgY2xvbmUgb3BlcmF0aW9uIG11c3Qgbm90IGZhaWwgZXhjZXB0IGZv
ciB0cnVseSBleGNlcHRpb25hbCBjb25kaXRpb25zIHN1Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9j
YXRpb24gZmFpbHVyZXMuCisgICoKKyAgKiAgQSBVVGV4dCBhbmQgaXRzIGNsb25lIG1heSBiZSBz
YWZlbHkgY29uY3VycmVudGx5IGFjY2Vzc2VkIGJ5IHNlcGFyYXRlIHRocmVhZHMuCisgICogIFRo
aXMgaXMgdHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBkZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMg
dGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBUZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRo
aXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25zdHJhaW50IGlzIG1ldC4KKworICAqCisgICogIEBw
YXJhbSBkZXN0ICAgQSBVVGV4dCBzdHJ1Y3QgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhlIHJlc3Vs
dCBvZiB0aGUgY2xvbmUgb3BlcmF0aW9uLAorICAqICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYg
dGhlIGNsb25lIGZ1bmN0aW9uIHNob3VsZCBoZWFwLWFsbG9jYXRlIGEgbmV3IFVUZXh0IHN0cnVj
dC4KKyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQgdG8gYmUgY2xvbmVkLgorICAqICBAcGFy
YW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAgY2xvbmUsIEZBTFNFIGZvciBhIHNoYWxs
b3cgY2xvbmUuCisgICogIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLiAg
Rm9yIGRlZXAgY2xvbmVzLCBVX1VOU1VQUE9SVEVEX0VSUk9SCisgICogICAgICAgICAgICAgICAg
c2hvdWxkIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHByb3ZpZGVyIGlzIHVuYWJsZSB0byBjbG9u
ZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5hbCB0ZXh0LgorICAqICBAcmV0dXJuICAg
ICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBOVUxMIGlmIHRoZSBjbG9uZSBvcGVyYXRp
b24gZmFpbGVkLgorICAqCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCit0eXBlZGVmIFVUZXh0
ICogVV9DQUxMQ09OVgorVVRleHRDbG9uZShVVGV4dCAqZGVzdCwgY29uc3QgVVRleHQgKnNyYywg
VUJvb2wgZGVlcCwgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIEZ1bmN0aW9uIHR5
cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm5hdGl2ZUxlbmd0aCgpLgorICoKKyAqIEBwYXJhbSB1
dCB0aGUgVVRleHQgdG8gZ2V0IHRoZSBsZW5ndGggb2YuCisgKiBAcmV0dXJuIHRoZSBsZW5ndGgs
IGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFsIHRleHQgc3RyaW5nLgorICogQHNl
ZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgaW50NjRfdCBVX0NBTExD
T05WCitVVGV4dE5hdGl2ZUxlbmd0aChVVGV4dCAqdXQpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5
cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmFjY2VzcygpLiAgR2V0IHRoZSBkZXNjcmlwdGlvbiBv
ZiB0aGUgdGV4dCBjaHVuaworICogIGNvbnRhaW5pbmcgdGhlIHRleHQgYXQgYSByZXF1ZXN0ZWQg
bmF0aXZlIGluZGV4LiAgVGhlIFVUZXh0J3MgaXRlcmF0aW9uCisgKiAgcG9zaXRpb24gd2lsbCBi
ZSBsZWZ0IGF0IHRoZSByZXF1ZXN0ZWQgaW5kZXguICBJZiB0aGUgaW5kZXggaXMgb3V0CisgKiAg
b2YgYm91bmRzLCB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgbGVmdCBhdCB0aGUgc3Rh
cnQgb3IgZW5kCisgKiAgb2YgdGhlIHN0cmluZywgYXMgYXBwcm9wcmlhdGUuCisgKgorICogIENo
dW5rcyBtdXN0IGJlZ2luIGFuZCBlbmQgb24gY29kZSBwb2ludCBib3VuZGFyaWVzLiAgQSBzaW5n
bGUgY29kZSBwb2ludAorICogIGNvbXByaXNlZCBvZiBtdWx0aXBsZSBzdG9yYWdlIHVuaXRzIG11
c3QgbmV2ZXIgc3BhbiBhIGNodW5rIGJvdW5kYXJ5LgorICoKKyAqCisgKiBAcGFyYW0gdXQgICAg
ICAgICAgdGhlIFVUZXh0IGJlaW5nIGFjY2Vzc2VkLgorICogQHBhcmFtIG5hdGl2ZUluZGV4IFJl
cXVlc3RlZCBpbmRleCBvZiB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KKyAqIEBwYXJhbSBmb3J3
YXJkICAgICBJZiBUUlVFLCB0aGVuIHRoZSByZXR1cm5lZCBjaHVuayBtdXN0IGNvbnRhaW4gdGV4
dAorICogICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5nIGZyb20gdGhlIGluZGV4LCBzbyB0aGF0
IHN0YXJ0PD1pbmRleDxsaW1pdC4KKyAqICAgICAgICAgICAgICAgICAgICBJZiBGQUxTRSwgdGhl
biB0aGUgcmV0dXJuZWQgY2h1bmsgbXVzdCBjb250YWluIHRleHQKKyAqICAgICAgICAgICAgICAg
ICAgICBiZWZvcmUgdGhlIGluZGV4LCBzbyB0aGF0IHN0YXJ0PGluZGV4PD1saW1pdC4KKyAqIEBy
ZXR1cm4gICAgICAgICAgICBUcnVlIGlmIHRoZSByZXF1ZXN0ZWQgaW5kZXggY291bGQgYmUgYWNj
ZXNzZWQuICBUaGUgY2h1bmsKKyAqICAgICAgICAgICAgICAgICAgICB3aWxsIGNvbnRhaW4gdGhl
IHJlcXVlc3RlZCB0ZXh0LgorICogICAgICAgICAgICAgICAgICAgIEZhbHNlIHZhbHVlIGlmIGEg
Y2h1bmsgY2Fubm90IGJlIGFjY2Vzc2VkCisgKiAgICAgICAgICAgICAgICAgICAgKHRoZSByZXF1
ZXN0ZWQgaW5kZXggaXMgb3V0IG9mIGJvdW5kcykuCisgKgorICogQHNlZSBVVGV4dAorICogQHN0
YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgVUJvb2wgVV9DQUxMQ09OVgorVVRleHRBY2Nlc3Mo
VVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKTsKKworLyoqCisg
KiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5leHRyYWN0KCkuCisgKgorICog
RXh0cmFjdCB0ZXh0IGZyb20gYSBVVGV4dCBpbnRvIGEgVUNoYXIgYnVmZmVyLiAgVGhlIHJhbmdl
IG9mIHRleHQgdG8gYmUgZXh0cmFjdGVkCisgKiBpcyBzcGVjaWZpZWQgaW4gdGhlIG5hdGl2ZSBp
bmRpY2VzIG9mIHRoZSBVVGV4dCBwcm92aWRlci4gIFRoZXNlIG1heSBub3QgbmVjZXNzYXJpbHkK
KyAqIGJlIFVURi0xNiBpbmRpY2VzLgorICogPHA+CisgKiBUaGUgc2l6ZSAobnVtYmVyIG9mIDE2
IGJpdCBVQ2hhcnMpIGluIHRoZSBkYXRhIHRvIGJlIGV4dHJhY3RlZCBpcyByZXR1cm5lZC4gIFRo
ZQorICogZnVsbCBhbW91bnQgaXMgcmV0dXJuZWQsIGV2ZW4gd2hlbiB0aGUgc3BlY2lmaWVkIGJ1
ZmZlciBzaXplIGlzIHNtYWxsZXIuCisgKiA8cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdp
bGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVy
KQorICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0
aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICoKKyAqIEBwYXJhbSAgdXQgICAgICAgICAgICB0aGUg
VVRleHQgZnJvbSB3aGljaCB0byBleHRyYWN0IGRhdGEuCisgKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0
ICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjZXIgdG8gZXh0cmFjdC4KKyAq
IEBwYXJhbSAgbmF0aXZlTGltaXQgICB0aGUgbmF0aXZlIHN0cmluZyBpbmRleCBvZiB0aGUgcG9z
aXRpb24gZm9sbG93aW5nIHRoZSBsYXN0CisgKiAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFj
dGVyIHRvIGV4dHJhY3QuCisgKiBAcGFyYW0gIGRlc3QgICAgICAgICAgdGhlIFVDaGFyIChVVEYt
MTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBw
YXJhbSAgZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSwgaW4gVUNoYXJzLCBvZiB0aGUgZGVzdGluYXRp
b24gYnVmZmVyLiAgTWF5IGJlIHplcm8KKyAqICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJl
Y29tcHV0aW5nIHRoZSByZXF1aXJlZCBzaXplLgorICogQHBhcmFtICBzdGF0dXMgICAgICAgIHJl
Y2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgVV9C
VUZGRVJfT1ZFUkZMT1dfRVJST1I6IFJldHVybnMgbnVtYmVyIG9mIFVDaGFycyBmb3IKKyAqICAg
ICAgICAgICAgICAgICAgICAgICBwcmVmbGlnaHRpbmcuCisgKiBAcmV0dXJuIE51bWJlciBvZiBV
Q2hhcnMgaW4gdGhlIGRhdGEuICBEb2VzIG5vdCBpbmNsdWRlIGEgdHJhaWxpbmcgTlVMLgorICoK
KyAqIEBzdGFibGUgSUNVIDMuNAorICovCit0eXBlZGVmIGludDMyX3QgVV9DQUxMQ09OVgorVVRl
eHRFeHRyYWN0KFVUZXh0ICp1dCwKKyAgICAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBp
bnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAgIFVDaGFyICpkZXN0LCBpbnQzMl90IGRl
c3RDYXBhY2l0eSwKKyAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAq
IEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LnJlcGxhY2UoKS4KKyAqCisgKiBS
ZXBsYWNlIGEgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIHRleHQgd2l0aCBhIHJlcGxhY2VtZW50IHRl
eHQuCisgKgorICogTGVhdmVzIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUg
cG9zaXRpb24gZm9sbG93aW5nIHRoZQorICogIG5ld2x5IGluc2VydGVkIHJlcGxhY2VtZW50IHRl
eHQuCisgKgorICogVGhpcyBmdW5jdGlvbiBuZWVkIG9ubHkgYmUgaW1wbGVtZW50ZWQgb24gVVRl
eHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisgKgorICogV2hlbiB1c2luZyB0aGlzIGZ1
bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0
aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJl
c3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRleHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4
dCB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRha2luZyBp
bnRvIGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0
dXJlIGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgorICoKKyAqIEBwYXJhbSB1
dCAgICAgICAgICAgICAgIHRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhlIHRleHQgdG8gYmUgb3Bl
cmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQgICAgICB0aGUgaW5kZXggb2YgdGhlIHN0
YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgcmVwbGFjZWQKKyAqIEBwYXJhbSBuYXRpdmVMaW1pdCAg
ICAgIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcmVnaW9uIHRvIGJl
IHJlcGxhY2VkLgorICogQHBhcmFtIHJlcGxhY2VtZW50VGV4dCAgcG9pbnRlciB0byB0aGUgcmVw
bGFjZW1lbnQgdGV4dAorICogQHBhcmFtIHJlcGxhY21lbnRMZW5ndGggbGVuZ3RoIG9mIHRoZSBy
ZXBsYWNlbWVudCB0ZXh0IGluIFVDaGFycywgb3IgLTEgaWYgdGhlIHRleHQgaXMgTlVMIHRlcm1p
bmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgICAgICByZWNlaXZlcyBhbnkgZXJyb3Igc3Rh
dHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAg
IFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICoKKyAqIEByZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIg
b2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0cyBieSB3aGljaAorICogICAgICAgICB0aGUgbGVuZ3Ro
IG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9yIGNvbnRyYWN0ZWQuCisgKgorICogQHN0YWJsZSBJQ1Ug
My40CisgKi8KK3R5cGVkZWYgaW50MzJfdCBVX0NBTExDT05WCitVVGV4dFJlcGxhY2UoVVRleHQg
KnV0LAorICAgICAgICAgICAgIGludDY0X3QgbmF0aXZlU3RhcnQsIGludDY0X3QgbmF0aXZlTGlt
aXQsCisgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnJlcGxhY2VtZW50VGV4dCwgaW50MzJfdCBy
ZXBsYWNtZW50TGVuZ3RoLAorICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8q
KgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuY29weSgpLgorICoKKyAq
IENvcHkgb3IgbW92ZSBhIHN1YnN0cmluZyBmcm9tIG9uZSBwb3NpdGlvbiB0byBhbm90aGVyIHdp
dGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxlIHJldGFpbmluZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRl
ZCB3aXRoIHRoZSB0ZXh0LgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBv
ciByZW9yZGVyIHN1YnN0cmluZ3MuCisgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qg
b3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICoKKyAqIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBv
ciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7CisgKiBpdCBkb2VzIG5vdCByZXBsYWNl
IG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5l
ZWQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRp
bmcuCisgKgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25s
eSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZlIHRl
eHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUK
KyAqIHRleHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0
ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRvIGFjY291bnQgYW55IGNoYW5nZXMgdG8g
dGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJlIGNhdXNlZAorICogYnkgdGhlIHJlcGxh
Y2Ugb3BlcmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAgICAgICAgICAgVGhlIFVUZXh0IHJlcHJl
c2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBvbi4KKyAqIEBwYXJhbSBuYXRpdmVTdGFy
dCAgVGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgcmVnaW9uIHRvIGJlIGNvcGllZCBvciBt
b3ZlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICBUaGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBm
b2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNlZC4KKyAqIEBwYXJhbSBuYXRpdmVEZXN0
ICAgVGhlIGRlc3RpbmF0aW9uIGluZGV4IHRvIHdoaWNoIHRoZSBzb3VyY2Ugc3Vic3RyaW5nIGlz
IGNvcGllZCBvciBtb3ZlZC4KKyAqIEBwYXJhbSBtb3ZlICAgICAgICAgSWYgVFJVRSwgdGhlbiB0
aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBub3QgY29waWVkL2R1cGxpY2F0ZWQuCisgKiBAcGFyYW0g
c3RhdHVzICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuICBQb3NzaWJsZSBlcnJvcnMg
aW5jbHVkZSBVX05PX1dSSVRFX1BFUk1JU1NJT04KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LwordHlwZWRlZiB2b2lkIFVfQ0FMTENPTlYKK1VUZXh0Q29weShVVGV4dCAqdXQsCisgICAgICAg
ICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKKyAgICAgICAgICBp
bnQ2NF90IG5hdGl2ZURlc3QsCisgICAgICAgICAgVUJvb2wgbW92ZSwKKyAgICAgICAgICBVRXJy
b3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9y
IFVUZXh0Lm1hcE9mZnNldFRvTmF0aXZlKCkuCisgKiBNYXAgZnJvbSB0aGUgY3VycmVudCBVQ2hh
ciBvZmZzZXQgd2l0aGluIHRoZSBjdXJyZW50IHRleHQgY2h1bmsgdG8KKyAqICB0aGUgY29ycmVz
cG9uZGluZyBuYXRpdmUgaW5kZXggaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0ZXh0LgorICoKKyAq
IFRoaXMgaXMgcmVxdWlyZWQgb25seSBmb3IgdGV4dCBwcm92aWRlcnMgdGhhdCBkbyBub3QgdXNl
IG5hdGl2ZSBVVEYtMTYgaW5kZXhlcy4KKyAqCisgKiBAcGFyYW0gdXQgICAgIHRoZSBVVGV4dC4K
KyAqIEByZXR1cm4gQWJzb2x1dGUgKG5hdGl2ZSkgaW5kZXggY29ycmVzcG9uZGluZyB0byBjaHVu
a09mZnNldCBpbiB0aGUgY3VycmVudCBjaHVuay4KKyAqICAgICAgICAgVGhlIHJldHVybmVkIG5h
dGl2ZSBpbmRleCBzaG91bGQgYWx3YXlzIGJlIHRvIGEgY29kZSBwb2ludCBib3VuZGFyeS4KKyAq
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRlZiBpbnQ2NF90IFVfQ0FMTENPTlYKK1VU
ZXh0TWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQgKnV0KTsKKworLyoqCisgKiBGdW5jdGlv
biB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5tYXBJbmRleFRvVVRGMTYoKS4KKyAqIE1hcCBm
cm9tIGEgbmF0aXZlIGluZGV4IHRvIGEgVUNoYXIgb2Zmc2V0IHdpdGhpbiBhIHRleHQgY2h1bmsu
CisgKiBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgdGhlIG5hdGl2ZSBpbmRleCBkb2VzIG5vdCBm
YWxsIHdpdGhpbiB0aGUKKyAqICAgY3VycmVudCBjaHVuay4KKyAqCisgKiBUaGlzIGZ1bmN0aW9u
IGlzIHJlcXVpcmVkIG9ubHkgZm9yIHRleHQgcHJvdmlkZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRp
dmUgVVRGLTE2IGluZGV4ZXMuCisgKgorICogQHBhcmFtIHV0ICAgICAgICAgIFRoZSBVVGV4dCBj
b250YWluaW5nIHRoZSB0ZXh0IGNodW5rLgorICogQHBhcmFtIG5hdGl2ZUluZGV4IEFic29sdXRl
IChuYXRpdmUpIHRleHQgaW5kZXgsIGNodW5rLT5zdGFydDw9aW5kZXg8PWNodW5rLT5saW1pdC4K
KyAqIEByZXR1cm4gICAgICAgICAgICBDaHVuay1yZWxhdGl2ZSBVVEYtMTYgb2Zmc2V0IGNvcnJl
c3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBuYXRpdmUKKyAqICAgICAgICAgICAgICAgICAgICBp
bmRleC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRlZiBpbnQzMl90IFVfQ0FM
TENPTlYKK1VUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0IFVUZXh0ICp1dCwgaW50NjRf
dCBuYXRpdmVJbmRleCk7CisKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZv
ciBVVGV4dC51dGV4dENsb3NlKCkuCisgKgorICogQSBUZXh0IFByb3ZpZGVyIGNsb3NlIGZ1bmN0
aW9uIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHByb3ZpZGVyIHR5cGVzIHRoYXQgbWFrZQorICogIGFs
bG9jYXRpb25zIGluIHRoZWlyIG9wZW4gZnVuY3Rpb24gKG9yIG90aGVyIGZ1bmN0aW9ucykgdGhh
dCBtdXN0IGJlIAorICogIGNsZWFuZWQgd2hlbiB0aGUgVVRleHQgaXMgY2xvc2VkLgorICoKKyAq
IFRoZSBhbGxvY2F0aW9uIG9mIHRoZSBVVGV4dCBzdHJ1Y3QgaXRzZWxmIGFuZCBhbnkgImV4dHJh
IiBzdG9yYWdlCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIFVUZXh0IGlzIGhhbmRsZWQgYnkgdGhl
IGNvbW1vbiBVVGV4dCBpbXBsZW1lbnRhdGlvbgorICogYW5kIGRvZXMgbm90IHJlcXVpcmUgcHJv
dmlkZXIgc3BlY2lmaWMgY2xlYW51cCBpbiBhIGNsb3NlIGZ1bmN0aW9uLgorICoKKyAqIE1vc3Qg
VVRleHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb25zIGRvIG5vdCBuZWVkIHRvIGltcGxlbWVudCB0
aGlzIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSB1dCBBIFVUZXh0IG9iamVjdCB0byBiZSBjbG9z
ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgdm9pZCBVX0NBTExDT05W
CitVVGV4dENsb3NlKFVUZXh0ICp1dCk7CisKKworLyoqCisgICogICAocHVibGljKSAgRnVuY3Rp
b24gZGlzcGF0Y2ggdGFibGUgZm9yIFVUZXh0LgorICAqICAgICAgICAgICAgIENvbmNlcHR1YWxs
eSB2ZXJ5IG11Y2ggbGlrZSBhIEMrKyBWaXJ0dWFsIEZ1bmN0aW9uIFRhYmxlLgorICAqICAgICAg
ICAgICAgIFRoaXMgc3RydWN0IGRlZmluZXMgdGhlIG9yZ2FuaXphdGlvbiBvZiB0aGUgdGFibGUu
CisgICogICAgICAgICAgICAgRWFjaCB0ZXh0IHByb3ZpZGVyIGltcGxlbWVudGF0aW9uIG11c3Qg
cHJvdmlkZSBhbgorICAqICAgICAgICAgICAgICBhY3R1YWwgdGFibGUgdGhhdCBpcyBpbml0aWFs
aXplZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbnMKKyAgKiAgICAgICAgICAgICAgZm9y
IHRoZSB0eXBlIG9mIHRleHQgYmVpbmcgaGFuZGxlZC4KKyAgKiAgIEBzdGFibGUgSUNVIDMuNgor
ICAqLworc3RydWN0IFVUZXh0RnVuY3MgeworICAgIC8qKgorICAgICAqICAgKHB1YmxpYykgIEZ1
bmN0aW9uIHRhYmxlIHNpemUsIHNpemVvZihVVGV4dEZ1bmNzKQorICAgICAqICAgICAgICAgICAg
IEludGVuZGVkIGZvciB1c2Ugc2hvdWxkIHRoZSB0YWJsZSBncm93IHRvIGFjY29tb2RhdGUgYWRk
ZWQKKyAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbnMgaW4gdGhlIGZ1dHVyZSwgdG8gYWxsb3cg
dGVzdHMgZm9yIG9sZGVyIGZvcm1hdAorICAgICAqICAgICAgICAgICAgIGZ1bmN0aW9uIHRhYmxl
cyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBleHRlbnNpb25zLgorICAgICAqCisgICAgICogICAg
ICAgICAgICAgRmllbGRzIGFyZSBwbGFjZWQgZm9yIG9wdGltYWwgYWxpZ25tZW50IG9uCisgICAg
ICogICAgICAgICAgICAgMzIvNjQvMTI4LWJpdC1wb2ludGVyIG1hY2hpbmVzLCBieSBub3JtYWxs
eSBncm91cGluZyB0b2dldGhlcgorICAgICAqICAgICAgICAgICAgIDQgMzItYml0IGZpZWxkcywK
KyAgICAgKiAgICAgICAgICAgICA0IHBvaW50ZXJzLAorICAgICAqICAgICAgICAgICAgIDIgNjQt
Yml0IGZpZWxkcworICAgICAqICAgICAgICAgICAgIGluIHNlcXVlbmNlLgorICAgICAqICAgQHN0
YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgaW50MzJfdCAgICAgICB0YWJsZVNpemU7CisKKyAg
ICAvKioKKyAgICAgICogICAocHJpdmF0ZSkgIEFsaWdubWVudCBwYWRkaW5nLgorICAgICAgKiAg
ICAgICAgICAgICAgRG8gbm90IHVzZSwgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgVVRleHQgZnJh
bWV3b3JrIG9ubHkuCisgICAgICAqICAgQGludGVybmFsCisgICAgICAqLworICAgIGludDMyX3Qg
ICAgICAgcmVzZXJ2ZWQxLCAvKiogQGludGVybmFsICovIHJlc2VydmVkMiwgLyoqIEBpbnRlcm5h
bCAqLyByZXNlcnZlZDM7CisKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBv
aW50ZXIgZm9yIFVUZXh0Q2xvbmUKKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRDbG9uZQorICAg
ICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIFVUZXh0Q2xvbmUgKmNsb25lOworCisg
ICAgLyoqCisgICAgICogKHB1YmxpYykgZnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRMZW5ndGgK
KyAgICAgKiBNYXkgYmUgZXhwZW5zaXZlIHRvIGNvbXB1dGUhCisgICAgICoKKyAgICAgKiBAc2Vl
IFVUZXh0TGVuZ3RoCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRO
YXRpdmVMZW5ndGggKm5hdGl2ZUxlbmd0aDsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1
bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0QWNjZXNzLgorICAgICAqCisgICAgICogQHNlZSBVVGV4
dEFjY2VzcworICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIFVUZXh0QWNjZXNz
ICphY2Nlc3M7CisKKyAgICAvKioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZv
ciBVVGV4dEV4dHJhY3QuCisgICAgICoKKyAgICAgKiBAc2VlIFVUZXh0RXh0cmFjdAorICAgICAq
IEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIFVUZXh0RXh0cmFjdCAqZXh0cmFjdDsKKwor
ICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0UmVwbGFj
ZS4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRSZXBsYWNlCisgICAgICogQHN0YWJsZSBJQ1Ug
My42CisgICAgICovCisgICAgVVRleHRSZXBsYWNlICpyZXBsYWNlOworCisgICAgLyoqCisgICAg
ICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRDb3B5LgorICAgICAqCisgICAg
ICogQHNlZSBVVGV4dENvcHkKKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBV
VGV4dENvcHkgKmNvcHk7CisKKyAgICAvKioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2lu
dGVyIGZvciBVVGV4dE1hcE9mZnNldFRvTmF0aXZlLgorICAgICAqCisgICAgICogQHNlZSBVVGV4
dE1hcE9mZnNldFRvTmF0aXZlCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAg
VVRleHRNYXBPZmZzZXRUb05hdGl2ZSAqbWFwT2Zmc2V0VG9OYXRpdmU7CisKKyAgICAvKioKKyAg
ICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dE1hcE5hdGl2ZUluZGV4VG9V
VEYxNi4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRNYXBOYXRpdmVJbmRleFRvVVRGMTYKKyAg
ICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBVVGV4dE1hcE5hdGl2ZUluZGV4VG9V
VEYxNiAqbWFwTmF0aXZlSW5kZXhUb1VURjE2OworCisgICAgLyoqCisgICAgICogKHB1YmxpYykg
RnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRDbG9zZS4KKyAgICAgICoKKyAgICAgICogQHNlZSBV
VGV4dENsb3NlCisgICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBVVGV4dENs
b3NlICAqY2xvc2U7CisKKyAgICAvKioKKyAgICAgICogKHByaXZhdGUpICBTcGFyZSBmdW5jdGlv
biBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAq
c3BhcmUxOworICAgIAorICAgIC8qKgorICAgICAgKiAocHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9u
IHBvaW50ZXIKKyAgICAgICogQGludGVybmFsCisgICAgICAqLworICAgIFVUZXh0Q2xvc2UgICpz
cGFyZTI7CisKKyAgICAvKioKKyAgICAgICogKHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2lu
dGVyCisgICAgICAqIEBpbnRlcm5hbAorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqc3BhcmUz
OworCit9OworLyoqCisgKiBGdW5jdGlvbiBkaXNwYXRjaCB0YWJsZSBmb3IgVVRleHQKKyAqIEBz
ZWUgVVRleHRGdW5jcworICovCit0eXBlZGVmIHN0cnVjdCBVVGV4dEZ1bmNzIFVUZXh0RnVuY3M7
CisKKyAvKioKKyAgKiAgIFVUZXh0IHN0cnVjdC4gIFByb3ZpZGVzIHRoZSBpbnRlcmZhY2UgYmV0
d2VlbiB0aGUgZ2VuZXJpYyBVVGV4dCBhY2Nlc3MgY29kZQorICAqICAgICAgICAgICAgICAgICAg
YW5kIHRoZSBVVGV4dCBwcm92aWRlciBjb2RlIHRoYXQgd29ya3Mgb24gc3BlY2lmaWMga2luZHMg
b2YKKyAgKiAgICAgICAgICAgICAgICAgIHRleHQgIChVVEYtOCwgbm9uY29udGlndW91cyBVVEYt
MTYsIHdoYXRldmVyLikKKyAgKgorICAqICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25zIHRo
YXQgYXJlIHVzaW5nIHByZWRlZmluZWQgdHlwZXMgb2YgdGV4dCBwcm92aWRlcnMKKyAgKiAgICAg
ICAgICAgICAgICAgIHRvIHBhc3MgdGV4dCBkYXRhIHRvIElDVSBzZXJ2aWNlcyB3aWxsIGhhdmUg
bm8gbmVlZCB0byB2aWV3IHRoZQorICAqICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzIG9mIHRo
ZSBVVGV4dCBzdHJ1Y3RzIHRoYXQgdGhleSBvcGVuLgorICAqCisgICogQHN0YWJsZSBJQ1UgMy42
CisgICovCitzdHJ1Y3QgVVRleHQgeworICAgIC8qKgorICAgICAqICAgICAocHJpdmF0ZSkgIE1h
Z2ljLiAgVXNlZCB0byBoZWxwIGRldGVjdCB3aGVuIFVUZXh0IGZ1bmN0aW9ucyBhcmUgaGFuZGVk
CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkIG9yIHVuaXRpYWxpemVkIFVU
ZXh0IHN0cnVjdHMuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICB1dGV4dF9vcGVuWFla
KCkgZnVuY3Rpb25zIHRha2UgYW4gaW5pdGlhbGl6ZWQsCisgICAgICogICAgICAgICAgICAgICAg
ICAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG9wZW4sIFVUZXh0IHN0cnVjdCBhcyBhbgorICAg
ICAqICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgZmlsbC1pbiBwYXJhbWV0ZXIuICBU
aGlzIG1hZ2ljIGZpZWxkCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIHRv
IGNoZWNrIGZvciB0aGF0IGluaXRpYWxpemF0aW9uLgorICAgICAqICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dCBwcm92aWRlciBjbG9zZSBmdW5jdGlvbnMgbXVzdCBOT1QgY2xlYXIKKyAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWdpYyBmaWVsZCBiZWNhdXNlIHRoYXQgd291
bGQgcHJldmVudAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgcmV1c2Ugb2YgdGhlIFVU
ZXh0IHN0cnVjdC4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICB1aW50MzJfdCAgICAg
ICBtYWdpYzsKKworCisgICAgLyoqCisgICAgICogICAgIChwcml2YXRlKSAgRmxhZ3MgZm9yIG1h
bmFnaW5nIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nIG9mCisgICAgICogICAgICAgICAgICAg
ICAgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFVUZXh0LgorICAgICAqIEBpbnRlcm5hbAor
ICAgICAqLworICAgIGludDMyX3QgICAgICAgIGZsYWdzOworCisKKyAgICAvKioKKyAgICAgICog
IFRleHQgcHJvdmlkZXIgcHJvcGVydGllcy4gIFRoaXMgc2V0IG9mIGZsYWdzIGlzIG1haW50YWlu
dGVkIGJ5IHRoZQorICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCBwcm92
aWRlciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICogIEBzdGFibGUgSUNVIDMuNAorICAgICAgKi8K
KyAgICBpbnQzMl90ICAgICAgICAgcHJvdmlkZXJQcm9wZXJ0aWVzOworCisgICAgLyoqCisgICAg
ICogKHB1YmxpYykgc2l6ZU9mU3RydWN0PXNpemVvZihVVGV4dCkKKyAgICAgKiBBbGxvd3MgcG9z
c2libGUgYmFja3dhcmQgY29tcGF0aWJsZSBleHRlbnNpb24uCisgICAgICoKKyAgICAgKiBAc3Rh
YmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgc2l6ZU9mU3RydWN0Owor
ICAgIAorICAgIC8qIC0tLS0tLSAxNiBieXRlIGFsaWdubWVudCBib3VuZGFyeSAtLS0tLS0tLS0t
LSAgKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAgKHByb3RlY3RlZCkgTmF0aXZlIGluZGV4
IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgcG9zaXRpb24gZm9sbG93aW5nCisgICAgICAqICAgICAg
ICAgICAgICB0aGUgY3VycmVudCBjaHVuay4KKyAgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAg
ICAgKi8KKyAgICBpbnQ2NF90ICAgICAgICAgY2h1bmtOYXRpdmVMaW1pdDsKKworICAgIC8qKgor
ICAgICAqICAgKHByb3RlY3RlZCkgIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGV4dHJhIHNwYWNlIChw
RXh0cmEpLgorICAgICAqICBAc3RhYmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBpbnQzMl90ICAg
ICAgICBleHRyYVNpemU7CisKKyAgICAvKioKKyAgICAgICogICAgKHByb3RlY3RlZCkgVGhlIGhp
Z2hlc3QgY2h1bmsgb2Zmc2V0IHdoZXJlIG5hdGl2ZSBpbmRleGluZyBhbmQKKyAgICAgICogICAg
Y2h1bmsgKFVURi0xNikgaW5kZXhpbmcgY29ycmVzcG9uZC4gIEZvciBVVEYtMTYgc291cmNlcywg
dmFsdWUKKyAgICAgICogICAgd2lsbCBiZSBlcXVhbCB0byBjaHVua0xlbmd0aC4KKyAgICAgICoK
KyAgICAgICogICAgQHN0YWJsZSBJQ1UgMy42CisgICAgICAqLworICAgIGludDMyX3QgICAgICAg
ICBuYXRpdmVJbmRleGluZ0xpbWl0OworCisgICAgLyogLS0tLSAxNiBieXRlIGFsaWdubWVudCBi
b3VuZGFyeS0tLS0tLSAqLworICAgIAorICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSBOYXRp
dmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dCBjaHVuay4KKyAgICAg
KiAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgaW50NjRfdCAgICAgICAgIGNodW5rTmF0
aXZlU3RhcnQ7CisKKyAgICAvKioKKyAgICAgKiAgKHByb3RlY3RlZCkgQ3VycmVudCBpdGVyYXRp
b24gcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0IGNodW5rIChVVEYtMTYgYnVmZmVyKS4KKyAgICAg
KiAgVGhpcyBpcyB0aGUgaW5kZXggdG8gdGhlIGNoYXJhY3RlciB0aGF0IHdpbGwgYmUgcmV0dXJu
ZWQgYnkgdXRleHRfbmV4dDMyKCkuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAqLwor
ICAgIGludDMyX3QgICAgICAgICBjaHVua09mZnNldDsKKworICAgIC8qKgorICAgICAqICAocHJv
dGVjdGVkKSBMZW5ndGggdGhlIHRleHQgY2h1bmsgKFVURi0xNiBidWZmZXIpLCBpbiBVQ2hhcnMu
CisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIGludDMyX3QgICAgICAgICBj
aHVua0xlbmd0aDsKKworICAgIC8qIC0tLS0gMTYgIGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0g
Ki8KKyAgICAKKworICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSAgcG9pbnRlciB0byBhIGNo
dW5rIG9mIHRleHQgaW4gVVRGLTE2IGZvcm1hdC4KKyAgICAgKiAgTWF5IHJlZmVyIGVpdGhlciB0
byBvcmlnaW5hbCBzdG9yYWdlIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIHRleHQsIG9yCisgICAgICog
IGlmIGNvbnZlcnNpb24gd2FzIHJlcXVpcmVkLCB0byBhIGJ1ZmZlciBvd25lZCBieSB0aGUgVVRl
eHQuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIGNvbnN0IFVDaGFyICAg
ICpjaHVua0NvbnRlbnRzOworCisgICAgIC8qKgorICAgICAgKiAocHVibGljKSAgICAgUG9pbnRl
ciB0byBEaXNwYXRjaCB0YWJsZSBmb3IgYWNjZXNzaW5nIGZ1bmN0aW9ucyBmb3IgdGhpcyBVVGV4
dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICAqLworICAgIGNvbnN0IFVUZXh0RnVu
Y3MgICAgICpwRnVuY3M7CisKKyAgICAvKioKKyAgICAgKiAgKHByb3RlY3RlZCkgIFBvaW50ZXIg
dG8gYWRkaXRpb25hbCBzcGFjZSByZXF1ZXN0ZWQgYnkgdGhlCisgICAgICogICAgICAgICAgICAg
ICB0ZXh0IHByb3ZpZGVyIGR1cmluZyB0aGUgdXRleHRfb3BlbiBvcGVyYXRpb24uCisgICAgICog
QHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgdm9pZCAgICAgICAgICAqcEV4dHJhOworCisg
ICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRlciB0byBzdHJpbmcgb3IgdGV4dC1jb250
YWluaW4gb2JqZWN0IG9yIHNpbWlsYXIuCisgICAgICogVGhpcyBpcyB0aGUgc291cmNlIG9mIHRo
ZSB0ZXh0IHRoYXQgdGhpcyBVVGV4dCBpcyB3cmFwcGluZywgaW4gYSBmb3JtYXQKKyAgICAgKiAg
dGhhdCBpcyBrbm93biB0byB0aGUgdGV4dCBwcm92aWRlciBmdW5jdGlvbnMuCisgICAgICogQHN0
YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgY29uc3Qgdm9pZCAgICpjb250ZXh0OworCisgICAg
LyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0tICovCisKKyAgICAvKioKKyAgICAg
KiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFpbGFibGUgZm9yIHVzZSBieSB0aGUgdGV4
dCBwcm92aWRlci4KKyAgICAgKiBOb3QgdXNlZCBieSBVVGV4dCBjb21tb24gY29kZS4KKyAgICAg
KiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBjb25zdCB2b2lkICAgICAqcDsgCisgICAg
LyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRlciBmaWVsZHMgYXZhaWxhYmxlIGZvciB1c2Ug
YnkgdGhlIHRleHQgcHJvdmlkZXIuCisgICAgICogTm90IHVzZWQgYnkgVVRleHQgY29tbW9uIGNv
ZGUuCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgY29uc3Qgdm9pZCAgICAg
KnE7CisgICAgIC8qKgorICAgICAqIChwcm90ZWN0ZWQpIFBvaW50ZXIgZmllbGRzIGF2YWlsYWJs
ZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgorICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0
IGNvbW1vbiBjb2RlLgorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBjb25z
dCB2b2lkICAgICAqcjsKKworICAgIC8qKgorICAgICAgKiAgUHJpdmF0ZSBmaWVsZCByZXNlcnZl
ZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrCisgICAgICAqICAgICBpdHNl
bGYuICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5IHRoZSB0ZXh0IHByb3ZpZGVycy4KKyAg
ICAgICogQGludGVybmFsIElDVSAzLjQKKyAgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKnBy
aXZQOworCisKKyAgICAvKiAtLS0gMTYgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnktLS0gKi8KKyAg
ICAKKworICAgIC8qKgorICAgICAgKiAocHJvdGVjdGVkKSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVk
IGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisgICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBV
VGV4dCBmcmFtZXdvcmssIG9yIGJ5IHRoZSBjbGllbnQgKHVzZXIpIG9mIHRoZSBVVGV4dC4KKyAg
ICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICAqLworICAgIGludDY0X3QgICAgICAgICBhOwor
CisgICAgLyoqCisgICAgICAqIChwcm90ZWN0ZWQpIEludGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9y
IHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAgICogTm90IHVzZWQgYnkgdGhlIFVUZXh0
IGZyYW1ld29yaywgb3IgYnkgdGhlIGNsaWVudCAodXNlcikgb2YgdGhlIFVUZXh0LgorICAgICAg
KiBAc3RhYmxlIElDVSAzLjQKKyAgICAgICovCisgICAgaW50MzJfdCAgICAgICAgIGI7CisKKyAg
ICAvKioKKyAgICAgICogKHByb3RlY3RlZCkgSW50ZWdlciBmaWVsZCByZXNlcnZlZCBmb3IgdXNl
IGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgorICAgICAgKiBOb3QgdXNlZCBieSB0aGUgVVRleHQgZnJh
bWV3b3JrLCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBvZiB0aGUgVVRleHQuCisgICAgICAqIEBz
dGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgYzsKKworICAgIC8q
ICAtLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0tLSAqLworCisKKyAgICAvKioKKyAg
ICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0
IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hl
ZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAg
ICAqLworICAgIGludDY0X3QgICAgICAgICBwcml2QTsKKyAgICAvKioKKyAgICAgICogIFByaXZh
dGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yawor
ICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4
dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGlu
dDMyX3QgICAgICAgICBwcml2QjsKKyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVz
ZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAg
aXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMu
CisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGludDMyX3QgICAgICAg
ICBwcml2QzsKK307CisKKworLyoqCisgKiAgQ29tbW9uIGZ1bmN0aW9uIGZvciB1c2UgYnkgVGV4
dCBQcm92aWRlciBpbXBsZW1lbnRhdGlvbnMgdG8gYWxsb2NhdGUgYW5kL29yIGluaXRpYWxpemUK
KyAqICBhIG5ldyBVVGV4dCBzdHJ1Y3QuICBUbyBiZSBjYWxsZWQgaW4gdGhlIGltcGxlbWVudGF0
aW9uIG9mIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMuCisgKiAgSWYgdGhlIHN1cHBsaWVkIFVUZXh0
IHBhcmFtZXRlciBpcyBudWxsLCBhIG5ldyBVVGV4dCBzdHJ1Y3Qgd2lsbCBiZSBhbGxvY2F0ZWQg
b24gdGhlIGhlYXAuCisgKiAgSWYgdGhlIHN1cHBsaWVkIFVUZXh0IGlzIGFscmVhZHkgb3Blbiwg
dGhlIHByb3ZpZGVyJ3MgY2xvc2UgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQKKyAqICBzbyB0aGF0
IHRoZSBzdHJ1Y3QgY2FuIGJlIHJldXNlZCBieSB0aGUgb3BlbiB0aGF0IGlzIGluIHByb2dyZXNz
LgorICoKKyAqIEBwYXJhbSB1dCAgIHBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QgdG8gYmUgcmUt
dXNlZCwgb3IgbnVsbCBpZiBhIG5ldyBVVGV4dAorICogICAgICAgICAgICAgc2hvdWxkIGJlIGFs
bG9jYXRlZC4KKyAqIEBwYXJhbSBleHRyYVNwYWNlIFRoZSBhbW91bnQgb2YgYWRkaXRpb25hbCBz
cGFjZSB0byBiZSBhbGxvY2F0ZWQgYXMgcGFydAorICogICAgICAgICAgICAgb2YgdGhpcyBVVGV4
dCwgZm9yIHVzZSBieSB0eXBlcyBvZiBwcm92aWRlcnMgdGhhdCByZXF1aXJlCisgKiAgICAgICAg
ICAgICBhZGRpdGlvbmFsIHN0b3JhZ2UuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0
dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gcG9pbnRlciB0byB0aGUgVVRleHQsIGFsbG9jYXRlZCBp
ZiBuZWNlc3NhcnksIHdpdGggZXh0cmEgc3BhY2Ugc2V0IHVwIGlmIHJlcXVlc3RlZC4KKyAqIEBz
dGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfc2V0
dXAoVVRleHQgKnV0LCBpbnQzMl90IGV4dHJhU3BhY2UsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisK
KyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorLyoqCisgICogQGludGVybmFsCisgICogIFZh
bHVlIHVzZWQgdG8gaGVscCBpZGVudGlmeSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgVVRleHQgc3Ry
dWN0cy4KKyAgKiAgTm90ZTogIG11c3QgYmUgcHVibGljbHkgdmlzaWJsZSBzbyB0aGF0IFVURVhU
X0lOSVRJQUxJWkVSIGNhbiBhY2Nlc3MgaXQuCisgICovCitlbnVtIHsKKyAgICBVVEVYVF9NQUdJ
QyA9IDB4MzQ1YWQ4MmMKK307CisjZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KKwor
LyoqCisgKiBpbml0aWFsaXplciB0byBiZSB1c2VkIHdpdGggbG9jYWwgKHN0YWNrKSBpbnN0YW5j
ZXMgb2YgYSBVVGV4dAorICogIHN0cnVjdC4gIFVUZXh0IHN0cnVjdHMgbXVzdCBiZSBpbml0aWFs
aXplZCBiZWZvcmUgcGFzc2luZworICogIHRoZW0gdG8gb25lIG9mIHRoZSB1dGV4dF9vcGVuIGZ1
bmN0aW9ucy4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjYKKyAqLworI2RlZmluZSBVVEVYVF9JTklU
SUFMSVpFUiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICAgIFVURVhUX01BR0lDLCAgICAgICAgICAvKiBtYWdpYyAgICAgICAgICAgICAg
ICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogZmxhZ3Mg
ICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAg
ICAgIC8qIHByb3ZpZGVyUHJvcHMgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIHNpemVv
ZihVVGV4dCksICAgICAgICAvKiBzaXplT2ZTdHJ1Y3QgICAgICAgICAqLyBcCisgICAgICAgICAg
ICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtOYXRpdmVMaW1pdCAgICAgKi8g
XAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGV4dHJhU2l6ZSAg
ICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAv
KiBuYXRpdmVJbmRleGluZ0xpbWl0ICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAg
ICAgICAgICAgICAgLyogY2h1bmtOYXRpdmVTdGFydCAgICAgKi8gXAorICAgICAgICAgICAgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGNodW5rT2Zmc2V0ICAgICAgICAgICovIFwKKyAg
ICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiBjaHVua0xlbmd0aCAgICAg
ICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgLyogY2h1
bmtDb250ZW50cyAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAg
ICAgICAgIC8qIHBGdW5jcyAgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIE5V
TEwsICAgICAgICAgICAgICAgICAvKiBwRXh0cmEgICAgICAgICAgICAgICAqLyBcCisgICAgICAg
ICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgLyogY29udGV4dCAgICAgICAgICAgICAg
Ki8gXAorICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgICAgIC8qIHAsIHEsIHIg
ICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAvKiBwcml2UCAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAwLCAw
LCAgICAgICAgICAgICAgLyogYSwgYiwgYyAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCAgICAgICAgICAgICAgIC8qIHByaXZBLEIsQywgICAgICAgICAgICovIFwK
KyAgICAgICAgICAgICAgICAgIH0KKworCitVX0NERUNMX0VORAorCisKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CmluZGV4IDIxNTU5NjY3NDg0NjgyMTRjMDM2NThkMDNhNWQ3NzQ2ZmZlODA4
YTQuLjY2Y2Q3ZjcwMzgyMDA5NzFlMTc2NzAyY2EyOGRlOTQxMDZjZTgzYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgdGV4dC9D
U3RyaW5nLmgKICAgICB0ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaAogICAgIHRleHQv
TENoYXIuaAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKICAgICB0ZXh0L1N0
cmluZ0J1ZmZlci5oCiAgICAgdGV4dC9TdHJpbmdDb21tb24uaAogICAgIHRleHQvU3RyaW5nSGFz
aC5oCkBAIC0xNDcsOSArMTQ4LDE1IEBAIHNldChXVEZfSEVBREVSUwogICAgIHRleHQvU3RyaW5n
Vmlldy5oCiAgICAgdGV4dC9TeW1ib2xJbXBsLmgKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgK
KyAgICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKyAgICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1UuaAogICAgIHRleHQvVW5pcXVlZFN0cmluZ0ltcGwuaAogICAgIHRleHQvV1RG
U3RyaW5nLmgKIAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXIuaAorICAgIHRleHQvaWN1L1VU
ZXh0UHJvdmlkZXJMYXRpbjEuaAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCisK
ICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCiAKICAgICB1bmljb2RlL0NoYXJhY3Rlck5h
bWVzLmgKQEAgLTIyMSw4ICsyMjgsMTMgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJp
bmdTdGF0aWNzLmNwcAogICAgIHRleHQvU3RyaW5nVmlldy5jcHAKICAgICB0ZXh0L1N5bWJvbFJl
Z2lzdHJ5LmNwcAorICAgIHRleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCiAgICAgdGV4dC9XVEZT
dHJpbmcuY3BwCiAKKyAgICB0ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcAorICAgIHRleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAgdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2
LmNwcAorCiAgICAgdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuY3BwCiAKICAgICB1bmljb2RlL1VU
RjguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDcxYTUyYWU1ZTFlMjdhNGM4ODk1
NjU3Y2Q0ZTA1ZjM4YmM2YTBhOWUuLmJhMTU0NzQ4NzAxOWIyMWMzN2NmOTZmOWUwOTM3MmI4ZGQx
ZGM4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xLDYgKzEsOCBAQAogbGlzdChB
UFBFTkQgV1RGX1NPVVJDRVMKICAgICBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4
LmNwcAogCisgICAgdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAK
KwogICAgIGVmbC9EaXNwYXRjaFF1ZXVlRWZsLmNwcAogICAgIGVmbC9NYWluVGhyZWFkRWZsLmNw
cAogICAgIGVmbC9SdW5Mb29wRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAy
MGI5Yjk5M2E3YWE3ZjhjNTY1Y2IyODMyNDZjY2JmZDViMDc1NDAyLi5mNjE5ZGQ1N2M3Nzg4ZGUy
Yzk1MzcyZDJiYWVhOTk4MGY3NmI1N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
OCw2ICs4LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBnbGliL01haW5UaHJlYWRH
TGliLmNwcAogICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCiAgICAgUGxhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzVW5peC5jcHAKKworICAgIHRleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VHdGsuY3BwCiApCiAKIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggY2UzZGRiY2IwODFiZjczNzllNTM1N2QxN2JiOWJiYmRhZDBh
OTNlOS4uNDkzYjc5OGQ2MzY2NTJmMjMyZWEzZjk2ZDdjZjg5Zjg5MzIzYjRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTE4LDYgKzE4LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKICAgICBTY2hlZHVsZVBhaXJDRi5jcHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAg
IHRleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KKwogICAgIGNmL1J1
bkxvb3BDRi5jcHAKIAogICAgIGNvY29hL1dvcmtRdWV1ZUNvY29hLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCAzYjNmOThiYmNjZmQ5MDI5Njk0ZmRlMjUyNjExMjdhNjEyYmRjMzIz
Li5hMGJkMTMyYzNlNGMxNzIzYjg5MTVkMTBiYjk0MzQ0ZWZkZTAyOGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQpAQCAtMSw1ICsxLDcgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0g
ICAgUExhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzV2luLmNwcAorICAgIFBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlc1dpbi5jcHAKKworICAgIHRleHQvd2luL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VXaW4uY3BwCiAKICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5j
cHAKICAgICB0ZXh0L2NmL1N0cmluZ0NGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VGlueUxSVUNhY2hlLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAppbmRleCA2Nzhm
OGJmZDEyMGEzYTM2MTFiM2NjZThlMWNlOThmZWM5YWFjMDJkLi45MWIzMWY5ZGRmOTAwYTY2Zjk3
ODg4YjljM2YxMWZiYjU2NjEyNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJV
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaApAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4KIHN0cnVjdCBUaW55TFJVQ2Fj
aGVQb2xpY3kgewpAQCAtNzgsNCArNzgsNyBAQCBwcml2YXRlOgogCiB9CiAKK3VzaW5nIFdURjo6
VGlueUxSVUNhY2hlOwordXNpbmcgV1RGOjpUaW55TFJVQ2FjaGVQb2xpY3k7CisKICNlbmRpZiAv
LyBUaW55TFJVQ2FjaGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc2NjA3ZDJhOTNkNWY4YjEwNDQ3MGVkODdjNDRkOWNj
ZjA4OTMxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVLmgKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VV9oCisjZGVmaW5lIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCisKKyNpbmNsdWRlICJUZXh0
QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1Uu
aCIKKyNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmlj
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK2NsYXNzIExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTGluZUJyZWFrSXRlcmF0b3JQb29sKTsKK3B1YmxpYzoKKyAgICBMaW5l
QnJlYWtJdGVyYXRvclBvb2woKSB7IH0KKworICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBv
b2wmIHNoYXJlZFBvb2woKQorICAgIHsKKyAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lm
aWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmlj
PExpbmVCcmVha0l0ZXJhdG9yUG9vbD47CisgICAgICAgIHJldHVybiAqKnBvb2w7CisgICAgfQor
CisgICAgc3RhdGljIFN0cmluZyBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCisgICAgeworICAg
ICAgICBTdHJpbmdCdWlsZGVyIGxvY2FsZVdpdGhLZXl3b3JkOworICAgICAgICBsb2NhbGVXaXRo
S2V5d29yZC5hcHBlbmQobG9jYWxlKTsKKyAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5k
TGl0ZXJhbCgiQGJyZWFrPSIpOworICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2Fz
ZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0
b3JNb2RlVUFYMTRMb29zZToKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExp
dGVyYWwoImxvb3NlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJl
YWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3Jk
LmFwcGVuZExpdGVyYWwoIm5vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRTdHJpY3Q6CisgICAgICAgICAgICBsb2NhbGVX
aXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJzdHJpY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBsb2NhbGVXaXRoS2V5d29yZC50b1N0cmluZygpOwor
ICAgIH0KKworICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKKyAgICB7Cisg
ICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7CisgICAg
ICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICAgICAg
bG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbG9jYWxlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9jYWxlV2l0
aEJyZWFrS2V5d29yZChsb2NhbGUsIG1vZGUpOworCisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvciA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9wb29sW2ldLmZpcnN0ID09IGxvY2FsZVdp
dGhPcHRpb25hbEJyZWFrS2V5d29yZCkgeworICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbV9w
b29sW2ldLnNlY29uZDsKKyAgICAgICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKGkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFpdGVyYXRvcikgeworICAgICAgICAgICAgaXRlcmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0
b3IobG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkLCBtb2RlLCBpc0NKSyk7CisgICAgICAg
ICAgICBpZiAoIWl0ZXJhdG9yKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKCFtX3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikp
OworICAgICAgICBtX3ZlbmRlZEl0ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhPcHRp
b25hbEJyZWFrS2V5d29yZCk7CisgICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICB9CisKKyAg
ICB2b2lkIHB1dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCisgICAgeworICAgICAgICBB
U1NFUlRfQVJHKGl0ZXJhdG9yLCBtX3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikp
OworCisgICAgICAgIGlmIChtX3Bvb2wuc2l6ZSgpID09IGNhcGFjaXR5KSB7CisgICAgICAgICAg
ICBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKG1fcG9vbFswXS5zZWNvbmQpOworICAgICAgICAgICAg
bV9wb29sLnJlbW92ZSgwKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fcG9vbC5hcHBlbmQoRW50
cnkobV92ZW5kZWRJdGVyYXRvcnMudGFrZShpdGVyYXRvciksIGl0ZXJhdG9yKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OworCisgICAg
dHlwZWRlZiBzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5
OworICAgIHR5cGVkZWYgVmVjdG9yPEVudHJ5LCBjYXBhY2l0eT4gUG9vbDsKKyAgICBQb29sIG1f
cG9vbDsKKyAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3Zl
bmRlZEl0ZXJhdG9yczsKKworICAgIGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVh
a0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3ODI0ZTY0MThmNDI4MmIzZjlkMzUxZTU1MjBjNWRmY2MyYmEyMWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApA
QCAtMCwwICsxLDkyOSBAQAorLyoKKyAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MDkgVG9yY2ggTW9iaWxlLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0
QnJlYWtJdGVyYXRvci5oIgorCisjaW5jbHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgi
CisjaW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlk
ZXJVVEYxNi5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCisvLyBGSVhNRTogVGhpcyBuZWVkcyBh
IGJldHRlciBuYW1lCisjZGVmaW5lIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0o
SU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTEwMCkpCisKK25hbWVzcGFjZSBXVEYgeworCisvLyBJdGVyYXRvciBpbml0aWFsaXph
dGlvbgorCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJl
YWtJdGVyYXRvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVh
a0xvY2FsZUlEKCkpCit7CisgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4
dEJyZWFrSXRlcmF0b3IqPih1YnJrX29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1
cykpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNV
IGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShv
cGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7CisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCisjaWYg
IVBMQVRGT1JNKElPUykKKworc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRl
cmF0b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKK3sKKyAgICBVUGFyc2VFcnJv
ciBwYXJzZVN0YXR1czsKKyAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKGJyZWFrUnVsZXMpOworICAgIGF1dG8gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oYnJlYWtSdWxlcyksIGxlbmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAg
VGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJ
dGVyYXRvcio+KHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAw
LCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShVX1NVQ0NFU1Mob3BlblN0YXR1cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVy
YXRvcjogJXMgKCVkKSIsIHVfZXJyb3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKKyAg
ICByZXR1cm4gaXRlcmF0b3I7Cit9CisKKyNlbmRpZgorCisKKy8vIEl0ZXJhdG9yIHRleHQgc2V0
dGluZworCitzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0
QnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChz
dHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKKyAg
ICAgICAgdGV4dExvY2FsLnRleHQgPSBVVEVYVF9JTklUSUFMSVpFUjsKKyAgICAgICAgdGV4dExv
Y2FsLnRleHQuZXh0cmFTaXplID0gc2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOworICAgICAgICB0
ZXh0TG9jYWwudGV4dC5wRXh0cmEgPSB0ZXh0TG9jYWwuYnVmZmVyOworCisgICAgICAgIFVFcnJv
ckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgVVRleHQqIHRleHQgPSBv
cGVuTGF0aW4xVVRleHRQcm92aWRlcigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwg
c3RyaW5nLmxlbmd0aCgpLCAmb3BlblN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUob3Bl
blN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxl
ZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIH0KKworICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CisgICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJ
dGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYg
KFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJr
X3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICB1dGV4dF9jbG9zZSh0
ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgICAgIHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVu
Z3RoKCksICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3Rh
dHVzKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAm
aXRlcmF0b3I7Cit9CisKK3N0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJl
VGV4dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBz
dHJpbmcsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExl
bmd0aCkKK3sKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7CisgICAgICAgIFVUZXh0V2l0aEJ1
ZmZlciB0ZXh0TG9jYWw7CisgICAgICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTEla
RVI7CisgICAgICAgIHRleHRMb2NhbC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwu
YnVmZmVyKTsKKyAgICAgICAgdGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZl
cjsKKworICAgICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAg
ICAgIFVUZXh0KiB0ZXh0ID0gb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRl
eHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250
ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsICZvcGVuU3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJ
TFVSRShvcGVuU3RhdHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29u
dGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVz
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgVUVy
cm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJrX3NldFVU
ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAm
c2V0VGV4dFN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsK
KyAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMg
JWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICB9CisKKyAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
VVRleHQgdGV4dExvY2FsID0gVVRFWFRfSU5JVElBTElaRVI7CisKKyAgICAgICAgVUVycm9yQ29k
ZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5V
VEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3Rl
cnMxNigpLCBzdHJpbmcubGVuZ3RoKCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3Ro
LCAmb3BlblN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAg
ICAgICAgICAgIExPR19FUlJPUigib3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBm
YWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICB9CisKKyAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRl
cmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIGlmIChV
X0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigidWJya19z
ZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdXRleHRfY2xvc2UodGV4
dCk7CisgICAgfQorCisgICAgcmV0dXJuICZpdGVyYXRvcjsKK30KKworCisvLyBTdGF0aWMgaXRl
cmF0b3JzCisKK1RleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVh
a0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgaWYgKCFzdGF0
aWNXb3JkQnJlYWtJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gc2V0VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsK
K30KKworVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNl
QnJlYWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKKyAgICBp
ZiAoIXN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRl
cmF0b3IsIHN0cmluZyk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0
ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8g
VGhpcyBydWxlIHNldCBpcyBiYXNlZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMg
b2YgSUNVIDQuMAorICAgIC8vIDxodHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9p
Y3UvaWN1L3RhZ3MvcmVsZWFzZS00LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KKyAg
ICAvLyBUaGUgbWFqb3IgZGlmZmVyZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlz
dGVkIGJlbG93OgorICAgIC8vICogUmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFr
ID0gU3BhY2luZ01hcmt9XScgd2l0aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1h
cmt9IC0gJEV4dGVuZF0nIGZvciBJQ1UgMy44IG9yIGVhcmxpZXI7CisgICAgLy8gKiBSZW1vdmVk
IHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNo
YXJhY3RlcnMgKEJ1ZyAyNDM0Mik7CisgICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQg
YSBjdXJzb3IgZnJvbSBtb3ZpbmcgYWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdl
cyBleGNlcHQgVGFtaWwgKEJ1ZyAxNTc5MCksIGFuZDsKKyAgICAvLyAqIEFkZGVkIHJ1bGVzIHRo
YXQgcHJldmVudCBhIGN1cnNvciBmcm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0
aCBrYXRha2FyYSB2b2ljZWQgbWFya3MuCisgICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9u
YWwgaW5kaWNhdG9yIHN5bWJvbHMuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9Cisg
ICAgICAgICIkQ1IgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07Igor
ICAgICAgICAiJExGICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIK
KyAgICAgICAgIiRDb250cm9sID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJv
bH1dOyIKKyAgICAgICAgIiRWb2ljZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiIC8vIEphcGFu
ZXNlIGhhbGYtd2lkdGgga2F0YWthbmEgdm9pY2VkIG1hcmtzCisgICAgICAgICIkRXh0ZW5kICA9
IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IEV4dGVuZH0gJFZvaWNlTWFya3MgLSBbXFx1
MEUzMCBcXHUwRTMyIFxcdTBFNDUgXFx1MEVCMCBcXHUwRUIyXV07IgorICAgICAgICAiJFNwYWNp
bmdNYXJrID0gW1tcXHB7R2VuZXJhbF9DYXRlZ29yeSA9IFNwYWNpbmcgTWFya31dIC0gJEV4dGVu
ZF07IgorICAgICAgICAiJEwgICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBM
fV07IgorICAgICAgICAiJFYgICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBW
fV07IgorICAgICAgICAiJFQgICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBU
fV07IgorICAgICAgICAiJExWICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBM
Vn1dOyIKKyAgICAgICAgIiRMVlQgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0g
TFZUfV07IgorICAgICAgICAiJEhpbjAgICAgPSBbXFx1MDkwNS1cXHUwOTM5XTsiIC8vIERldmFu
YWdhcmkgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkSGluViAgICA9IFxcdTA5NEQ7IiAvLyBE
ZXZhbmFnYXJpIFNpZ24gVmlyYW1hCisgICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5
MzldOyIgLy8gRGV2YW5hZ2FyaSBMZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkQmVuMCAgICA9
IFtcXHUwOTg1LVxcdTA5QjldOyIgLy8gQmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAg
IiRCZW5WICAgID0gXFx1MDlDRDsiIC8vIEJlbmdhbGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRC
ZW4xICAgID0gW1xcdTA5OTUtXFx1MDlCOV07IiAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEK
KyAgICAgICAgIiRQYW4wICAgID0gW1xcdTBBMDUtXFx1MEEzOV07IiAvLyBHdXJtdWtoaSBMZXR0
ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRQYW5WICAgID0gXFx1MEE0RDsiIC8vIEd1cm11a2hpIFNp
Z24gVmlyYW1hCisgICAgICAgICIkUGFuMSAgICA9IFtcXHUwQTE1LVxcdTBBMzldOyIgLy8gR3Vy
bXVraGkgTGV0dGVyIEthLC4uLixIYQorICAgICAgICAiJEd1ajAgICAgPSBbXFx1MEE4NS1cXHUw
QUI5XTsiIC8vIEd1amFyYXRpIExldHRlciBBLC4uLixIYQorICAgICAgICAiJEd1alYgICAgPSBc
XHUwQUNEOyIgLy8gR3VqYXJhdGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRHdWoxICAgID0gW1xc
dTBBOTUtXFx1MEFCOV07IiAvLyBHdWphcmF0aSBMZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIk
T3JpMCAgICA9IFtcXHUwQjA1LVxcdTBCMzldOyIgLy8gT3JpeWEgTGV0dGVyIEEsLi4uLEhhCisg
ICAgICAgICIkT3JpViAgICA9IFxcdTBCNEQ7IiAvLyBPcml5YSBTaWduIFZpcmFtYQorICAgICAg
ICAiJE9yaTEgICAgPSBbXFx1MEIxNS1cXHUwQjM5XTsiIC8vIE9yaXlhIExldHRlciBLYSwuLi4s
SGEKKyAgICAgICAgIiRUZWwwICAgID0gW1xcdTBDMDUtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0
dGVyIEEsLi4uLEhhCisgICAgICAgICIkVGVsViAgICA9IFxcdTBDNEQ7IiAvLyBUZWx1Z3UgU2ln
biBWaXJhbWEKKyAgICAgICAgIiRUZWwxICAgID0gW1xcdTBDMTQtXFx1MEMzOV07IiAvLyBUZWx1
Z3UgTGV0dGVyIEthLC4uLixIYQorICAgICAgICAiJEthbjAgICAgPSBbXFx1MEM4NS1cXHUwQ0I5
XTsiIC8vIEthbm5hZGEgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkS2FuViAgICA9IFxcdTBD
Q0Q7IiAvLyBLYW5uYWRhIFNpZ24gVmlyYW1hCisgICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1
LVxcdTBDQjldOyIgLy8gS2FubmFkYSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRNYWwwICAg
ID0gW1xcdTBEMDUtXFx1MEQzOV07IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAg
ICAgICIkTWFsViAgICA9IFxcdTBENEQ7IiAvLyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKKyAgICAg
ICAgIiRNYWwxICAgID0gW1xcdTBEMTUtXFx1MEQzOV07IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEs
Li4uLEhhCisgICAgICAgICIkUkkgICAgICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAv
LyBFbW9qaSByZWdpb25hbCBpbmRpY2F0b3JzCisgICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7
IiAvLyBaZXJvIHdpZHRoIGpvaW5lcgorICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIg
Ly8gRW1vamktc3R5bGUgdmFyaWF0aW9uIHNlbGVjdG9yCisjaWYgQURESVRJT05BTF9FTU9KSV9T
VVBQT1JUCisgICAgICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxV
MDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIgLy8gRW1vamkg
dGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCisgICAgICAgICIkRW1vamlGb3JNb2Rz
ID0gW1xcdTI2MUQgXFx1MjZGOSBcXHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYz
QzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAw
MUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxV
MDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMg
XFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1
OTAgXFxVMDAwMUY1OTUgXFxVMDAwMUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAw
MUY2NEItXFxVMDAwMUY2NEYgXFxVMDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxV
MDAwMUY2QzAgXFxVMDAwMUY5MThdIDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBt
b2RpZmllcnMKKyNlbHNlCisgICAgICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAw
MUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEJdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0
ZSBpbiBaV0ogc2VxdWVuY2VzCisgICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1
MjcwQS1cXHUyNzBDIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFG
M0M3IFxcVTAwMDFGM0NBIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAw
MDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxc
VTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3
IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFG
NjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAw
MDFGNkMwXSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZW5k
aWYKKyAgICAgICAgIiRFbW9qaU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIgLy8g
Rml0enBhdHJpY2sgbW9kaWZpZXJzCisgICAgICAgICIhIWNoYWluOyIKKyNpZiBBRERJVElPTkFM
X0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiEhUklOb0NoYWluOyIKKyNlbmRpZgorICAgICAgICAi
ISFmb3J3YXJkOyIKKyAgICAgICAgIiRDUiAkTEY7IgorICAgICAgICAiJEwgKCRMIHwgJFYgfCAk
TFYgfCAkTFZUKTsiCisgICAgICAgICIoJExWIHwgJFYpICgkViB8ICRUKTsiCisgICAgICAgICIo
JExWVCB8ICRUKSAkVDsiCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIk
UkkgJFJJICRFeHRlbmQqIC8gJFJJOyIKKyAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCo7IgorICAg
ICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAkRXh0ZW5kOyIKKyAgICAgICAgIlteJENvbnRyb2wg
JENSICRMRl0gJFNwYWNpbmdNYXJrOyIKKyNlbHNlCisgICAgICAgICJbXiRDb250cm9sICRDUiAk
TEZdICRFeHRlbmQ7IgorICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7
IgorICAgICAgICAiJFJJICRSSSAvICRSSTsiCisgICAgICAgICIkUkkgJFJJOyIKKyNlbmRpZgor
ICAgICAgICAiJEhpbjAgJEhpblYgJEhpbjE7IiAvLyBEZXZhbmFnYXJpIFZpcmFtYSAoZm9yd2Fy
ZCkKKyAgICAgICAgIiRCZW4wICRCZW5WICRCZW4xOyIgLy8gQmVuZ2FsaSBWaXJhbWEgKGZvcndh
cmQpCisgICAgICAgICIkUGFuMCAkUGFuViAkUGFuMTsiIC8vIEd1cm11a2hpIFZpcmFtYSAoZm9y
d2FyZCkKKyAgICAgICAgIiRHdWowICRHdWpWICRHdWoxOyIgLy8gR3VqYXJhdGkgVmlyYW1hIChm
b3J3YXJkKQorICAgICAgICAiJE9yaTAgJE9yaVYgJE9yaTE7IiAvLyBPcml5YSBWaXJhbWEgKGZv
cndhcmQpCisgICAgICAgICIkVGVsMCAkVGVsViAkVGVsMTsiIC8vIFRlbHVndSBWaXJhbWEgKGZv
cndhcmQpCisgICAgICAgICIkS2FuMCAkS2FuViAkS2FuMTsiIC8vIEthbm5hZGEgVmlyYW1hIChm
b3J3YXJkKQorICAgICAgICAiJE1hbDAgJE1hbFYgJE1hbDE7IiAvLyBNYWxheWFsYW0gVmlyYW1h
IChmb3J3YXJkKQorICAgICAgICAiJFpXSiAkRW1vamlGb3JTZXFzOyIgLy8gRG9uJ3QgYnJlYWsg
aW4gZW1vamkgWldKIHNlcXVlbmNlcworICAgICAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/
ICRFbW9qaU1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3Nz
aWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCisg
ICAgICAgICIhIXJldmVyc2U7IgorICAgICAgICAiJExGICRDUjsiCisgICAgICAgICIoJEwgfCAk
ViB8ICRMViB8ICRMVlQpICRMOyIKKyAgICAgICAgIigkViB8ICRUKSAoJExWIHwgJFYpOyIKKyAg
ICAgICAgIiRUICgkTFZUIHwgJFQpOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAg
ICAgICAgIiRFeHRlbmQqICRSSSAkUkkgLyAkRXh0ZW5kKiAkUkkgJFJJOyIKKyAgICAgICAgIiRF
eHRlbmQqICRSSSAkUkk7IgorICAgICAgICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENSICRM
Rl07IgorICAgICAgICAiJFNwYWNpbmdNYXJrIFteJENvbnRyb2wgJENSICRMRl07IgorI2Vsc2UK
KyAgICAgICAgIiRFeHRlbmQgICAgICBbXiRDb250cm9sICRDUiAkTEZdOyIKKyAgICAgICAgIiRT
cGFjaW5nTWFyayBbXiRDb250cm9sICRDUiAkTEZdOyIKKyAgICAgICAgIiRSSSAkUkkgLyAkUkkg
JFJJOyIKKyAgICAgICAgIiRSSSAkUkk7IgorI2VuZGlmCisgICAgICAgICIkSGluMSAkSGluViAk
SGluMDsiIC8vIERldmFuYWdhcmkgVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRCZW4xICRC
ZW5WICRCZW4wOyIgLy8gQmVuZ2FsaSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFBhbjEg
JFBhblYgJFBhbjA7IiAvLyBHdXJtdWtoaSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEd1
ajEgJEd1alYgJEd1ajA7IiAvLyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAi
JE9yaTEgJE9yaVYgJE9yaTA7IiAvLyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAg
ICAiJFRlbDEgJFRlbFYgJFRlbDA7IiAvLyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKKyAgICAg
ICAgIiRLYW4xICRLYW5WICRLYW4wOyIgLy8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQorICAg
ICAgICAiJE1hbDEgJE1hbFYgJE1hbDA7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChiYWNrd2FyZCkK
KyAgICAgICAgIiRFbW9qaUZvclNlcXMgJFpXSjsiIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpX
SiBzZXF1ZW5jZXMKKyAgICAgICAgIiRFbW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2Rz
OyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2VlbiByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2
YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBGaXR6cGF0cmljayBtb2RpZmllcgorI2lmIEFERElUSU9O
QUxfRU1PSklfU1VQUE9SVAorICAgICAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICAgICAiJFJJ
ICRSSSs7IgorICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsi
CisgICAgICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgICAgICIkUkkgJFJJKzsiCisgICAgICAg
ICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIgJEVtb2ppTW9kc10rOyI7CisjZWxzZQorICAgICAg
ICAiWyRFbW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIkRW1v
amlGb3JNb2RzIFskRW1vamlWYXIgJEVtb2ppTW9kc10rOyIKKyAgICAgICAgIiEhc2FmZV9yZXZl
cnNlOyIKKyAgICAgICAgIiEhc2FmZV9mb3J3YXJkOyI7CisjZW5kaWYKKyAgICBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXpl
SXRlcmF0b3JXaXRoUnVsZXMoa1J1bGVzKTsKKyNlbHNlIC8vIFBMQVRGT1JNKElPUykKKyAgICAv
LyBVc2UgdGhlIHNwZWNpYWwgVGhhaSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBs
b2NhbGVzCisgICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVu
dEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQorCisgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0
ZXJhdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0Rm9y
SXRlcmF0b3IoKnN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IsIHN0cmluZyk7Cit9CisKK1Rl
eHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJp
bmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0
LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2Rl
LCBib29sIGlzQ0pLKQoreworICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVC
cmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7
CisgICAgaWYgKCFpdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlv
ckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Cit9CisKK3ZvaWQgcmVsZWFzZUxpbmVCcmVh
a0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlRfQVJH
KGl0ZXJhdG9yLCBpdGVyYXRvcik7CisKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJl
ZFBvb2woKS5wdXQoaXRlcmF0b3IpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9s
b2d1ZSA9CisgICAgIiEhY2hhaW47IgorICAgICIhIUxCQ01Ob0NoYWluOyIKKyAgICAiISFsb29r
QWhlYWRIYXJkQnJlYWs7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNC
ZWZvcmUgPQorICAgIC8vIGV4cGxpY2l0bHkgZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lv
bnMgcHJpb3IgdG8gNDkgZG9uJ3Qgc3VwcG9ydCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFu
ZXNlX1N0YXJ0ZXI6CisgICAgIiRDSiA9IFsiCisjaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVN
ID49IDQpICYmIChVX0lDVV9WRVJTSU9OX01JTk9SX05VTSA+PSA5KQorICAgICI6TGluZUJyZWFr
PUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6IgorI2Vsc2UKKyAgICAiXFx1MzA0MVxcdTMw
NDNcXHUzMDQ1XFx1MzA0N1xcdTMwNDlcXHUzMDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4
RVxcdTMwOTVcXHUzMDk2XFx1MzBBMVxcdTMwQTNcXHUzMEE1XFx1MzBBNyIKKyAgICAiXFx1MzBB
OVxcdTMwQzNcXHUzMEUzXFx1MzBFNVxcdTMwRTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZD
IgorICAgICJcXHUzMUYwXFx1MzFGMVxcdTMxRjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2
XFx1MzFGN1xcdTMxRjhcXHUzMUY5XFx1MzFGQVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVc
XHUzMUZGIgorICAgICJcXHVGRjY3XFx1RkY2OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNc
XHVGRjZEXFx1RkY2RVxcdUZGNkZcXHVGRjcwIgorI2VuZGlmCisgICAgIl07IjsKKworc3RhdGlj
IGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Mb29zZUNKSyA9CisgICAgIiRCQV9T
VUIgPSBbXFx1MjAxMFxcdTIwMTNdOyIKKyAgICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxc
dUZGMDFcXHVGRjFGXTsiCisgICAgIiRJRF9TVUIgPSAnJzsiCisgICAgIiRJTl9TVUIgPSBbXFx1
MjAyNVxcdTIwMjZdOyIKKyAgICAiJElTX1NVQiA9IFtcXHUwMDNBXFx1MDAzQl07IgorICAgICIk
TlNfU1VCID0gW1xcdTIwM0NcXHUyMDQ3XFx1MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMw
M0JcXHUzMDlEXFx1MzA5RVxcdTMwQTBcXHUzMEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYx
QlxcdUZGNjVdOyIKKyAgICAiJFBPX1NVQiA9IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMw
XFx1MjAzMlxcdTIwMzNcXHUyMTAzXFx1RkYwNVxcdUZGRTBdOyIKKyAgICAiJFBSX1NVQiA9IFtc
XHUwMDI0XFx1MDBBM1xcdTAwQTVcXHUyMEFDXFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07
IgorICAgICIkSURfQUREID0gWyRDSiAkQkFfU1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICRO
U19TVUIgJFBPX1NVQiAkUFJfU1VCXTsiCisgICAgIiROU19BREQgPSAnJzsiOworCitzdGF0aWMg
Y29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLID0KKyAgICAiJEJB
X1NVQiA9ICcnOyIKKyAgICAiJEVYX1NVQiA9ICcnOyIKKyAgICAiJElEX1NVQiA9ICcnOyIKKyAg
ICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1MjAyNl07IgorICAgICIkSVNfU1VCID0gJyc7IgorICAg
ICIkTlNfU1VCID0gW1xcdTMwMDVcXHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07
IgorICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQURE
ID0gWyRDSiAkSU5fU1VCICROU19TVUJdOyIKKyAgICAiJE5TX0FERCA9ICcnOyI7CisKK3N0YXRp
YyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLID0KKyAgICAiJEJB
X1NVQiA9IFtcXHUyMDEwXFx1MjAxM107IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSU5f
U1VCID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAg
ICIkTlNfU1VCID0gW1xcdTMwMUNcXHUzMEEwXTsiCisgICAgIiRQT19TVUIgPSAnJzsiCisgICAg
IiRQUl9TVUIgPSAnJzsiCisgICAgIiRJRF9BREQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07Igor
ICAgICIkTlNfQUREID0gJyc7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVu
dHNDdXN0b21Ob3JtYWxOb25DSksgPQorICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhfU1VC
ID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIk
SVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gJyc7IgorICAgICIkUE9fU1VCID0gJyc7Igor
ICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0gWyRDSl07IgorICAgICIkTlNfQURE
ID0gJyc7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJp
Y3RDSksgPQorICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIk
SURfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7Igor
ICAgICIkTlNfU1VCID0gJyc7IgorICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0g
Jyc7IgorICAgICIkSURfQUREID0gJyc7IgorICAgICIkTlNfQUREID0gWyRDSl07IjsKKworI2Rl
ZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbVN0cmljdENKSworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVs
dENKSyAgICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbENKSworI2RlZmluZSB1YXgx
NEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdE5vbkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3Rv
bVN0cmljdE5vbkNKSworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVy
ID0KKyAgICAiJEFJID0gWzpMaW5lQnJlYWsgPSBBbWJpZ3VvdXM6XTsiCisgICAgIiRBTCA9IFs6
TGluZUJyZWFrID0gQWxwaGFiZXRpYzpdOyIKKyAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJl
YWtfQWZ0ZXI6XSAtICRCQV9TVUJdOyIKKyAgICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19C
ZWZvcmU6XTsiCisgICAgIiRCSyA9IFs6TGluZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07Igor
ICAgICIkQjIgPSBbOkxpbmVCcmVhayA9IEJyZWFrX0JvdGg6XTsiCisgICAgIiRDQiA9IFs6TGlu
ZUJyZWFrID0gQ29udGluZ2VudF9CcmVhazpdOyIKKyAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBD
bG9zZV9QdW5jdHVhdGlvbjpdOyIKKyAgICAiJENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdf
TWFyazpdOyIKKyAgICAiJENQID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIK
KyAgICAiJENSID0gWzpMaW5lQnJlYWsgPSBDYXJyaWFnZV9SZXR1cm46XTsiCisgICAgIiRFWCA9
IFtbOkxpbmVCcmVhayA9IEV4Y2xhbWF0aW9uOl0gLSAkRVhfU1VCXTsiCisgICAgIiRHTCA9IFs6
TGluZUJyZWFrID0gR2x1ZTpdOyIKKyNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkg
JiYgKFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVNID49IDkpCisgICAgIiRITCA9IFs6TGluZUJyZWFr
ID0gSGVicmV3X0xldHRlcjpdOyIKKyNlbHNlCisgICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpM
ZXR0ZXI6XV07IgorI2VuZGlmCisgICAgIiRIWSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07Igor
ICAgICIkSDIgPSBbOkxpbmVCcmVhayA9IEgyOl07IgorICAgICIkSDMgPSBbOkxpbmVCcmVhayA9
IEgzOl07IgorICAgICIkSUQgPSBbW1tbOkxpbmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pd
ICRJRF9BRERdIC0gJElEX1NVQl07IgorICAgICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFy
YWJsZTpdIC0gJElOX1NVQl07IgorICAgICIkSVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1l
cmljOl0gLSAkSVNfU1VCXTsiCisgICAgIiRKTCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCisgICAg
IiRKViA9IFs6TGluZUJyZWFrID0gSlY6XTsiCisgICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6
XTsiCisgICAgIiRMRiA9IFs6TGluZUJyZWFrID0gTGluZV9GZWVkOl07IgorICAgICIkTkwgPSBb
OkxpbmVCcmVhayA9IE5leHRfTGluZTpdOyIKKyAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBO
b25zdGFydGVyOl0gLSAkQ0pdICROU19BRERdIC0gJE5TX1NVQl07IgorICAgICIkTlUgPSBbOkxp
bmVCcmVhayA9IE51bWVyaWM6XTsiCisgICAgIiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5j
dHVhdGlvbjpdOyIKKyAgICAiJFBPID0gW1s6TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0g
LSAkUE9fU1VCXTsiCisgICAgIiRQUiA9IFtbOkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0g
LSAkUFJfU1VCXTsiCisgICAgIiRRVSA9IFs6TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgorICAg
ICIkUkkgPSBbXFxVMDAwMUYxRTYtXFxVMDAwMUYxRkZdOyIKKyAgICAiJFNBID0gWzpMaW5lQnJl
YWsgPSBDb21wbGV4X0NvbnRleHQ6XTsiCisgICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9n
YXRlOl07IgorICAgICIkU1AgPSBbOkxpbmVCcmVhayA9IFNwYWNlOl07IgorICAgICIkU1kgPSBb
OkxpbmVCcmVhayA9IEJyZWFrX1N5bWJvbHM6XTsiCisgICAgIiRXSiA9IFs6TGluZUJyZWFrID0g
V29yZF9Kb2luZXI6XTsiCisgICAgIiRYWCA9IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKKyAg
ICAiJFpXID0gWzpMaW5lQnJlYWsgPSBaV1NwYWNlOl07IgorICAgICIkWldKID0gXFx1MjAwRDsi
CisgICAgIiRFbW9qaVZhciA9IFxcdUZFMEY7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9S
VAorICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYt
XFxVMDAwMUY0NjkgXFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIKKyAgICAiJEVtb2ppRm9yTW9k
cyA9IFtcXHUyNjFEIFxcdTI2RjkgXFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFG
M0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAw
MDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxc
VTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgz
IFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFG
NTkwIFxcVTAwMDFGNTk1IFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAw
MDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxc
VTAwMDFGNkMwIFxcVTAwMDFGOTE4XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sg
bW9kaWZpZXJzCisjZWxzZQorICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0
NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEJdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUy
NjFEIFxcdTI3MEEtXFx1MjcwQyBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBc
XFUwMDAxRjNDNyBcXFUwMDAxRjNDQSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0
Ni1cXFUwMDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAx
RjQ3OCBcXFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUw
MDAxRjQ4NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBc
XFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZC
NiBcXFUwMDAxRjZDMF0gOyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVy
cworI2VuZGlmCisgICAgIiRFbW9qaU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIK
KyAgICAiJGRpY3Rpb25hcnkgPSBbOkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKKyAg
ICAiJEFMUGx1cyA9IFskQUwgJEFJICRTQSAkU0cgJFhYXTsiCisgICAgIiRBTGNtID0gJEFMUGx1
cyAkQ00qOyIKKyAgICAiJEJBY20gPSAkQkEgJENNKjsiCisgICAgIiRCQmNtID0gJEJCICRDTSo7
IgorICAgICIkQjJjbSA9ICRCMiAkQ00qOyIKKyAgICAiJENMY20gPSAkQ0wgJENNKjsiCisgICAg
IiRDUGNtID0gJENQICRDTSo7IgorICAgICIkRVhjbSA9ICRFWCAkQ00qOyIKKyAgICAiJEdMY20g
PSAkR0wgJENNKjsiCisgICAgIiRITGNtID0gJEhMICRDTSo7IgorICAgICIkSFljbSA9ICRIWSAk
Q00qOyIKKyAgICAiJEgyY20gPSAkSDIgJENNKjsiCisgICAgIiRIM2NtID0gJEgzICRDTSo7Igor
ICAgICIkSURjbSA9ICRJRCAkQ00qOyIKKyAgICAiJElOY20gPSAkSU4gJENNKjsiCisgICAgIiRJ
U2NtID0gJElTICRDTSo7IgorICAgICIkSkxjbSA9ICRKTCAkQ00qOyIKKyAgICAiJEpWY20gPSAk
SlYgJENNKjsiCisgICAgIiRKVGNtID0gJEpUICRDTSo7IgorICAgICIkTlNjbSA9ICROUyAkQ00q
OyIKKyAgICAiJE5VY20gPSAkTlUgJENNKjsiCisgICAgIiRPUGNtID0gJE9QICRDTSo7IgorICAg
ICIkUE9jbSA9ICRQTyAkQ00qOyIKKyAgICAiJFBSY20gPSAkUFIgJENNKjsiCisgICAgIiRRVWNt
ID0gJFFVICRDTSo7IgorICAgICIkUkljbSA9ICRRVSAkQ00qOyIKKyAgICAiJFNZY20gPSAkU1kg
JENNKjsiCisgICAgIiRXSmNtID0gJFdKICRDTSo7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVh
eDE0Rm9yd2FyZCA9CisgICAgIiEhZm9yd2FyZDsiCisgICAgIiRDQU5fQ00gPSBbXiRTUCAkQksg
JENSICRMRiAkTkwgJFpXICRDTV07IgorICAgICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYg
JE5MICRaVyAkQ01dOyIKKyAgICAiJEFMX0ZPTExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAk
WlcgJFNQXTsiCisgICAgIiRBTF9GT0xMT1dfQ00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kg
JFdKICRHTCAkT1AgJFFVICRCQSAkSFkgJE5TICRJTiAkTlUgJEFMUGx1c107IgorICAgICIkQUxf
Rk9MTE9XID0gWyRBTF9GT0xMT1dfTk9DTSAkQUxfRk9MTE9XX0NNXTsiCisgICAgIiRMQjRCcmVh
a3MgPSBbJEJLICRDUiAkTEYgJE5MXTsiCisgICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1Ig
JExGICROTF07IgorICAgICIkTEI4QnJlYWtzID0gWyRMQjRCcmVha3MgJFpXXTsiCisgICAgIiRM
QjhOb25CcmVha3MgPSBbWyRMQjROb25CcmVha3NdIC0gWyRaV11dOyIKKyAgICAiJExCMThOb25C
cmVha3MgPSBbJExCOE5vbkJyZWFrcyAtIFskU1BdXTsiCisgICAgIiRMQjE4QnJlYWtzID0gWyRM
QjhCcmVha3MgJFNQXTsiCisgICAgIiRMQjIwTm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0g
JENCXTsiCisgICAgIiRBTFBsdXMgJENNKzsiCisgICAgIiRCQSAkQ00rOyIKKyAgICAiJEJCICRD
TSs7IgorICAgICIkQjIgJENNKzsiCisgICAgIiRDTCAkQ00rOyIKKyAgICAiJENQICRDTSs7Igor
ICAgICIkRVggJENNKzsiCisgICAgIiRHTCAkQ00rOyIKKyAgICAiJEhMICRDTSs7IgorICAgICIk
SFkgJENNKzsiCisgICAgIiRIMiAkQ00rOyIKKyAgICAiJEgzICRDTSs7IgorICAgICIkSUQgJENN
KzsiCisgICAgIiRJTiAkQ00rOyIKKyAgICAiJElTICRDTSs7IgorICAgICIkSkwgJENNKzsiCisg
ICAgIiRKViAkQ00rOyIKKyAgICAiJEpUICRDTSs7IgorICAgICIkTlMgJENNKzsiCisgICAgIiRO
VSAkQ00rOyIKKyAgICAiJE9QICRDTSs7IgorICAgICIkUE8gJENNKzsiCisgICAgIiRQUiAkQ00r
OyIKKyAgICAiJFFVICRDTSs7IgorICAgICIkU1kgJENNKzsiCisgICAgIiRXSiAkQ00rOyIKKyAg
ICAiJENSICRMRiB7MTAwfTsiCisgICAgIiRMQjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07
IgorICAgICIkQ0FOX0NNICRDTSogJExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRDTSsgJExCNEJy
ZWFrcyB7MTAwfTsiCisgICAgIiRMQjROb25CcmVha3MgWyRTUCAkWlddOyIKKyAgICAiJENBTl9D
TSAkQ00qIFskU1AgJFpXXTsiCisgICAgIiRDTSsgWyRTUCAkWlddOyIKKyAgICAiJEVtb2ppRm9y
U2VxcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM/ICRaV0ogJEVtb2ppRm9yU2VxczsiCisgICAgIiRD
QU5fQ00gJENNKzsiCisgICAgIiRDTSs7IgorICAgICIkQ0FOX0NNICRDTSogJFdKY207IgorICAg
ICIkTEI4Tm9uQnJlYWtzICRXSmNtOyIKKyAgICAiJENNKyAkV0pjbTsiCisgICAgIiRXSmNtICRD
QU5UX0NNOyIKKyAgICAiJFdKY20gJENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENBTl9DTSAk
Q00qOyIKKyAgICAiJEdMY20gJENBTlRfQ007IgorICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRT
UCAkQkEgJEhZXV0gJENNKiAkR0xjbTsiCisgICAgIiRDTSsgR0xjbTsiCisgICAgIiRMQjhOb25C
cmVha3MgJENMOyIKKyAgICAiJENBTl9DTSAkQ00qICRDTDsiCisgICAgIiRDTSsgJENMOyIKKyAg
ICAiJExCOE5vbkJyZWFrcyAkQ1A7IgorICAgICIkQ0FOX0NNICRDTSogJENQOyIKKyAgICAiJENN
KyAkQ1A7IgorICAgICIkTEI4Tm9uQnJlYWtzICRFWDsiCisgICAgIiRDQU5fQ00gJENNKiAkRVg7
IgorICAgICIkQ00rICRFWDsiCisgICAgIiRMQjhOb25CcmVha3MgJElTOyIKKyAgICAiJENBTl9D
TSAkQ00qICRJUzsiCisgICAgIiRDTSsgJElTOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkU1k7Igor
ICAgICIkQ0FOX0NNICRDTSogJFNZOyIKKyAgICAiJENNKyAkU1k7IgorICAgICIkT1BjbSAkU1Aq
ICRDQU5fQ00gJENNKjsiCisgICAgIiRPUGNtICRTUCogJENBTlRfQ007IgorICAgICIkT1BjbSAk
U1ArICRDTSsgJEFMX0ZPTExPVz87IgorICAgICIkUVVjbSAkU1AqICRPUGNtOyIKKyAgICAiKCRD
TGNtIHwgJENQY20pICRTUCogJE5TY207IgorICAgICIkQjJjbSAkU1AqICRCMmNtOyIKKyAgICAi
JExCMThOb25CcmVha3MgJENNKiAkUVVjbTsiCisgICAgIiRDTSsgJFFVY207IgorICAgICIkUVVj
bSAuPzsiCisgICAgIiRRVWNtICRMQjE4Tm9uQnJlYWtzICRDTSo7IgorICAgICIkTEIyME5vbkJy
ZWFrcyAkQ00qICgkQkFjbSB8ICRIWWNtIHwgJE5TY20pOyAiCisgICAgIiRCQmNtIFteJENCXTsi
CisgICAgIiRCQmNtICRMQjIwTm9uQnJlYWtzICRDTSo7IgorICAgICIkSExjbSAoJEhZY20gfCAk
QkFjbSkgW14kQ0JdPzsiCisgICAgIigkQUxjbSB8ICRITGNtKSAkSU5jbTsiCisgICAgIiRDTSsg
JElOY207IgorICAgICIkSURjbSAkSU5jbTsiCisgICAgIiRJTmNtICRJTmNtOyIKKyAgICAiJE5V
Y20gJElOY207IgorICAgICIkSURjbSAkUE9jbTsiCisgICAgIiRBTGNtICROVWNtOyIKKyAgICAi
JEhMY20gJE5VY207IgorICAgICIkQ00rICROVWNtOyIKKyAgICAiJE5VY20gJEFMY207IgorICAg
ICIkTlVjbSAkSExjbTsiCisgICAgIiRQUmNtICRJRGNtOyIKKyAgICAiJFBSY20gKCRBTGNtIHwg
JEhMY20pOyIKKyAgICAiJFBPY20gKCRBTGNtIHwgJEhMY20pOyIKKyAgICAiKCRQUmNtIHwgJFBP
Y20pPyAoJE9QY20gfCAkSFljbSk/ICROVWNtICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENM
Y20gfCAkQ1BjbSk/ICgkUFJjbSB8ICRQT2NtKT87IgorICAgICIkSkxjbSAoJEpMY20gfCAkSlZj
bSB8ICRIMmNtIHwgJEgzY20pOyIKKyAgICAiKCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNt
KTsiCisgICAgIigkSlRjbSB8ICRIM2NtKSAkSlRjbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwg
JEpUY20gfCAkSDJjbSB8ICRIM2NtKSAkSU5jbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpU
Y20gfCAkSDJjbSB8ICRIM2NtKSAkUE9jbTsiCisgICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwg
JEpUY20gfCAkSDJjbSB8ICRIM2NtKTsiCisgICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAk
SExjbSk7IgorICAgICIkQ00rICgkQUxjbSB8ICRITGNtKTsiCisgICAgIiRJU2NtICgkQUxjbSB8
ICRITGNtKTsiCisgICAgIigkQUxjbSB8ICRITGNtIHwgJE5VY20pICRPUGNtOyIKKyAgICAiJENN
KyAkT1BjbTsiCisgICAgIiRDUGNtICgkQUxjbSB8ICRITGNtIHwgJE5VY20pOyIKKyNpZiBBRERJ
VElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAiJFJJY20gJFJJY207IgorI2VuZGlmCisgICAgIiRF
bW9qaUZvck1vZHMgJEVtb2ppVmFyPyAkRW1vamlNb2RzOyI7CisKK3N0YXRpYyBjb25zdCBjaGFy
KiB1YXgxNFJldmVyc2UgPQorICAgICIhIXJldmVyc2U7IgorICAgICIkQ00rICRBTFBsdXM7Igor
ICAgICIkQ00rICRCQTsiCisgICAgIiRDTSsgJEJCOyIKKyAgICAiJENNKyAkQjI7IgorICAgICIk
Q00rICRDTDsiCisgICAgIiRDTSsgJENQOyIKKyAgICAiJENNKyAkRVg7IgorICAgICIkQ00rICRH
TDsiCisgICAgIiRDTSsgJEhMOyIKKyAgICAiJENNKyAkSFk7IgorICAgICIkQ00rICRIMjsiCisg
ICAgIiRDTSsgJEgzOyIKKyAgICAiJENNKyAkSUQ7IgorICAgICIkQ00rICRJTjsiCisgICAgIiRD
TSsgJElTOyIKKyAgICAiJENNKyAkSkw7IgorICAgICIkQ00rICRKVjsiCisgICAgIiRDTSsgJEpU
OyIKKyAgICAiJENNKyAkTlM7IgorICAgICIkQ00rICROVTsiCisgICAgIiRDTSsgJE9QOyIKKyAg
ICAiJENNKyAkUE87IgorICAgICIkQ00rICRQUjsiCisgICAgIiRDTSsgJFFVOyIKKyNpZiBBRERJ
VElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAiJENNKyAkUkk7IgorI2VuZGlmCisgICAgIiRDTSsg
JFNZOyIKKyAgICAiJENNKyAkV0o7IgorICAgICIkQ00rOyIKKyAgICAiJEFMX0ZPTExPVyAkQ00r
IC8gKFskQksgJENSICRMRiAkTkwgJFpXIHtlb2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRD
TSogKFteJE9QICRDTSAkU1BdIHwgWyRBTCB7ZW9mfV0pKTsiCisgICAgIlskUFJdIC8gJENNKyBb
JEJLICRDUiAkTEYgJE5MICRaVyAkU1Age2VvZn1dOyIKKyAgICAiJExCNEJyZWFrcyBbJExCNE5v
bkJyZWFrcy0kQ01dOyIKKyAgICAiJExCNEJyZWFrcyAkQ00rICRDQU5fQ007IgorICAgICIkTEYg
JENSOyIKKyAgICAiWyRTUCAkWlddIFskTEI0Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJFNQICRa
V10gJENNKyAkQ0FOX0NNOyIKKyAgICAiJEVtb2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRF
bW9qaVZhcj8gJEVtb2ppRm9yU2VxczsiCisgICAgIiRDTSsgJENBTl9DTTsiCisgICAgIiRDTSog
JFdKICRDTSogJENBTl9DTTsiCisgICAgIiRDTSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07Igor
ICAgICIkQ0FOVF9DTSAkQ00qICRXSjsiCisgICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCisg
ICAgIiRDTSogJEdMICRDTSogWyRMQjhOb25CcmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKKyAg
ICAiJENBTlRfQ00gJENNKiAkR0w7IgorICAgICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgorICAg
ICIkQ0wgJENNKyAkQ0FOX0NNOyIKKyAgICAiJENQICRDTSsgJENBTl9DTTsiCisgICAgIiRFWCAk
Q00rICRDQU5fQ007IgorICAgICIkSVMgJENNKyAkQ0FOX0NNOyIKKyAgICAiJFNZICRDTSsgJENB
Tl9DTTsiCisgICAgIiRDTCBbJExCOE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJENQIFskTEI4Tm9u
QnJlYWtzLSRDTV07IgorICAgICIkRVggWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRJUyBb
JExCOE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAg
ICJbJENMICRDUCAkRVggJElTICRTWV0gJENNKyAkU1ArICRDTSogJE9QOyAiCisgICAgIiRDTSog
JENBTl9DTSAkU1AqICRDTSogJE9QOyIKKyAgICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCisg
ICAgIiRBTF9GT0xMT1c/ICRDTSsgJFNQICRTUCogJENNKiAkT1A7IgorICAgICIkQUxfRk9MTE9X
X05PQ00gJENNKyAkU1ArICRDTSogJE9QOyIKKyAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsg
JFNQKyAkQ00qICRPUDsiCisgICAgIiRTWSAkQ00gJFNQKyAkT1A7IgorICAgICIkQ00qICRPUCAk
U1AqICRDTSogJFFVOyIKKyAgICAiJENNKiAkTlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAg
ICAiJENNKiAkQjIgJFNQKiAkQ00qICRCMjsiCisgICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsi
CisgICAgIiRDTSogJFFVICRMQjE4Tm9uQnJlYWtzOyIKKyAgICAiJENNKiAkQ0FOX0NNICRDTSog
JFFVOyIKKyAgICAiJENBTlRfQ00gJENNKiAkUVU7IgorICAgICIkQ00qICgkQkEgfCAkSFkgfCAk
TlMpICRDTSogWyRMQjIwTm9uQnJlYWtzLSRDTV07IgorICAgICIkQ00qIFskTEIyME5vbkJyZWFr
cy0kQ01dICRDTSogJEJCOyIKKyAgICAiW14kQ0JdICRDTSogJEJCOyIKKyAgICAiW14kQ0JdICRD
TSogKCRIWSB8ICRCQSkgJENNKiAkSEw7IgorICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwg
JEhMKTsiCisgICAgIiRDTSogJElOICRDTSogJElEOyIKKyAgICAiJENNKiAkSU4gJENNKiAkSU47
IgorICAgICIkQ00qICRJTiAkQ00qICROVTsiCisgICAgIiRDTSogJFBPICRDTSogJElEOyIKKyAg
ICAiJENNKiAkTlUgJENNKiAoJEFMUGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMKSAkQ00qICROVTsiCisgICAgIiRDTSogJElEICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFM
UGx1cyB8ICRITCkgJENNKiAkUFI7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQ
TzsiCisgICAgIigkQ00qICgkUFIgfCAkUE8pKT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAo
JE5VIHwgJElTIHwgJFNZKSkqICRDTSogJE5VICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQ
UiB8ICRQTykpPzsiCisgICAgIiRDTSogKCRIMyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7
IgorICAgICIkQ00qICgkSlQgfCAkSlYpICRDTSogKCRIMiB8ICRKVik7IgorICAgICIkQ00qICRK
VCAkQ00qICgkSDMgfCAkSlQpOyIKKyAgICAiJENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpU
IHwgJEpWIHwgJEpMKTsiCisgICAgIiRDTSogJFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRK
ViB8ICRKTCk7IgorICAgICIkQ00qICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSog
JFBSOyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7Igor
ICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRJUzsiCisgICAgIiRDTSogJE9QICRDTSog
KCRBTFBsdXMgfCAkSEwgfCAkTlUpOyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkg
JENNKiAkQ1A7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkQ00qICRSSSAk
Q00qICRSSTsiCisjZW5kaWYKKyAgICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1v
ZHM7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0U2FmZUZvcndhcmQgPQorICAgICIhIXNh
ZmVfZm9yd2FyZDsiCisgICAgIlskQ00gJE9QICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAk
U1AgJGRpY3Rpb25hcnldKyBbXiRDTSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRk
aWN0aW9uYXJ5XTsiCisgICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0YXRpYyBj
b25zdCBjaGFyKiB1YXgxNFNhZmVSZXZlcnNlID0KKyAgICAiISFzYWZlX3JldmVyc2U7IgorICAg
ICIkQ00rIFteJENNICRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCisgICAgIiRDTSsgJFNQIC8g
LjsiCisgICAgIiRTUCsgJENNKiAkT1A7IgorICAgICIkU1ArICRDTSogJFFVOyIKKyAgICAiJFNQ
KyAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAgICAiJFNQKyAkQ00qICRCMjsiCisgICAgIiRDTSogKCRI
WSB8ICRCQSkgJENNKiAkSEw7IgorICAgICIoJENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIK
KyAgICAiKCRDTCB8ICRDUCkgJENNKiAoJE5VIHwgJElTIHwgJFNZKTsiCisgICAgIiRkaWN0aW9u
YXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0YXRpYyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRv
UnVsZXMoTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgU3Ry
aW5nQnVpbGRlciBydWxlc0J1aWxkZXI7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFBy
b2xvZ3VlKTsKKyAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUp
OworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFY
MTQ6CisgICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tRGVmYXVsdENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3Nl
OgorICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1
c3RvbUxvb3NlQ0pLIDogdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKKyAg
ICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21O
b3JtYWxDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pLKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoKKyAgICAg
ICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJp
Y3RDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVy
KTsKKyAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0Rm9yd2FyZCk7CisgICAgcnVsZXNCdWls
ZGVyLmFwcGVuZCh1YXgxNFJldmVyc2UpOworICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRT
YWZlRm9yd2FyZCk7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsK
KyAgICByZXR1cm4gcnVsZXNCdWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKKy8vIFJlY29nbml6ZSBC
Q1A0NyBjb21wbGlhbnQgcHJpbWFyeSBsYW5ndWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tv
JworLy8gKGluIGFueSBjb21iaW5hdGlvbiBvZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBi
eSBzdWJ0YWdzLiBEb24ndAorLy8gcmVjb2duaXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6
aG8nLCAnanBuJywgb3IgJ2tvcicgc2luY2UgQkNQNDcKKy8vIHJlcXVpcmVzIHVzZSBvZiBzaG9y
dGVzdCBsYW5ndWFnZSB0YWcuCitib29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlKQoreworICAgIHNpemVfdCBsZW5ndGggPSBsb2NhbGUubGVuZ3RoKCk7CisgICAgaWYg
KGxlbmd0aCA8IDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGMxID0gbG9jYWxl
WzBdOworICAgIGF1dG8gYzIgPSBsb2NhbGVbMV07CisgICAgYXV0byBjMyA9IGxlbmd0aCA9PSAy
ID8gMCA6IGxvY2FsZVsyXTsKKyAgICBpZiAoIWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycg
fHwgYzMgPT0gJ0AnKSB7CisgICAgICAgIGlmIChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQorICAg
ICAgICAgICAgcmV0dXJuIGMyID09ICdoJyB8fCBjMiA9PSAnSCc7CisgICAgICAgIGlmIChjMSA9
PSAnaicgfHwgYzEgPT0gJ0onKQorICAgICAgICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9
PSAnQSc7CisgICAgICAgIGlmIChjMSA9PSAnaycgfHwgYzEgPT0gJ0snKQorICAgICAgICAgICAg
cmV0dXJuIGMyID09ICdvJyB8fCBjMiA9PSAnTyc7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSksp
Cit7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyOworICAgIFVFcnJvckNvZGUgb3BlblN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBib29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNF
bXB0eSgpOworICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAg
ICAgICB1YnJrSXRlciA9IHVicmtfb3BlbihVQlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJy
ZW50VGV4dEJyZWFrTG9jYWxlSUQoKSA6IGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAw
LCAwLCAmb3BlblN0YXR1cyk7CisgICAgZWxzZSB7CisgICAgICAgIFVQYXJzZUVycm9yIHBhcnNl
U3RhdHVzOworICAgICAgICBhdXRvIHJ1bGVzID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMo
bW9kZSwgaXNDSkspOworICAgICAgICB1YnJrSXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1Zp
ZXcocnVsZXMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwg
JnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cyk7CisgICAgfQorICAgIC8vIGxvY2FsZSBjb21lcyBm
cm9tIGEgd2ViIHBhZ2UgYW5kIGl0IGNhbiBiZSBpbnZhbGlkLCBsZWFkaW5nIElDVQorICAgIC8v
IHRvIGZhaWwsIGluIHdoaWNoIGNhc2Ugd2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2Fs
ZS4KKyAgICBpZiAoIWxvY2FsZUlzRW1wdHkgJiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Cisg
ICAgICAgIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVicmtJdGVyID0gdWJy
a19vcGVuKFVCUktfTElORSwgY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVu
U3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAg
ICAgIExPR19FUlJPUigidWJya19vcGVuIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0
dXMpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtJdGVyKTsKK30KKwordm9pZCBjbG9z
ZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IpCit7CisgICAg
VUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0gcmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRv
cio+KGl0ZXJhdG9yKTsKKyAgICBBU1NFUlQodWJya0l0ZXIpOworICAgIHVicmtfY2xvc2UodWJy
a0l0ZXIpOworICAgIGl0ZXJhdG9yID0gbnVsbHB0cjsKK30KKworc3RhdGljIFRleHRCcmVha0l0
ZXJhdG9yKiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOworCitzdGF0aWMgaW5saW5l
IGJvb2wgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yKiBleHBlY3RlZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQorewor
ICAgIHJldHVybiBXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvciwgZXhwZWN0ZWQsIG5ld1ZhbHVlKTsKK30KKworTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICBtX2l0ZXJhdG9yID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcjsKKworICAgIGJvb2wgY3JlYXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJl
QW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7Cisg
ICAgaWYgKCFjcmVhdGVkSXRlcmF0b3IpCisgICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXpl
SXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOworICAgIGlmICghbV9pdGVyYXRvcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9pdGVyYXRvciA9IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRv
ciwgc3RyaW5nKTsKK30KKworTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQoreworICAgIGlmICghY29tcGFyZUFuZFN3YXBO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKDAsIG1faXRlcmF0b3IpKQorICAgICAgICB1
YnJrX2Nsb3NlKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7
Cit9CisKKworLy8gSXRlcmF0b3IgaW1wbGVtZW5hdGlvbi4KKworaW50IHRleHRCcmVha0ZpcnN0
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19maXJzdChy
ZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKK30KKworaW50IHRl
eHRCcmVha0xhc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1
YnJrX2xhc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9
CisKK2ludCB0ZXh0QnJlYWtOZXh0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAg
ICByZXR1cm4gdWJya19uZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvcikpOworfQorCitpbnQgdGV4dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvcykKK3sKKyAgICByZXR1cm4gdWJya19w
cmVjZWRpbmcocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9z
KTsKK30KKworaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IsIGludCBwb3MpCit7CisgICAgcmV0dXJuIHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Cit9CisKK2ludCB0ZXh0QnJlYWtD
dXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19j
dXJyZW50KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQor
Citib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0
aW9uKQoreworICAgIHJldHVybiB1YnJrX2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zaXRpb24pOworfQorCitib29sIGlzV29yZFRleHRC
cmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMg
PSB1YnJrX2dldFJ1bGVTdGF0dXMocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0
ZXJhdG9yKSk7CisgICAgcmV0dXJuIHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisK
K3Vuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nJiBzKQoreworICAgIHVu
c2lnbmVkIHN0cmluZ0xlbmd0aCA9IHMubGVuZ3RoKCk7CisgICAgCisgICAgaWYgKCFzdHJpbmdM
ZW5ndGgpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRl
bmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENSIExGCisgICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMu
Y29udGFpbnMoJ1xyJykpCisgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisKKyAgICBOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHMpOworICAgIGlmICghaXQpCisgICAgICAg
IHJldHVybiBzdHJpbmdMZW5ndGg7CisKKyAgICB1bnNpZ25lZCBudW0gPSAwOworICAgIHdoaWxl
ICh0ZXh0QnJlYWtOZXh0KGl0KSAhPSBUZXh0QnJlYWtEb25lKQorICAgICAgICArK251bTsKKyAg
ICByZXR1cm4gbnVtOworfQorCit1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0
ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHMsIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCit7
CisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgoKTsKKworICAgIGlmICghc3Ry
aW5nTGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZSBvbmx5IExhdGluLTEg
RXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlciBpcyBDUiBMRgorICAgIGlmIChzLmlzOEJpdCgpICYm
ICFzLmNvbnRhaW5zKCdccicpKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3Ro
LCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsKKworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IgaXQocyk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmlu
Z0xlbmd0aCwgbnVtR3JhcGhlbWVDbHVzdGVycyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtR3JhcGhlbWVDbHVzdGVyczsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0QnJlYWtO
ZXh0KGl0KSA9PSBUZXh0QnJlYWtEb25lKQorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0
aDsKKyAgICB9CisgICAgcmV0dXJuIHRleHRCcmVha0N1cnJlbnQoaXQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRl
cmF0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZTQ1MzQ2OGZiOGNjMjNkNjNmYTJjM2EzNDg1MTYwNGI2NmI1ODAxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0wLDAg
KzEsMjI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IExhcnMgS25vbGwgPGxhcnNAdHJv
bGx0ZWNoLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9yX2gKKyNk
ZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3I7CisKKy8vIE5vdGU6IFRoZSByZXR1cm5lZCBp
dGVyYXRvciBpcyBnb29kIG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRo
IHRoZSBleGNlcHRpb24gb2YgYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgorCitlbnVtIExpbmVC
cmVha0l0ZXJhdG9yTW9kZSB7CisgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCisgICAg
TGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZSwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNE5vcm1hbCwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKK307
CisKKy8vIFRoaXMgaXMgc2ltaWxhciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9z
dCBjYXNlcywgYnV0IGlzIHN1YmplY3QgdG8KKy8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBP
bmUgbm90YWJsZSBleGFtcGxlIHdoZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVudAorLy8gZnJvbSBj
aGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBi
dWcgMjQzNDIuCisvLyBVc2UgdGhpcyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24g
bWFuaXB1bGF0aW9ucy4KK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogY3Vy
c29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFRl
eHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBP
UlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmlu
Z1ZpZXcpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVM
aW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwg
Y29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBM
aW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7CitUZXh0QnJl
YWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVC
cmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUg
aW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBpbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9Q
UklWQVRFIGludCB0ZXh0QnJlYWtQcmV2aW91cyhUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VY
UE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRv
ciosIGludCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0
QnJlYWtJdGVyYXRvciosIGludCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RleHRCcmVh
ayhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dv
cmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKTsKKworY29uc3QgaW50IFRleHRCcmVha0Rv
bmUgPSAtMTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRv
bWljU3RyaW5nJik7CisKK2NsYXNzIExhenlMaW5lQnJlYWtJdGVyYXRvciB7CitwdWJsaWM6Cisg
ICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yKCkKKyAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIp
CisgICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHQobnVsbHB0cikKKyAgICAgICAgLCBtX21v
ZGUoTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQpCisgICAgICAgICwgbV9jYWNoZWRQcmlvckNv
bnRleHRMZW5ndGgoMCkKKyAgICAgICAgLCBtX2lzQ0pLKGZhbHNlKQorICAgIHsKKyAgICAgICAg
cmVzZXRQcmlvckNvbnRleHQoKTsKKyAgICB9CisKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3Io
U3RyaW5nIHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmco
KSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgx
NCkKKyAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCisgICAgICAgICwgbV9sb2NhbGUobG9jYWxl
KQorICAgICAgICAsIG1faXRlcmF0b3IobnVsbHB0cikKKyAgICAgICAgLCBtX2NhY2hlZFByaW9y
Q29udGV4dChudWxscHRyKQorICAgICAgICAsIG1fbW9kZShtb2RlKQorICAgICAgICAsIG1fY2Fj
aGVkUHJpb3JDb250ZXh0TGVuZ3RoKDApCisgICAgeworICAgICAgICByZXNldFByaW9yQ29udGV4
dCgpOworICAgICAgICBtX2lzQ0pLID0gaXNDSktMb2NhbGUobG9jYWxlKTsKKyAgICB9CisKKyAg
ICB+TGF6eUxpbmVCcmVha0l0ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9y
KQorICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAg
IH0KKworICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAg
IGJvb2wgaXNMb29zZUNKS01vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9
PSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOyB9CisKKyAgICBVQ2hhciBsYXN0Q2hh
cmFjdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9M
RU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRf
cHJpb3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07
CisgICAgfQorCisgICAgVUNoYXIgc2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQp
ID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgp
OworICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07CisgICAgfQorCisgICAgdm9pZCBz
ZXRQcmlvckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQorICAgIHsKKyAg
ICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0g
MiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Cisg
ICAgICAgIG1fcHJpb3JDb250ZXh0WzBdID0gc2Vjb25kVG9MYXN0OworICAgICAgICBtX3ByaW9y
Q29udGV4dFsxXSA9IGxhc3Q7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQo
VUNoYXIgbGFzdCkKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5H
VEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJp
b3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JD
b250ZXh0WzFdOworICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7CisgICAgfQorCisg
ICAgdm9pZCByZXNldFByaW9yQ29udGV4dCgpCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VS
VChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRv
cl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKKyAgICAgICAgbV9wcmlvckNvbnRl
eHRbMF0gPSAwOworICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7CisgICAgfQorCisgICAg
dW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2ln
bmVkIHByaW9yQ29udGV4dExlbmd0aCA9IDA7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9B
UlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhw
ZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICBpZiAobV9wcmlvckNvbnRleHRb
MV0pIHsKKyAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgaWYg
KG1fcHJpb3JDb250ZXh0WzBdKQorICAgICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3Ro
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgfQor
CisgICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkg
Y2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKKyAgICAvLyBpbml0
aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFy
eSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZworICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHBy
aW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5z
aWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByaW9yQ29u
dGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0eSk7CisgICAgICAgIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJp
b3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDogMDsKKyAgICAgICAgaWYg
KCFtX2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVh
a0l0ZXJhdG9yKG1fc3RyaW5nLCBtX2xvY2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRM
ZW5ndGgsIG1fbW9kZSwgbV9pc0NKSyk7CisgICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4
dCA9IHByaW9yQ29udGV4dDsKKyAgICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3Ro
ID0gcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAh
PSBtX2NhY2hlZFByaW9yQ29udGV4dCB8fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQ
cmlvckNvbnRleHRMZW5ndGgpIHsKKyAgICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0
ZXJhdG9yKG1fc3RyaW5nLCBtX2xvY2FsZSwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLT5nZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9pdGVyYXRvcjsKKyAgICB9CisKKyAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJh
dG9yKFN0cmluZyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJ
dGVyYXRvck1vZGUgbW9kZSkKKyAgICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAg
ICAgICAgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgICAgICBtX3N0
cmluZyA9IHN0cmluZzsKKyAgICAgICAgbV9sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIG1faXRl
cmF0b3IgPSBudWxscHRyOworICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7
CisgICAgICAgIG1fbW9kZSA9IG1vZGU7CisgICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShs
b2NhbGUpOworICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCA9IDA7CisgICAgfQor
Citwcml2YXRlOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0
eSA9IDI7CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsK
KyAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKKyAgICBjb25zdCBVQ2hhciogbV9j
YWNoZWRQcmlvckNvbnRleHQ7CisgICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKKyAg
ICB1bnNpZ25lZCBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aDsKKyAgICBVQ2hhciBtX3ByaW9y
Q29udGV4dFtwcmlvckNvbnRleHRDYXBhY2l0eV07CisgICAgYm9vbCBtX2lzQ0pLOworfTsKKwor
Ly8gSXRlcmF0ZXMgb3ZlciAiZXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVk
IGluIFVBWCAjMjkuCisvLyBOb3RlIHRoYXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBi
ZSBsZXNzIHNvcGhpc3RpY2F0ZWQgLSBlLmcuIElDVSBwcmlvciB0bworLy8gdmVyc2lvbiA0LjAg
b25seSBzdXBwb3J0cyAibGVnYWN5IGdyYXBoZW1lIGNsdXN0ZXJzIi4KKy8vIFVzZSB0aGlzIGZv
ciBnZW5lcmFsIHRleHQgcHJvY2Vzc2luZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KKworY2xh
c3MgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik7CitwdWJsaWM6CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKCk7CisKKyAgICBvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVy
biBtX2l0ZXJhdG9yOyB9CisKK3ByaXZhdGU6CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRl
cmF0b3I7Cit9OworCisvLyBDb3VudHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4g
QSBzdXJyb2dhdGUgcGFpciBvciBhIHNlcXVlbmNlCisvLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hh
cmFjdGVyIGFuZCBmb2xsb3dpbmcgY29tYmluaW5nIGNoYXJhY3RlcnMgaXMKKy8vIGNvdW50ZWQg
YXMgMSBncmFwaGVtZSBjbHVzdGVyLgorV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bUdy
YXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nJik7CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
Y2hhcmFjdGVycyB3aGljaCB3aWxsIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworLy8gdGhlIHNw
ZWNpZmllZCBncmFwaGVtZSBjbHVzdGVyIGxlbmd0aC4KK1dURl9FWFBPUlRfUFJJVkFURSB1bnNp
Z25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1
bnNpZ25lZCk7CisKK30KKwordXNpbmcgV1RGOjpMaW5lQnJlYWtJdGVyYXRvck1vZGU7Cit1c2lu
ZyBXVEY6OkxpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0OwordXNpbmcgV1RGOjpMYXp5TGluZUJy
ZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7
Cit1c2luZyBXVEY6OlRleHRCcmVha0RvbmU7Cit1c2luZyBXVEY6OlRleHRCcmVha0l0ZXJhdG9y
OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNkNDU1OWRkNmNiNWUwOWNiN2NlNDNmYThhNmFk
NjkyOTE2N2YwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVV9oCisKKy8vIEZJWE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9jYWxlcyBm
b3IgSUNVLCBub3QganVzdCBmb3IgdGV4dCBicmVha2luZywKKy8vIHRoaXMgZmlsZSBhbmQgdGhl
IHZhcmlvdXMgaW1wbGVtZW50YXRpb24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCisKK25hbWVz
cGFjZSBXVEYgeworCitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFNlYXJj
aExvY2FsZUlEKCk7Citjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKKwor
fQorCit1c2luZyBXVEY6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRDsKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
RWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJu
YWxJQ1VFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNTY4NjlmMTQ1ZGQ3NjgxZGZlYmI2ODg4OTViYzE5
NTUxZTEzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2VmbC9UZXh0
QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8g
RklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2Nv
bnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgcmV0dXJuICJlbl91
cyI7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRCcmVh
a0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVlNWEwNWZhNDkx
OTVmYjMwYmY2OWRlZDU2MmQ1NDNiOGI2MTAxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCkBAIC0w
LDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRv
a2VyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFyKiBjdXJy
ZW50U2VhcmNoTG9jYWxlSUQoKQoreworICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBs
b2NhbGUuCisgICAgcmV0dXJuICIiOworfQorCitjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFr
TG9jYWxlSUQoKQoreworICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisg
ICAgcmV0dXJuICJlbl91cyI7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQ
cm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM4OGZkYmY3Y2E0OWJhNjU5ODk0Mzc3ZjJiMWM1NmFk
YWQwZGVjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0
UHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gUmVsb2NhdGUg
cG9pbnRlciBmcm9tIHNvdXJjZSBpbnRvIGRlc3RpbmF0aW9uIGFzIHJlcXVpcmVkLgorc3RhdGlj
IGlubGluZSB2b2lkIGZpeFBvaW50ZXIoY29uc3QgVVRleHQqIHNvdXJjZSwgVVRleHQqIGRlc3Rp
bmF0aW9uLCBjb25zdCB2b2lkKiYgcG9pbnRlcikKK3sKKyAgICBpZiAocG9pbnRlciA+PSBzb3Vy
Y2UtPnBFeHRyYSAmJiBwb2ludGVyIDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHNvdXJjZS0+cEV4dHJh
KSArIHNvdXJjZS0+ZXh0cmFTaXplKSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBz
b3VyY2UgZXh0cmEgYnVmZmVyLgorICAgICAgICBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KGRlc3RpbmF0aW9uLT5wRXh0cmEpICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVy
KSAtIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UtPnBFeHRyYSkpOworICAgIH0gZWxz
ZSBpZiAocG9pbnRlciA+PSBzb3VyY2UgJiYgcG9pbnRlciA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KHNvdXJjZSkgKyBzb3VyY2UtPnNpemVPZlN0cnVjdCkgeworICAgICAgICAvLyBQ
b2ludGVyIHJlZmVyZW5jZXMgc291cmNlIHRleHQgc3RydWN0dXJlLCBidXQgbm90IHNvdXJjZSBl
eHRyYSBidWZmZXIuCisgICAgICAgIHBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihk
ZXN0aW5hdGlvbikgKyAoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlKSk7CisgICAgfQorfQorCitVVGV4dCogdVRl
eHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9v
bCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgQVNTRVJUX1VOVVNFRChkZWVwLCAh
ZGVlcCk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgaW50MzJfdCBleHRyYVNpemUgPSBzb3VyY2UtPmV4dHJhU2l6ZTsKKyAgICBkZXN0
aW5hdGlvbiA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBleHRyYVNpemUsIHN0YXR1cyk7Cisg
ICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwor
ICAgIHZvaWQqIGV4dHJhTmV3ID0gZGVzdGluYXRpb24tPnBFeHRyYTsKKyAgICBpbnQzMl90IGZs
YWdzID0gZGVzdGluYXRpb24tPmZsYWdzOworICAgIGludCBzaXplVG9Db3B5ID0gc3RkOjptaW4o
c291cmNlLT5zaXplT2ZTdHJ1Y3QsIGRlc3RpbmF0aW9uLT5zaXplT2ZTdHJ1Y3QpOworICAgIG1l
bWNweShkZXN0aW5hdGlvbiwgc291cmNlLCBzaXplVG9Db3B5KTsKKyAgICBkZXN0aW5hdGlvbi0+
cEV4dHJhID0gZXh0cmFOZXc7CisgICAgZGVzdGluYXRpb24tPmZsYWdzID0gZmxhZ3M7CisgICAg
bWVtY3B5KGRlc3RpbmF0aW9uLT5wRXh0cmEsIHNvdXJjZS0+cEV4dHJhLCBleHRyYVNpemUpOwor
ICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPmNvbnRleHQp
OworICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnApOwor
ICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnEpOworICAg
IEFTU0VSVCghZGVzdGluYXRpb24tPnIpOworICAgIGNvbnN0IHZvaWQqIGNodW5rQ29udGVudHMg
PSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMpOwor
ICAgIGZpeFBvaW50ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY2h1bmtDb250ZW50cyk7CisgICAg
ZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGNo
dW5rQ29udGVudHMpOworICAgIHJldHVybiBkZXN0aW5hdGlvbjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmYwYWY5OTcyMzkwZGQwMWJjMjNlYjAyZjZhY2Y5MmM1NDg5MzQ3NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaApAQCAtMCwwICsxLDEx
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVVRleHRQcm92aWRlcl9oCisjZGVmaW5lIFVUZXh0
UHJvdmlkZXJfaAorCisjaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworZW51bSBjbGFzcyBVVGV4dFByb3ZpZGVyQ29udGV4dCB7CisgICAgTm9Db250ZXh0LAor
ICAgIFByaW9yQ29udGV4dCwKKyAgICBQcmltYXJ5Q29udGV4dAorfTsKKworaW5saW5lIFVUZXh0
UHJvdmlkZXJDb250ZXh0IHVUZXh0UHJvdmlkZXJDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0LCBp
bnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+YiB8
fCBuYXRpdmVJbmRleCA+IHRleHQtPmIpCisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpbWFyeUNvbnRleHQ7CisgICAgaWYgKG5hdGl2ZUluZGV4ID09IHRleHQtPmIpCisg
ICAgICAgIHJldHVybiBmb3J3YXJkID8gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250
ZXh0IDogVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dDsKKyAgICByZXR1cm4gVVRl
eHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dDsKK30KKworaW5saW5lIHZvaWQgaW5pdGlh
bGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHQqIHRleHQsIGNvbnN0IFVUZXh0RnVu
Y3MqIGZ1bmNzLCBjb25zdCB2b2lkKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNo
YXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICB0ZXh0LT5w
RnVuY3MgPSBmdW5jczsKKyAgICB0ZXh0LT5wcm92aWRlclByb3BlcnRpZXMgPSAxIDw8IFVURVhU
X1BST1ZJREVSX1NUQUJMRV9DSFVOS1M7CisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAg
ICB0ZXh0LT5wID0gc3RyaW5nOworICAgIHRleHQtPmEgPSBsZW5ndGg7CisgICAgdGV4dC0+cSA9
IHByaW9yQ29udGV4dDsKKyAgICB0ZXh0LT5iID0gcHJpb3JDb250ZXh0TGVuZ3RoOworfQorCisv
LyBTaGFyZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBVVGV4dENsb25lIGZ1bmN0aW9uIG9uIFVU
ZXh0RnVuY3MuCisKK1VUZXh0KiB1VGV4dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRpb24sIGNv
bnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cyk7CisKKwor
Ly8gSGVscGVycyBmb3IgdGhlIFVUZXh0QWNjZXNzIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisK
K2lubGluZSBpbnQ2NF90IHVUZXh0QWNjZXNzUGluSW5kZXgoaW50NjRfdCYgaW5kZXgsIGludDY0
X3QgbGltaXQpCit7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAg
IGVsc2UgaWYgKGluZGV4ID4gbGltaXQpCisgICAgICAgIGluZGV4ID0gbGltaXQ7CisgICAgcmV0
dXJuIGluZGV4OworfQorCitpbmxpbmUgYm9vbCB1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFu
Z2UoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3Ro
LCBVQm9vbCBmb3J3YXJkLCBVQm9vbCYgaXNBY2Nlc3NpYmxlKQoreworICAgIGlmIChmb3J3YXJk
KSB7CisgICAgICAgIGlmIChuYXRpdmVJbmRleCA+PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYm
IG5hdGl2ZUluZGV4IDwgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkgeworICAgICAgICAgICAgaW50
NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAg
ICAgICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVk
IG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgICAgICAgICAgdGV4
dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOworICAgICAgICAgICAgaXNB
Y2Nlc3NpYmxlID0gVFJVRTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChuYXRpdmVJbmRleCA+PSBuYXRpdmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRp
dmVMaW1pdCA9PSBuYXRpdmVMZW5ndGgpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0
ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKG5hdGl2ZUluZGV4ID4gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRl
eCA8PSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNl
dCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8v
IEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4
Y2VlZHMgaW50MzJfdCByYW5nZS4KKyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09m
ZnNldCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUg
PSBUUlVFOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KG5hdGl2ZUluZGV4IDw9IDAgJiYgIXRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAg
ICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZB
TFNFOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVUZXh0UHJv
dmlkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4x
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNWEwZTFlODY0YjI5NzE0ODFlMzA5YzQzNTRlNDMxMDYxYjQ1Yzdl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5jcHAKQEAgLTAsMCArMSwzOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgorCisjaW5jbHVkZSAiVVRl
eHRQcm92aWRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKKy8vIExhdGluMSBwcm92aWRlcgorCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0
aW4xQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7CitzdGF0
aWMgaW50NjRfdCB1VGV4dExhdGluMU5hdGl2ZUxlbmd0aChVVGV4dCopOworc3RhdGljIFVCb29s
IHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOworc3RhdGljIGludDMy
X3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBp
bnQzMl90LCBVRXJyb3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU1hcE9mZnNl
dFRvTmF0aXZlKGNvbnN0IFVUZXh0Kik7CitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMU1hcE5h
dGl2ZUluZGV4VG9VVEYxNihjb25zdCBVVGV4dCosIGludDY0X3QpOworc3RhdGljIHZvaWQgdVRl
eHRMYXRpbjFDbG9zZShVVGV4dCopOworCitzdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3Mg
dVRleHRMYXRpbjFGdW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwKKyAg
ICAwLAorICAgIDAsCisgICAgdVRleHRMYXRpbjFDbG9uZSwKKyAgICB1VGV4dExhdGluMU5hdGl2
ZUxlbmd0aCwKKyAgICB1VGV4dExhdGluMUFjY2VzcywKKyAgICB1VGV4dExhdGluMUV4dHJhY3Qs
CisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIHVUZXh0TGF0aW4xTWFwT2Zmc2V0VG9O
YXRpdmUsCisgICAgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYsCisgICAgdVRleHRM
YXRpbjFDbG9zZSwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsK
Kworc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29u
c3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAg
IEFTU0VSVF9VTlVTRUQoZGVlcCwgIWRlZXApOworCisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBVVGV4dCogcmVzdWx0ID0gdXRleHRfc2V0dXAo
ZGVzdGluYXRpb24sIHNpemVvZihVQ2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0
eSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4g
ZGVzdGluYXRpb247CisgICAgCisgICAgcmVzdWx0LT5wcm92aWRlclByb3BlcnRpZXMgPSBzb3Vy
Y2UtPnByb3ZpZGVyUHJvcGVydGllczsKKyAgICAKKyAgICAvLyBQb2ludCBhdCB0aGUgc2FtZSBw
b3NpdGlvbiwgYnV0IHdpdGggYW4gZW1wdHkgYnVmZmVyLgorICAgIHJlc3VsdC0+Y2h1bmtOYXRp
dmVTdGFydCA9IHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICByZXN1bHQtPmNodW5rTmF0
aXZlTGltaXQgPSBzb3VyY2UtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgcmVzdWx0LT5uYXRpdmVJ
bmRleGluZ0xpbWl0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oc291cmNlLT5jaHVua05hdGl2ZVN0
YXJ0KTsKKyAgICByZXN1bHQtPmNodW5rT2Zmc2V0ID0gMDsKKyAgICByZXN1bHQtPmNvbnRleHQg
PSBzb3VyY2UtPmNvbnRleHQ7CisgICAgcmVzdWx0LT5hID0gc291cmNlLT5hOworICAgIHJlc3Vs
dC0+cEZ1bmNzID0gJnVUZXh0TGF0aW4xRnVuY3M7CisgICAgcmVzdWx0LT5jaHVua0NvbnRlbnRz
ID0gKFVDaGFyKilyZXN1bHQtPnBFeHRyYTsKKyAgICBtZW1zZXQoY29uc3RfY2FzdDxVQ2hhcio+
KHJlc3VsdC0+Y2h1bmtDb250ZW50cyksIDAsIHNpemVvZihVQ2hhcikgKiBVVGV4dFdpdGhCdWZm
ZXJJbmxpbmVDYXBhY2l0eSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50
NjRfdCB1VGV4dExhdGluMU5hdGl2ZUxlbmd0aChVVGV4dCogdVRleHQpCit7CisgICAgcmV0dXJu
IHVUZXh0LT5hOworfQorCitzdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFBY2Nlc3MoVVRleHQqIHVU
ZXh0LCBpbnQ2NF90IGluZGV4LCBVQm9vbCBmb3J3YXJkKQoreworICAgIGludDY0X3QgbGVuZ3Ro
ID0gdVRleHQtPmE7CisKKyAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICBpZiAoaW5kZXggPCB1
VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRleCA+PSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dCkgeworICAgICAgICAgICAgLy8gQWxyZWFkeSBpbnNpZGUgdGhlIGJ1ZmZlci4gU2V0IHRoZSBu
ZXcgb2Zmc2V0LgorICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8
aW50MzJfdD4oaW5kZXggLSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgICAgICAgICBy
ZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoICYmIHVU
ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID09IGxlbmd0aCkgeworICAgICAgICAgICAgLy8gT2ZmIHRo
ZSBlbmQgb2YgdGhlIGJ1ZmZlciwgYnV0IHdlIGNhbid0IGdldCBpdC4KKyAgICAgICAgICAgIHVU
ZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGluZGV4IDw9IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0
ICYmIGluZGV4ID4gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFs
cmVhZHkgaW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KKyAgICAgICAgICAg
IHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQt
PmNodW5rTmF0aXZlU3RhcnQpOworICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFpbmRleCAmJiAhdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAg
ICAgICAgIC8vIEFscmVhZHkgYXQgdGhlIGJlZ2lubmluZzsgY2FuJ3QgZ28gYW55IGZhcnRoZXIu
CisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSAwOworICAgICAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmb3J3YXJkKSB7CisgICAg
ICAgIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gaW5kZXg7CisgICAgICAgIHVUZXh0LT5jaHVu
a05hdGl2ZUxpbWl0ID0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgKyBVVGV4dFdpdGhCdWZmZXJJ
bmxpbmVDYXBhY2l0eTsKKyAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVu
Z3RoKQorICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7CisKKyAg
ICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICB1VGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IGluZGV4OworICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0
aXZlTGltaXQgPiBsZW5ndGgpCisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9
IGxlbmd0aDsKKworICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHVUZXh0LT5jaHVu
a05hdGl2ZUxpbWl0IC0gVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7CisgICAgICAgIGlm
ICh1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA8IDApCisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtO
YXRpdmVTdGFydCA9IDA7CisKKyAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgfQorICAg
IHVUZXh0LT5jaHVua0xlbmd0aCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHVUZXh0LT5jaHVua05h
dGl2ZUxpbWl0IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOworCisgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRp
Y19jYXN0PGNvbnN0IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0aXZl
U3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKKworICAg
IHVUZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdVRleHQtPmNodW5rTGVuZ3RoOworCisgICAg
cmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4
dCogdVRleHQsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgbGltaXQsIFVDaGFyKiBkZXN0LCBpbnQz
Ml90IGRlc3RDYXBhY2l0eSwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIGludDY0X3QgbGVu
Z3RoID0gdVRleHQtPmE7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBpZiAoZGVzdENhcGFjaXR5IDwgMCB8fCAoIWRlc3QgJiYgZGVzdENhcGFj
aXR5ID4gMCkpIHsKKyAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+
IGxpbWl0IHx8IChsaW1pdCAtIHN0YXJ0KSA+IElOVDMyX01BWCkgeworICAgICAgICAqc3RhdHVz
ID0gVV9JTkRFWF9PVVRPRkJPVU5EU19FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgaWYgKHN0YXJ0ID4gbGVuZ3RoKQorICAgICAgICBzdGFydCA9IGxlbmd0aDsKKyAgICBp
ZiAobGltaXQgPiBsZW5ndGgpCisgICAgICAgIGxpbWl0ID0gbGVuZ3RoOworCisgICAgbGVuZ3Ro
ID0gbGltaXQgLSBzdGFydDsKKyAgICAKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAoZGVzdENhcGFjaXR5ID4gMCAmJiAhZGVzdCkgeworICAgICAgICBpbnQz
Ml90IHRyaW1tZWRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOworICAgICAg
ICBpZiAodHJpbW1lZExlbmd0aCA+IGRlc3RDYXBhY2l0eSkKKyAgICAgICAgICAgIHRyaW1tZWRM
ZW5ndGggPSBkZXN0Q2FwYWNpdHk7CisKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRl
c3QsIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsgc3RhcnQsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPih0cmltbWVkTGVuZ3RoKSk7CisgICAgfQorCisgICAgaWYgKGxl
bmd0aCA8IGRlc3RDYXBhY2l0eSkgeworICAgICAgICBkZXN0W2xlbmd0aF0gPSAwOworICAgICAg
ICBpZiAoKnN0YXR1cyA9PSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HKQorICAgICAg
ICAgICAgKnN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSBk
ZXN0Q2FwYWNpdHkpCisgICAgICAgICpzdGF0dXMgPSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9X
QVJOSU5HOworICAgIGVsc2UKKyAgICAgICAgKnN0YXR1cyA9IFVfQlVGRkVSX09WRVJGTE9XX0VS
Uk9SOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCk7Cit9CisKK3N0
YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQqIHVU
ZXh0KQoreworICAgIHJldHVybiB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCArIHVUZXh0LT5jaHVu
a09mZnNldDsKK30KKworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRv
VVRGMTYoY29uc3QgVVRleHQqIHVUZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KQoreworICAgIEFT
U0VSVF9VTlVTRUQodVRleHQsIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID49IG5hdGl2ZUluZGV4
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHVUZXh0LCBuYXRpdmVJbmRleCA8IHVUZXh0LT5jaHVua05h
dGl2ZUxpbWl0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4obmF0aXZlSW5kZXgp
OworfQorCitzdGF0aWMgdm9pZCB1VGV4dExhdGluMUNsb3NlKFVUZXh0KiB1VGV4dCkKK3sKKyAg
ICB1VGV4dC0+Y29udGV4dCA9IG51bGxwdHI7Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xVVRleHRQ
cm92aWRlcihVVGV4dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmlu
ZywgdW5zaWduZWQgbGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJ
TFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFzdHJpbmcg
fHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKSkgeworICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VS
Uk9SOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgVVRleHQqIHRleHQgPSB1
dGV4dF9zZXR1cCgmdXRXaXRoQnVmZmVyLT50ZXh0LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZm
ZXIpLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNT
RVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdGV4dC0+
Y29udGV4dCA9IHN0cmluZzsKKyAgICB0ZXh0LT5hID0gbGVuZ3RoOworICAgIHRleHQtPnBGdW5j
cyA9ICZ1VGV4dExhdGluMUZ1bmNzOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSAoVUNoYXIq
KXRleHQtPnBFeHRyYTsKKyAgICBtZW1zZXQoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5r
Q29udGVudHMpLCAwLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNp
dHkpOworCisgICAgcmV0dXJuIHRleHQ7Cit9CisKKworLy8gTGF0aW4xQ29udGV4dEF3YXJlIHBy
b3ZpZGVyCisKK3N0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZShVVGV4
dCosIGNvbnN0IFVUZXh0KiwgVUJvb2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVU
ZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0aWMgVUJvb2wg
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7Citz
dGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2
NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyB2b2lk
IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKKworc3RhdGljIGNvbnN0IHN0
cnVjdCBVVGV4dEZ1bmNzIHRleHRMYXRpbjFDb250ZXh0QXdhcmVGdW5jcyA9IHsKKyAgICBzaXpl
b2YoVVRleHRGdW5jcyksCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgdVRleHRMYXRpbjFD
b250ZXh0QXdhcmVDbG9uZSwKKyAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0
aCwKKyAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2VzcywKKyAgICB1VGV4dExhdGluMUNv
bnRleHRBd2FyZUV4dHJhY3QsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxw
dHIsCisgICAgbnVsbHB0ciwKKyAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlLAorICAg
IG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyCit9OworCitzdGF0aWMgaW5saW5l
IFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29u
dGV4dChjb25zdCBVVGV4dCogdGV4dCkKK3sKKyAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMp
CisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0OworICAgIHJl
dHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSA/IFVUZXh0UHJvdmlkZXJD
b250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRl
eHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5
Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVM
ZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMg
PT0gdGV4dC0+cEV4dHJhKTsKKyAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICBBU1NFUlQobmF0
aXZlSW5kZXggPj0gdGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCk7CisgICAg
ICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4ICsgdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9m
KFVDaGFyKTsKKyAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBuYXRpdmVMZW5n
dGgpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChuYXRpdmVJbmRleCA+IHRleHQtPmIgJiYgbmF0
aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCA9IG5hdGl2ZUluZGV4OworICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZl
SW5kZXggLSB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIpOworICAgICAgICBpZiAodGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA8IHRleHQtPmIpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0ID0gdGV4dC0+YjsKKyAgICB9CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUg
Y2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBp
bnQzMl90IHJhbmdlLgorICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0
aCkgOiAwOworICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0
aDsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IGZvcndhcmQgPyAwIDogdGV4dC0+Y2h1bmtMZW5n
dGg7CisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5j
aHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIqPih0ZXh0LT5wKSArICh0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0IC0gdGV4dC0+YiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0
LT5jaHVua0xlbmd0aCkpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
U3dpdGNoVG9QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwg
aW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKCF0ZXh0
LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7CisgICAg
dGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cEV4
dHJhKTsKKyAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4
dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyB2b2lk
IHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQor
eworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VS
VChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+
Yik7CisgICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRl
eCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNT
RVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgg
OiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3Rh
cnQgPSAwOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQt
PmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0g
dGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxs
IGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVu
ayBsZW5ndGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
b2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExh
dGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90
IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAg
ICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0
ZXh0LT5wRXh0cmEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25z
dCBVQ2hhcio+KHRleHQtPnEpOworICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5Qcmlv
ckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisK
K3N0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZShVVGV4dCogZGVzdGlu
YXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1
cykKK3sKKyAgICByZXR1cm4gdVRleHRDbG9uZUltcGwoZGVzdGluYXRpb24sIHNvdXJjZSwgZGVl
cCwgc3RhdHVzKTsKK30KKworc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVO
YXRpdmVMZW5ndGgoVVRleHQqIHRleHQpCit7CisgICAgcmV0dXJuIHRleHQtPmEgKyB0ZXh0LT5i
OworfQorCitzdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQq
IHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0
ZXh0LT5jb250ZXh0KQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgaW50NjRfdCBuYXRpdmVM
ZW5ndGggPSB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCh0ZXh0KTsKKyAgICBV
Qm9vbCBpc0FjY2Vzc2libGU7CisgICAgaWYgKHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5n
ZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0FjY2Vzc2libGUp
KQorICAgICAgICByZXR1cm4gaXNBY2Nlc3NpYmxlOworICAgIG5hdGl2ZUluZGV4ID0gdVRleHRB
Y2Nlc3NQaW5JbmRleChuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoKTsKKyAgICBVVGV4dFByb3Zp
ZGVyQ29udGV4dCBjdXJyZW50Q29udGV4dCA9IHRleHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJy
ZW50Q29udGV4dCh0ZXh0KTsKKyAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBuZXdDb250ZXh0ID0g
dVRleHRQcm92aWRlckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIGZvcndhcmQpOworICAgIEFT
U0VSVChuZXdDb250ZXh0ICE9IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQpOworICAg
IGlmIChuZXdDb250ZXh0ID09IGN1cnJlbnRDb250ZXh0KSB7CisgICAgICAgIGlmIChjdXJyZW50
Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAg
ICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZl
SW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgfSBlbHNlIGlmIChuZXdDb250ZXh0
ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgdGV4dExh
dGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgs
IG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdD
b250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQpOworICAgICAgICB0
ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5k
ZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQor
CitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBp
bnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUqIGVycm9yQ29kZSkK
K3sKKyAgICAvLyBJbiB0aGUgcHJlc2VudCBjb250ZXh0LCB0aGlzIHRleHQgcHJvdmlkZXIgaXMg
dXNlZCBvbmx5IHdpdGggSUNVIGZ1bmN0aW9ucworICAgIC8vIHRoYXQgZG8gbm90IHBlcmZvcm0g
YW4gZXh0cmFjdCBvcGVyYXRpb24uCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgKmVy
cm9yQ29kZSA9IFVfVU5TVVBQT1JURURfRVJST1I7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp
YyB2b2lkIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UoVVRleHQqIHRleHQpCit7CisgICAg
dGV4dC0+Y29udGV4dCA9IG51bGxwdHI7Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xQ29udGV4dEF3
YXJlVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENo
YXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBp
bnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVf
RkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzdHJpbmcgfHwg
bGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKSkgeworICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9S
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1
cCgmdXRXaXRoQnVmZmVyLT50ZXh0LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0
dXMpOworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaW5pdGlhbGl6ZUNvbnRleHRBd2Fy
ZVVUZXh0UHJvdmlkZXIodGV4dCwgJnRleHRMYXRpbjFDb250ZXh0QXdhcmVGdW5jcywgc3RyaW5n
LCBsZW5ndGgsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICByZXR1cm4g
dGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE3YjM0ZDU2NjUzY2E0ZDdhOGNh
NDE0ZTE0NzkwM2UwY2E3MjgwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlckxh
dGluMV9oCisKKyNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
TENoYXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NvbnN0IGludCBVVGV4dFdpdGhCdWZmZXJJ
bmxpbmVDYXBhY2l0eSA9IDE2OworCitzdHJ1Y3QgVVRleHRXaXRoQnVmZmVyIHsKKyAgICBVVGV4
dCB0ZXh0OworICAgIFVDaGFyIGJ1ZmZlcltVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eV07
Cit9OworCitVVGV4dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1
dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVycm9y
Q29kZSogc3RhdHVzKTsKK1VUZXh0KiBvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
cihVVGV4dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0
TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2Vu
ZGlmIC8vIFVUZXh0UHJvdmlkZXJMYXRpbjFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFmYzJlYWI5YTQ1N2YxNzc0OWY3
MjNmNTIwN2YzODFkZjI5ZmFhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2Lmgi
CisKKyNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCitu
YW1lc3BhY2UgV1RGIHsKKworLy8gVVRGMTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKKworc3RhdGlj
IFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCos
IFVCb29sLCBVRXJyb3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3
YXJlTmF0aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRB
d2FyZUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0
VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIq
LCBpbnQzMl90LCBVRXJyb3JDb2RlKik7CitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3
YXJlQ2xvc2UoVVRleHQqKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRV
VEYxNkNvbnRleHRBd2FyZUZ1bmNzID0geworICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKKyAgICAw
LAorICAgIDAsCisgICAgMCwKKyAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCisgICAg
dVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dFVURjE2Q29udGV4
dEF3YXJlQWNjZXNzLAorICAgIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAorICAgIG51
bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgdVRl
eHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAg
ICBudWxscHRyCit9OworCitzdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRV
VEYxNkNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQorewor
ICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpOb0NvbnRleHQ7CisgICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0g
dGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJv
dmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNkNv
bnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2
ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NF
UlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZv
cndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0
ZXh0LT5iKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRl
eCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCA9IG5hdGl2ZUxlbmd0aDsKKyAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZl
TGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5n
dGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFu
Z2UuCisgICAgQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpKTsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Cisg
ICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGlu
dDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAg
IC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNl
dCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1
bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xl
bmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJp
bWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0
aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250
ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5r
Q29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnApOworICAgIHRleHRV
VEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0
QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgs
IGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0
LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZl
SW5kZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VO
VVNFRChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6
IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJk
LCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBu
YXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4
dC0+YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7
CisgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3Rh
cnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0
ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNT
RVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0
ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQt
PmNodW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dp
dGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0
X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1
bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnApOworICAgIHRleHQt
PmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAg
IHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRl
eCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2
Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNl
LCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgcmV0dXJuIHVUZXh0Q2xv
bmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0
ZXh0KQoreworICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVCb29s
IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29u
dGV4dEF3YXJlTmF0aXZlTGVuZ3RoKHRleHQpOworICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKKyAg
ICBpZiAodVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiBpc0Fj
Y2Vzc2libGU7CisgICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgpOworICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250
ZXh0ID0gdGV4dFVURjE2Q29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7CisgICAg
VVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJy
ZW50Q29udGV4dCkgeworICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3
YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwg
Zm9yd2FyZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKKyAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6
OlByaW1hcnlDb250ZXh0KQorICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1By
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNo
VG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7
CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2
Q29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50
MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2RlKQoreworICAgIC8vIEluIHRoZSBwcmVzZW50IGNv
bnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25z
CisgICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJP
UjsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZUNsb3NlKFVUZXh0KiB0ZXh0KQoreworICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOworfQor
CitVVGV4dCogb3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwg
Y29uc3QgVUNoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JD
b250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7Cisg
ICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFz
dHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKSkgeworICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VN
RU5UX0VSUk9SOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdGV4dCA9IHV0ZXh0X3Nl
dHVwKHRleHQsIDAsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgeworICAg
ICAgICBBU1NFUlQoIXRleHQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbml0
aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3
YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0
aCk7CisgICAgcmV0dXJuIHRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2MyYzJj
OGU2YzVmYWRhNzViNWQ1MWY5NmJiOGFjZTBhNzA0YWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKQEAgLTAsMCArMSwzNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVVRleHRQcm92aWRlclVURjE2X2gKKyNkZWZpbmUgVVRl
eHRQcm92aWRlclVURjE2X2gKKworI2luY2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK1VUZXh0KiBvcGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVU
ZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNv
bnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqKTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVVGV4dFByb3ZpZGVyVVRGMTZfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5t
bSBiL1NvdXJjZS9XVEYvd3RmL3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VN
YWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmVmNWRhYTY0Mjg4ODIxZTIwZjI2MjhjNjg1NWVlOGU4OGEzODky
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvbWFjL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5o
IgorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3Rh
dGljIGNvbnN0IGludCBtYXhMb2NhbGVTdHJpbmdMZW5ndGggPSAzMjsKKworc3RhdGljIGlubGlu
ZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UoKQorewor
ICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gbG9jYWxlID0gYWRvcHRDRihDRlByZWZl
cmVuY2VzQ29weVZhbHVlKENGU1RSKCJBcHBsZVRleHRCcmVha0xvY2FsZSIpLAorICAgICAgICBr
Q0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBr
Q0ZQcmVmZXJlbmNlc0FueUhvc3QpKTsKKyAgICBpZiAoIWxvY2FsZSB8fCBDRkdldFR5cGVJRChs
b2NhbGUuZ2V0KCkpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4obG9jYWxlLmdldCgpKTsK
K30KKworc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdG9wTGFuZ3VhZ2VQcmVmZXJlbmNl
KCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzQXJyYXkgPSBhZG9wdENG
KENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpKTsKKyAgICBpZiAoIWxhbmd1YWdlc0Fy
cmF5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIUNGQXJyYXlHZXRDb3VudChs
YW5ndWFnZXNBcnJheS5nZXQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFn
ZXNBcnJheS5nZXQoKSwgMCkpOworfQorCitzdGF0aWMgdm9pZCBnZXRMb2NhbGUoQ0ZTdHJpbmdS
ZWYgbG9jYWxlLCBjaGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhd
KQoreworICAgIC8vIEVtcHR5IHN0cmluZyBtZWFucyAicm9vdCBsb2NhbGUiLCBhbmQgdGhhdCBp
cyB3aGF0IHdlIHVzZSBpZiB3ZSBjYW4ndCBnZXQgYSBwcmVmZXJlbmNlLgorICAgIGxvY2FsZVN0
cmluZ0J1ZmZlclswXSA9IDA7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybjsKKyAg
ICBDRlN0cmluZ0dldENTdHJpbmcobG9jYWxlLCBsb2NhbGVTdHJpbmdCdWZmZXIsIG1heExvY2Fs
ZVN0cmluZ0xlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSk7Cit9CisKK3N0YXRpYyB2b2lk
IGdldFNlYXJjaExvY2FsZShjaGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdM
ZW5ndGhdKQoreworICAgIGdldExvY2FsZSh0b3BMYW5ndWFnZVByZWZlcmVuY2UoKS5nZXQoKSwg
bG9jYWxlU3RyaW5nQnVmZmVyKTsKK30KKworY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2Fs
ZUlEKCkKK3sKKyAgICBzdGF0aWMgY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3Ry
aW5nTGVuZ3RoXTsKKyAgICBzdGF0aWMgYm9vbCBnb3RTZWFyY2hMb2NhbGUgPSBmYWxzZTsKKyAg
ICBpZiAoIWdvdFNlYXJjaExvY2FsZSkgeworICAgICAgICBnZXRTZWFyY2hMb2NhbGUobG9jYWxl
U3RyaW5nQnVmZmVyKTsKKyAgICAgICAgZ290U2VhcmNoTG9jYWxlID0gdHJ1ZTsKKyAgICB9Cisg
ICAgcmV0dXJuIGxvY2FsZVN0cmluZ0J1ZmZlcjsKK30KKworc3RhdGljIHZvaWQgZ2V0VGV4dEJy
ZWFrTG9jYWxlKGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0p
Cit7CisgICAgLy8gSWYgdGhlcmUgaXMgbm8gdGV4dCBicmVhayBsb2NhbGUsIHVzZSB0aGUgdG9w
IGxhbmd1YWdlIHByZWZlcmVuY2UuCisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGUg
PSB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCk7CisgICAgaWYgKGxvY2FsZSkgeworICAgICAg
ICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjYW5vbmljYWxMb2NhbGUgPSBhZG9wdENGKENG
TG9jYWxlQ3JlYXRlQ2Fub25pY2FsTGFuZ3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBsb2NhbGUuZ2V0KCkpKSkKKyAgICAgICAgICAgIGxvY2FsZSA9IGNhbm9u
aWNhbExvY2FsZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbG9jYWxlID0gdG9wTGFuZ3VhZ2VQcmVm
ZXJlbmNlKCk7CisgICAgZ2V0TG9jYWxlKGxvY2FsZS5nZXQoKSwgbG9jYWxlU3RyaW5nQnVmZmVy
KTsKK30KKworY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKK3sKKyAgICBz
dGF0aWMgY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXTsKKyAg
ICBzdGF0aWMgYm9vbCBnb3RUZXh0QnJlYWtMb2NhbGUgPSBmYWxzZTsKKyAgICBpZiAoIWdvdFRl
eHRCcmVha0xvY2FsZSkgeworICAgICAgICBnZXRUZXh0QnJlYWtMb2NhbGUobG9jYWxlU3RyaW5n
QnVmZmVyKTsKKyAgICAgICAgZ290VGV4dEJyZWFrTG9jYWxlID0gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGxvY2FsZVN0cmluZ0J1ZmZlcjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNDE3ZTE3MDVlZjU0YjkzOTIxNGRhMTg0ODBkYjdhMzJjMzJjOTI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVVdpbi5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7Cisg
ICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9
CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgLy8gVXNp
bmcgZW5fVVNfUE9TSVggbm93IHNvIHdvcmQgc2VsZWN0aW9uIGluIGFkZHJlc3MgZmllbGQgd29y
a3MgYXMgZXhwZWN0ZWQgYXMgYmVmb3JlIChkb3VibGUtY2xpY2tpbmcKKyAgICAvLyBpbiBhIFVS
TCBzZWxlY3RzIGEgd29yZCBkZWxpbWl0ZWQgYnkgcGVyaW9kcyByYXRoZXIgdGhhbiBzZWxlY3Rp
bmcgdGhlIGVudGlyZSBVUkwpLgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaXMgbm90IGVudGlyZWx5
IGNvcnJlY3QgLSB3ZSBzaG91bGQgaG9ub3IgdGhlIHN5c3RlbSBsb2NhbGUgaW4gdGhlIG5vcm1h
bCBjYXNlLgorICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNjc4NjcwMz4gU2hvdWxkIHVz
ZSBzeXN0ZW0gbG9jYWxlIGZvciB0ZXh0IGJyZWFraW5nCisgICAgcmV0dXJuICJlbl9VU19QT1NJ
WCI7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTA0Mzc3ZmNlYmRkNTZlNjBlNjYy
ZGU1Mjc0MDYxNTY2NTQyODc2YS4uZTc4YjA0MmIxMDQwMWUxZjRlZTNhMmFiMWEwNTJjMjE4YzNh
MTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIzNzAsNyArMjM3MCw2IEBAIHNldChXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKICAgICBw
bGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRC
b3VuZGFyaWVzLmNwcAotICAgIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCiAg
ICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNJQ1UuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC0yMzgz
LDEwICsyMzgyLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3RleHQvVGV4
dEVuY29kaW5nUmVnaXN0cnkuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAog
Ci0gICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKLSAgICBwbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAotICAgIHBsYXRmb3JtL3RleHQvaWN1L1VU
ZXh0UHJvdmlkZXJVVEYxNi5jcHAKLQogICAgIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwCiAgICAg
cGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAogICAgIHBsdWdpbnMvRE9NUGx1Z2luLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzZmU2MDM3OGMyNmNmMDhlNDVmMzczZWQ1MzM4
N2RlZjc4NDU2Y2EzLi41MTQ1MDRlNmVjMjVhYTVlNDNiOTkzOThkNWUzNWNlZWVhNzY2YWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjEyLDggKzIxMiw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAg
cGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAKLSAgICBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0
QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNo
YW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5
cGhlbmF0aW9uTGliSHlwaGVuLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBjMjI0
MDViNzRlMTVlN2I3NWY3NGFjODBmODE1N2M3NzNhOWM5ZWMwLi42NDVhZGQxY2UzODg4OGIwNGQ0
YTJkODlhZGEwYTdjNmRlMTk5ODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgy
LDggKzE4Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0v
dGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKIAotICAgIHBsYXRmb3JtL3RleHQv
Z3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCi0KICAgICBwbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKIAogICAgIHBsYXRmb3JtL3VuaXgv
TG9nZ2luZ1VuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDM5ODk2Zjk4NDM1
MjYxMmE5ZWVkNDliMjQwMTE0YjRjMWQ4NDk1OTguLjlmNmY0OTZiNmNjNGVmNmU0Yjc0ZDg0YWMw
YWE5ZGVhNTVhMDIzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01NjYsNyArNTY2
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L21h
Yy9Mb2NhbGVNYWMubW0KICAgICBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQot
ICAgIHBsYXRmb3JtL3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0K
ICAgICBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCiAKICAgICByZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggY2NiMWE1NzFl
OWE2ZGU1NmFjZDA1NGE5MzM2NTM5ZDA4ZTYwZjNmZi4uOGQ3OTBmYTcwOTFmYjYxMmYxNTE4OTU2
OWM1N2Q5NmE5NWNjZDVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwOSw4ICsx
MDksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL3RleHQv
Y2YvSHlwaGVuYXRpb25DRi5jcHAKIAotICAgIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAK
ICAgICBwbGF0Zm9ybS93aW4vQml0bWFwSW5mby5jcHAKICAgICBwbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiYTU3Zjg0OTliMTZkYjBlMDY4ZmQ5ZDc1M2ViOTE1
MjJjOWViODQuLmMxMWJjNDdlNWNhZDYzMGEzNjU3Y2RlMWFkOWY3Yjc2YTBhNTVjNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE1MTgsMTEgKzE1MTgsMTEgQEAKIAkJMzdGNTdBQkExQTUwNzI2RjAwODc2Rjk4IC8qIEFjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjk4MUNBOUUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGwuY3BwICovOyB9OwogCQkzN0Y1N0FCQjFBNTA3MjczMDA4NzZGOTggLyogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI5ODFDQTlGMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3cuY3BwICovOyB9OwogCQkzN0Y1N0FCQzFBNTA3Mjc3MDA4NzZGOTggLyogQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBMDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluay5jcHAgKi87IH07CisJCTM3RjU3QUJDMUE1MDcyODQwMDg3NkY5OCAvKiBB
Y2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJp
bGl0eU1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwogCQkzN0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTgg
LyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjk4MUNBQTExMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlM
aXN0LmNwcCAqLzsgfTsKIAkJMzdGNTdBQkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxp
dHlMaXN0Qm94LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5ODFDQUEyMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAg
Ki87IH07CiAJCTM3RjU3QUJGMUE1MDcyODEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOTgxQ0FBMzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24u
Y3BwICovOyB9OwogCQkzN0Y1N0FDMDFBNTA3Mjg0MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU1l
ZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzLmNwcCAqLzsgfTsKLQkJMzdGNTdBQkMxQTUwNzI4NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudC5jcHAgKi87IH07CiAJCTM3RjU3QUMxMUE1MDcyODcwMDg3NkY5OCAvKiBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyOTg1NzA5MjE1Q0M1MzJEMDA2MzU1Q0QgLyogQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwICovOyB9OwogCQkzN0Y1N0FDMjFBNTA3MjhCMDA4NzZGOTggLyogQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOTgxQ0FBNTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Ki87IH07CiAJCTM3RjU3QUMzMUE1MDcyOEYwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0lu
ZGljYXRvci5jcHAgKi87IH07CkBAIC0xNjkzLDEwICsxNjkzLDggQEAKIAkJNDM5MDQ2REQxMkRB
MjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJl
bmRlck1hdGhNTE1hdGguY3BwICovOyB9OwogCQk0MzkwNDZERTEyREEyNUU4MDBBRjgwQTIgLyog
UmVuZGVyTWF0aE1MTWF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDM5MDQ2Q0ExMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguaCAq
LzsgfTsKIAkJNDM5MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzkwNDZDQjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCAq
LzsgfTsKLQkJNDM5MTc2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTE3NkNCMTJEQTI1
RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgKi87IH07CiAJCTQzOTA0NkRGMTJEQTI1RTgw
MEFGODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwICovOyB9OwogCQk0MzkwNDZFMDEyREEyNUUxN0JBRjgwQTIg
LyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmggKi87IH07Ci0JCTQzOTE3NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBN
YXRoTUxTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi87IH07CiAJCTQz
OTA0NkUwMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0MxMkRBMjVFODAw
QUY4MEEyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkUxMTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNEMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5k
ZXJNYXRoTUxSb290LmNwcCAqLzsgfTsKIAkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJl
bmRlck1hdGhNTFJvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzOTA0NkNFMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmggKi87
IH07CkBAIC0xNzEwLDYgKzE3MDgsOCBAQAogCQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyog
TWF0aE9wZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzkwNDZENjEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi87IH07CiAJ
CTQzOTA0NkVCMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4
MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3BwICovOyB9OwogCQk0MzkwNDZFQzEyREEy
NUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5k
ZXJNYXRoTUxUb2tlbi5oICovOyB9OworCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0
aE1MU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM5MTc2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLzsgfTsKKwkJ
NDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIg
LyogTWF0aE1MU3R5bGUuaCAqLzsgfTsKIAkJNDM5RDMzNDMxM0E2OTExQzAwQzIwRjRGIC8qIFNW
R0FuaW1hdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM5RDMzNDAxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oICovOyB9
OwogCQk0MzlEMzM0NDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQx
MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovOyB9OwogCQk0
MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzlEMzM0MjEzQTY5MTFDMDBD
MjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi87IH07CkBAIC0yODE0LDEyICsyODE0LDYg
QEAKIAkJN0M3M0ZCMTExOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjBG
MTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CiAJCTdD
NzNGQjEyMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTAxOTFFRjZGNDAw
N0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmggKi87IH07CiAJCTdDNzNGQjE5MTkxRUY4
MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTcxOTFF
RjgwODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAg
Ki87IH07Ci0JCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4x
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRE
NDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLzsgfTsKLQkJ
N0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMyMTg4MjNBOTMw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi87IH07Ci0JCTdDNzRENDM3MTg4MjNC
MTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyLmNwcCAqLzsgfTsKLQkJN0M3NEQ0MzgxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
NzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi87IH07Ci0JCTdDNzRE
NDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3NEQ0MzkxODgyNDAwNDAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi87IH07Ci0JCTdDNzRENDNDMTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyVVRGMTYuaCAqLzsgfTsKIAkJN0M3OTQxRTQxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFE
ZXRlY3RvcnNDb3JlU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0Nv
cmVTb2Z0TGluay5tbSAqLzsgfTsKIAkJN0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFE
ZXRlY3RvcnNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29y
ZVNvZnRMaW5rLmggKi87IH07CiAJCTdDODNERTg2MUQwNENDNUQwMEZFQkNGMyAvKiBTcHJpbmdT
b2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLzsgfTsKQEAgLTQyNzUs
NyArNDI2OSw2IEBACiAJCUE1QTJBRjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEy
QUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEy
QUYwQzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAv
KiBQYWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlBNUE3QUE0MzEzMkYwRUNDMDBEM0EzQzIgLyog
V2ViQXV0b2NhcGl0YWxpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QTdBQTQyMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1QUJC
Nzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMw
MEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBRkIzNEYx
MTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJh
bmdlLmNwcCAqLzsgfTsKIAkJQTVBRkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUx
MTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJL
aXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBX
ZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsKQEAgLTUxMTAs
NyArNTEwMyw2IEBACiAJCUIyQUZGQzgwMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNv
Y29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJB
RkZDNzgwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYXNjYWRlQ29jb2EubW0gKi87IH07CiAJCUIy
QUZGQzgzMEQwMEE1QzEwMDMwMDc0RCAvKiBHbHlwaFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDN0IwRDAwQTVDMTAwMzAwNzRE
IC8qIEdseXBoUGFnZU1hYy5jcHAgKi87IH07CiAJCUIyQUZGQzk3MEQwMEE1REYwMDMwMDc0RCAv
KiBUZXh0Qm91bmRhcmllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyQUZGQzhDMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSAq
LzsgfTsKLQkJQjJBRkZDOTgwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMkFGRkM4RDBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVU1hYy5tbSAqLzsgfTsKIAkJQjJBRkZDOTkwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2Rl
Y01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkFGRkM4RTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLzsgfTsKIAkJQjJB
RkZDOUEwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDOEYwRDAwQTVERjAwMzAwNzREIC8q
IFRleHRDb2RlY01hYy5oICovOyB9OwogCQlCMkIxRjcxNjBEMDBDQUE4MDA0QUVBNjQgLyogUG9p
bnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyQjFGNzE0MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0
UnVsZXMuY3BwICovOyB9OwpAQCAtNTEyMiw4ICs1MTE0LDYgQEAKIAkJQjJDM0RBMkUwRDAwNkMx
RDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVu
dGVkU3RyaW5nLmNwcCAqLzsgfTsKIAkJQjJDM0RBMkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21l
bnRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjJDM0Q5RkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTM0MEQwMDZD
MUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBMDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3Vu
ZGFyaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJQjJDM0RBMzYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwNjBEMDA2QzFE
MDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCMkMzREEzODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBMDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCMkMzREEzOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTA5MEQw
MDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMuY3BwICovOyB9OwogCQlCMkMzREEzQTBEMDA2QzFE
MDBFRjZGMjYgLyogVGV4dENvZGVjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkMzREEwQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBM0Iw
RDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0lDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwQjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dENvZGVjSUNVLmNwcCAqLzsgfTsKQEAgLTU4MDcsNyArNTc5Nyw2IEBACiAJCUJDRDBGQzRGMERC
RDcyMEIwMEIyRjYzMCAvKiBET01SR0JDb2xvckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwRkM0RTBEQkQ3MjBCMDBCMkY2MzAgLyog
RE9NUkdCQ29sb3JJbnRlcm5hbC5oICovOyB9OwogCQlCQ0Q0MUFCQjBDMDYwREU4MDBDMEU0NDYg
LyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDQxQUJBMEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4
ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBD
YWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oICovOyB9OwotCQlCQ0Q4QTVGMDE1RjU2RjJDMDA5
OEQwNzEgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEOEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVh
a0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJQkNEOUMyNjIwQzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9N
V2luZG93Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAg
Ki87IH07CiAJCUJDRDlDMjYzMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5
QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwICovOyB9Owog
CQlCQ0Q5QzI2NDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjYwMEMxN0FBNjcwMDVD
OTBBMiAvKiBKU05vZGVDdXN0b20uY3BwICovOyB9OwpAQCAtODY5MSw2ICs4NjgwLDcgQEAKIAkJ
Mjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAv
KiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAwRDEyRjJB
IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5
RTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY5OSw3ICs4Njg5LDYg
QEAKIAkJMjk4MUNBQTIxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2li
aWxpdHlMaXN0Qm94T3B0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTQx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRo
TUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTUxMzE4
MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5l
RW5kaW5nID0gMDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LmNwcDsgfTsKIAkJMjk4MUNBQTYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQUE3MTMxODIyRUMwMEQx
MkYyQSAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTAzNiw4ICs5MDI1LDggQEAKIAkJMzFGQjFBNkIxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNl
TW90aW9uRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8q
IEpTRXhjZXB0aW9uQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4
Y2VwdGlvbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMxRkY2N0RFMTk3
QjU3MzkzQzQ2QUE3IC8qIFJlbmRlck1hdGhNTFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkE3RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MUGFkZGVkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkFBNyAvKiBS
ZW5kZXJNYXRoTUxTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJNYXRoTUxTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBOb3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0
RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzExLDEwICs5MzAwLDggQEAKIAkJNDM5MDQ2QzkxMkRB
MjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MTWF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQzOTA0NkNBMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTE1hdGguaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0IxMkRBMjVFMTdCQUY4MEEyIC8q
IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk0MzkxNzZDQjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MU3R5bGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyog
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MzkwNDZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzkxNzZDQzEyREEyNUUxN0JB
RjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWF0aE1MU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0MxMkRB
MjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTE9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQzOTA0NkNEMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTFJv
b3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDRTEyREEyNUU4MDBB
RjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNYXRoTUxSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
MzI4LDYgKzkzMTUsOCBAQAogCQk0MzkwNDZENjEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhPcGVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyog
UmVuZGVyTWF0aE1MVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyTWF0aE1MVG9rZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MzkwNDZEODEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MVG9rZW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDM5MTc2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFN0eWxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhN
TFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQwMTNBNjkxMUMw
MEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0ZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQz
OUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyog
U1ZHQW5pbWF0b3JGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NTcs
MTIgKzEwNTQ2LDYgQEAKIAkJN0M3M0ZCMEYxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3M0ZC
MTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDNzNGQjE3MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNz
YWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVU
ZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVVRleHRQcm92aWRlckxhdGluMS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0
UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDM2MTg4MjNC
MTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVUZXh0UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3
NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRl
eHRQcm92aWRlclVURjE2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0
UHJvdmlkZXJVVEYxNi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc5NDFFMjFD
NTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4
RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcHJpbmdTb2x2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMDc1LDcgKzEyMDU4LDYgQEAKIAkJQTVBMkFGMDkxODI5
NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTdBQTQyMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRv
Y2FwaXRhbGl6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvY2Fw
aXRhbGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNUFCQjc4NjEzQjkwNEJD
MDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBT
dGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAv
KiBLZXlFdmVudENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleUV2
ZW50Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTA4LDcgKzEzMDkw
LDYgQEAKIAkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGluZ3MudHh0ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSAibWFjLWVuY29kaW5ncy50eHQiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMkFGRkM4NzBEMDBBNURGMDAzMDA3NEQgLyogbWFrZS1jaGFyc2V0
LXRhYmxlLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAibWFrZS1jaGFy
c2V0LXRhYmxlLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBRkZDOEMwRDAw
QTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFRleHRCb3VuZGFyaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCMkFGRkM4RDBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkFGRkM4RTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWNNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4RjBEMDBBNURGMDAzMDA3NEQgLyog
VGV4dENvZGVjTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29k
ZWNNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJCMUY3MTQwRDAwQ0FBODAw
NEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTIwLDggKzEzMTAxLDYgQEAKIAkJQjJDM0Q5RkUwRDAwNkMx
RDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2VnbWVudGVkU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjJDM0Q5RkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VnbWVudGVkU3RyaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0
Qm91bmRhcmllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJvdW5k
YXJpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJDM0RBMDYwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMkMzREEwODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwOTBEMDA2
QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0Q29kZWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MkMzREEwQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjJDM0RBMEIwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0lDVS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENvZGVjSUNVLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODMxLDcgKzEzODEwLDYgQEAKIAkJQkNEMEZDNEUwREJE
NzIwQjAwQjJGNjMwIC8qIERPTVJHQkNvbG9ySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NUkdCQ29sb3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0Q0MUFCQTBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hU
TUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU2NyaXB0U291cmNlUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNEOEE1RUYxNUY1NkYyQzAw
OThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd0N1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDlDMjVGMEMxN0FBNjcwMDVD
OTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0Q5QzI2MDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg0MjUsMTkgKzE4NDAzLDYgQEAKIAkJ
CXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTdDNzRE
NDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBpY3UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJ
CWNoaWxkcmVuID0gKAotCQkJCTdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyLmNwcCAqLywKLQkJCQk3Qzc0RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRl
ci5oICovLAotCQkJCTdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0
aW4xLmNwcCAqLywKLQkJCQk3Qzc0RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRl
ckxhdGluMS5oICovLAotCQkJCTdDNzRENDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwICovLAotCQkJCTdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyVVRGMTYuaCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gaWN1OwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKIAkJN0U0REUxMEIxOThCMTA4MTAwNTFDQjAyIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIyMzM1LDcgKzIy
MzAwLDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQjJCMjY0
NTkwRDAwQTc3RTAwMEFDQzFEIC8qIGNmICovLAotCQkJCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1
NyAvKiBpY3UgKi8sCiAJCQkJQTUxNkU4QjIxMzZFMDRDMDAwNzZDM0MwIC8qIGlvcyAqLywKIAkJ
CQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZGMjYgLyogbWFjICovLAogCQkJCUIyQzNEOUYyMEQwMDZD
MUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5jcHAgKi8sCkBAIC0yMjM0Nyw3ICsyMjMxMSw2IEBA
CiAJCQkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggKi8sCiAJ
CQkJQ0VDQ0ZDM0ExNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICov
LAogCQkJCTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAotCQkJ
CUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAq
LywKIAkJCQk4OUI1RUE5RjExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJ
CQkJODlCNUVBQTAxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuaCAqLywKIAkJCQk3NjMz
QTcyNDEzRDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggKi8sCkBAIC0y
MjM2Myw5ICsyMjMyNiw2IEBACiAJCQkJOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZp
eFRyZWUuaCAqLywKIAkJCQkzNzJDMDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJp
ZXMuY3BwICovLAogCQkJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmll
cy5oICovLAotCQkJCUJDRDhBNUVGMTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgKi8sCi0JCQkJQjJDM0RBMDYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJh
dG9yLmggKi8sCi0JCQkJQjJDM0RBMDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1UuaCAqLywKIAkJCQlBNzE1MUJENzEyRjE1NThGMDA1QTBGNjQgLyogVGV4
dENoZWNrZXJDbGllbnQuaCAqLywKIAkJCQlBNzdEMDAxMTEzM0IwQUVCMDBENjY1OEMgLyogVGV4
dENoZWNraW5nLmggKi8sCiAJCQkJQjJDM0RBMDkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2Rl
Yy5jcHAgKi8sCkBAIC0yMjQwOSw3ICsyMjM2OSw2IEBACiAJCQkJQjJBRkZDODYwRDAwQTVERjAw
MzAwNzREIC8qIG1hYy1lbmNvZGluZ3MudHh0ICovLAogCQkJCUIyQUZGQzg3MEQwMEE1REYwMDMw
MDc0RCAvKiBtYWtlLWNoYXJzZXQtdGFibGUucGwgKi8sCiAJCQkJQjJBRkZDOEMwRDAwQTVERjAw
MzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tICovLAotCQkJCUIyQUZGQzhEMEQwMEE1REYwMDMw
MDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovLAogCQkJCUIyQUZG
QzhFMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNNYWMuY3BwICovLAogCQkJCUIyQUZGQzhG
MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNNYWMuaCAqLywKIAkJCSk7CkBAIC0yNzQwMCw3
ICsyNzM1OSw2IEBACiAJCQkJQkNGRjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNv
dXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExp
bmVhckdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTVBQkI3ODcxM0I5
MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4OUI1RUFBMjExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkZFRkFCMkExODM4MERBMDAwNTE0NTM0IC8qIExpbmVMYXlvdXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODYyMiw4ICsyODU4MCw2IEBACiAJCQkJQ0U3QjJE
QjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1NERDRTYxODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEzNDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5k
YXJpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUIyQzNEQTM2MEQwMDZDMUQwMEVGNkYyNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjJDM0RBMzgwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3MTUxQkQ4MTJGMTU1OEYwMDVBMEY2NCAvKiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc3RDAwMTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEQkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVj
a2luZ0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODc2Niw5ICsyODcyMiw2IEBACiAJCQkJ
QkM4QkYxNTExMDU4MTNCRjAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzhCRjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERjMxN0MxMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBp
bmdHZXN0dXJlSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Qzc0RDQzODE4ODIzQjE5
MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M3NEQ0MzQx
ODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFM0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNUExNTQyODEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlv
bk1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzIxODMsOCArMzIxMzYsNiBAQAogCQkJCTBG
NTREQ0U1MTg4MTA1MUQwMDNFRURCQiAvKiBUZXh0QXV0b1NpemluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzNzJDMDBDNDEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDOTcwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFy
aWVzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRl
eHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyQUZGQzk4MEQwMEE1REYw
MDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTdEQkY4REQxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEzOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENv
ZGVjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTNCMEQwMDZDMUQwMEVGNkYyNiAvKiBU
ZXh0Q29kZWNJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjMwMyw5ICszMjI1NCw2IEBACiAJ
CQkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVz
ZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERjMx
N0IxMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTdDNzRENDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4
dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNzRENDNCMTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZB
RkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTJFM0JCRjA3MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY1QTE1NDI3MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBkNTMzYzM3
MGNlNjc1ZmZhNTg2NGM2NDY2YTg0MTQ3M2JmNDFlMTY3Li5iMmQ3ZGFlNzI5NWQwYTI0ODA4ZDAw
ZGQzNGJiNDMzNTAyYjkzMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBA
IC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgotI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4
IGI2OTUyZTJiODZmMTljZWM2NmRjYmFmY2U5NjYyMWI2ZDUxMTk5YjkuLmYxODY1NDk2N2RkZTU3
NzU2ZTVkMzU5Nzg3M2Q1MmI5MmFjNDc3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBjYjc0YWY5NjMwZGI0ZTI1ODg1MDZl
NzU3MjZlZDNhMDBmZTExY2Y2Li4wN2FhYjYxNmNiNjdmOTZmODdlZmYxYzQ2N2ZkYmRmOTUzMDYx
NDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC01Myw3ICs1
Myw3IEBACiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlNpbXBsZUxp
bmVMYXlvdXRSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCi0jaW5jbHVk
ZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oPgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUg
IlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtNjMsOCAr
NjMsOCBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiAh
VUNPTkZJR19OT19DT0xMQVRJT04KLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91c2VhcmNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXVEY6OlVuaWNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5k
ZXggZWQ2YTY4YTFhYTY2NDYwMGE5NjNjNjkyZTJjYjg4YzAzODUzZTRiZS4uZTBkYzQwNTVlYWVk
ZjhiMzg4YjM0ZWIyYmU4MjZiMWQ0NTJmNmQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRp
b24uaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKLSNp
bmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJs
ZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAwMjNhYzMzOTBmMmJkYTJiNzUzZjdhYmI4MzA2
OTM5YTRkMzZmMDUyLi4zNGI0Y2NjYWVkN2I5ZjM1OGE5NzM2ODllM2IwNzZhYjU3YWU1N2UwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTYwLDkgKzYwLDkg
QEAKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiU2VhcmNoSW5wdXRU
eXBlLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0
ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggZjkyMTA4YWNhNmYxZDhhM2Q5Y2Vk
YWNkYjBiODA4MmRkZjM4MmM4ZC4uY2YyYThhODg3MDYxOGQwMGUzZjU2ZWUxMmEyYmI3NmNmZjRj
NTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBA
IC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCmluZGV4IDNhYWY0MTQ1ZWQxOGNkZDA3YzViNDk4N2ZlNzc3OTBjNDAzMjYw
MTkuLjg5MWI2YmJmYTljYTYzYmM1NWQxMzBjZmJiZjA5NTEyOTg4YzA4NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25lSW5w
dXRUeXBlLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRJbnB1dFR5cGUuaCIKICNp
bmNsdWRlICJUaW1lSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVVJMSW5wdXRUeXBlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggYWQxZDRlMzQ4MDA2
OWY3YWEwZDE3NDFkMTFiMzhkMDc0ODQ0YzI0ZC4uMjY2ODgxMzkxOGRmNmUxZGU3ZDU5Mzg3MzY4
YTEyOGMzYjE5MmQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcApAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIK
ICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCmluZGV4IGI1NGU5YjJlN2Q5ZDEyOGIxY2M5NTMz
NjE0ZDhmMDRhNzc1Y2U2ODguLmY2ZjAyNzZkMThkODY4MDQwZGJmYjYyNTg4MmI3MDhjMzM2NThl
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5h
bWVzLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ljdS91bmljb2RlL3VicmsuaCBiL1NvdXJjZS9XZWJDb3JlL2lj
dS91bmljb2RlL3VicmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljMGVmNjI3
YjY3Mjc5Zjg2ZTQ2MDQ0YmYwZjI1NzEwMmUwYzZjZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91YnJrLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1NDEgKzAsMCBAQAotLyoKLSoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgotKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxMywgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNo
aW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgotKiBBbGwgUmlnaHRzIFJlc2VydmVkLgotKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCi0qLwotCi0jaWZuZGVmIFVCUktfSAotI2RlZmluZSBVQlJLX0gK
LQotI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCi0jaW5jbHVkZSAidW5pY29kZS91bG9jLmgi
Ci0jaW5jbHVkZSAidW5pY29kZS91dGV4dC5oIgotI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2lu
dGVyLmgiCi0KLS8qKgotICogQSB0ZXh0LWJyZWFrIGl0ZXJhdG9yLgotICogIEZvciB1c2FnZSBp
biBDIHByb2dyYW1zLgotICovCi0jaWZuZGVmIFVCUktfVFlQRURFRl9VQlJFQUtfSVRFUkFUT1IK
LSMgICBkZWZpbmUgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRPUgotICAgIC8qKgotICAgICAq
ICBPcGFxdWUgdHlwZSByZXByZXNlbnRpbmcgYW4gSUNVIEJyZWFrIGl0ZXJhdG9yIG9iamVjdC4K
LSAgICAgKiAgQHN0YWJsZSBJQ1UgMi4wCi0gICAgICovCi0gICAgdHlwZWRlZiBzdHJ1Y3QgVUJy
ZWFrSXRlcmF0b3IgVUJyZWFrSXRlcmF0b3I7Ci0jZW5kaWYKLQotI2lmICFVQ09ORklHX05PX0JS
RUFLX0lURVJBVElPTgotCi0jaW5jbHVkZSAidW5pY29kZS9wYXJzZWVyci5oIgotCi0vKioKLSAq
IFxmaWxlCi0gKiBcYnJpZWYgQyBBUEk6IEJyZWFrSXRlcmF0b3IKLSAqCi0gKiA8aDI+IEJyZWFr
SXRlcmF0b3IgQyBBUEkgPC9oMj4KLSAqCi0gKiBUaGUgQnJlYWtJdGVyYXRvciBDIEFQSSBkZWZp
bmVzICBtZXRob2RzIGZvciBmaW5kaW5nIHRoZSBsb2NhdGlvbgotICogb2YgYm91bmRhcmllcyBp
biB0ZXh0LiBQb2ludGVyIHRvIGEgVUJyZWFrSXRlcmF0b3IgbWFpbnRhaW4gYQotICogY3VycmVu
dCBwb3NpdGlvbiBhbmQgc2NhbiBvdmVyIHRleHQgcmV0dXJuaW5nIHRoZSBpbmRleCBvZiBjaGFy
YWN0ZXJzCi0gKiB3aGVyZSBib3VuZGFyaWVzIG9jY3VyLgotICogPHA+Ci0gKiBMaW5lIGJvdW5k
YXJ5IGFuYWx5c2lzIGRldGVybWluZXMgd2hlcmUgYSB0ZXh0IHN0cmluZyBjYW4gYmUgYnJva2Vu
Ci0gKiB3aGVuIGxpbmUtd3JhcHBpbmcuIFRoZSBtZWNoYW5pc20gY29ycmVjdGx5IGhhbmRsZXMg
cHVuY3R1YXRpb24gYW5kCi0gKiBoeXBoZW5hdGVkIHdvcmRzLgotICogPHA+Ci0gKiBTZW50ZW5j
ZSBib3VuZGFyeSBhbmFseXNpcyBhbGxvd3Mgc2VsZWN0aW9uIHdpdGggY29ycmVjdAotICogaW50
ZXJwcmV0YXRpb24gb2YgcGVyaW9kcyB3aXRoaW4gbnVtYmVycyBhbmQgYWJicmV2aWF0aW9ucywg
YW5kCi0gKiB0cmFpbGluZyBwdW5jdHVhdGlvbiBtYXJrcyBzdWNoIGFzIHF1b3RhdGlvbiBtYXJr
cyBhbmQgcGFyZW50aGVzZXMuCi0gKiA8cD4KLSAqIFdvcmQgYm91bmRhcnkgYW5hbHlzaXMgaXMg
dXNlZCBieSBzZWFyY2ggYW5kIHJlcGxhY2UgZnVuY3Rpb25zLCBhcwotICogd2VsbCBhcyB3aXRo
aW4gdGV4dCBlZGl0aW5nIGFwcGxpY2F0aW9ucyB0aGF0IGFsbG93IHRoZSB1c2VyIHRvCi0gKiBz
ZWxlY3Qgd29yZHMgd2l0aCBhIGRvdWJsZSBjbGljay4gV29yZCBzZWxlY3Rpb24gcHJvdmlkZXMg
Y29ycmVjdAotICogaW50ZXJwcmV0YXRpb24gb2YgcHVuY3R1YXRpb24gbWFya3Mgd2l0aGluIGFu
ZCBmb2xsb3dpbmcKLSAqIHdvcmRzLiBDaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIGEg
d29yZCwgc3VjaCBhcyBzeW1ib2xzIG9yCi0gKiBwdW5jdHVhdGlvbiBtYXJrcywgaGF2ZSB3b3Jk
LWJyZWFrcyBvbiBib3RoIHNpZGVzLgotICogPHA+Ci0gKiBDaGFyYWN0ZXIgYm91bmRhcnkgYW5h
bHlzaXMgaWRlbnRpZmllcyB0aGUgYm91bmRhcmllcyBvZgotICogIkV4dGVuZGVkIEdyYXBoZW1l
IENsdXN0ZXJzIiwgd2hpY2ggYXJlIGdyb3VwaW5ncyBvZiBjb2RlcG9pbnRzCi0gKiB0aGF0IHNo
b3VsZCBiZSB0cmVhdGVkIGFzIGNoYXJhY3Rlci1saWtlIHVuaXRzIGZvciBtYW55IHRleHQgb3Bl
cmF0aW9ucy4KLSAqIFBsZWFzZSBzZWUgVW5pY29kZSBTdGFuZGFyZCBBbm5leCAjMjksIFVuaWNv
ZGUgVGV4dCBTZWdtZW50YXRpb24sCi0gKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMv
dHIyOS8gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gCi0gKiBvbiBncmFwaGVtZSBjbHVzdGVy
cyBhbmQgZ3VpZGVsaW5lcyBvbiB0aGVpciB1c2UuCi0gKiA8cD4KLSAqIFRpdGxlIGJvdW5kYXJ5
IGFuYWx5c2lzIGxvY2F0ZXMgYWxsIHBvc2l0aW9ucywKLSAqIHR5cGljYWxseSBzdGFydHMgb2Yg
d29yZHMsIHRoYXQgc2hvdWxkIGJlIHNldCB0byBUaXRsZSBDYXNlCi0gKiB3aGVuIHRpdGxlIGNh
c2luZyB0aGUgdGV4dC4KLSAqIDxwPgotICogVGhlIHRleHQgYm91bmRhcnkgcG9zaXRpb25zIGFy
ZSBmb3VuZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzCi0gKiBkZXNjcmliZWQgaW4gVW5pY29kZSBT
dGFuZGFyZCBBbm5leCAjMjksIFRleHQgQm91bmRhcmllcywgYW5kCi0gKiBVbmljb2RlIFN0YW5k
YXJkIEFubmV4ICMxNCwgTGluZSBCcmVha2luZyBQcm9wZXJ0aWVzLiAgVGhlc2UKLSAqIGFyZSBh
dmFpbGFibGUgYXQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMTQvIGFuZAotICog
aHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMjkvLgotICogPHA+Ci0gKiBJbiBhZGRp
dGlvbiB0byB0aGUgcGxhaW4gQyBBUEkgZGVmaW5lZCBpbiB0aGlzIGhlYWRlciBmaWxlLCBhbgot
ICogb2JqZWN0IG9yaWVudGVkIEMrKyBBUEkgd2l0aCBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkg
aXMgZGVmaW5lZCBpbiB0aGUKLSAqIGZpbGUgYnJraXRlci5oLgotICogPHA+Ci0gKiBDb2RlIHNu
aXBwZXRzIGlsbHVzdHJhdGluZyB0aGUgdXNlIG9mIHRoZSBCcmVhayBJdGVyYXRvciBBUElzCi0g
KiBhcmUgYXZhaWxhYmxlIGluIHRoZSBJQ1UgVXNlciBHdWlkZSwKLSAqIGh0dHA6Ly9pY3UtcHJv
amVjdC5vcmcvdXNlcmd1aWRlL2JvdW5kYXJ5QW5hbHlzaXMuaHRtbAotICogYW5kIGluIHRoZSBz
YW1wbGUgcHJvZ3JhbSBpY3Uvc291cmNlL3NhbXBsZXMvYnJlYWsvYnJlYWsuY3BwCi0gKi8KLQot
LyoqIFRoZSBwb3NzaWJsZSB0eXBlcyBvZiB0ZXh0IGJvdW5kYXJpZXMuICBAc3RhYmxlIElDVSAy
LjAgKi8KLXR5cGVkZWYgZW51bSBVQnJlYWtJdGVyYXRvclR5cGUgewotICAvKiogQ2hhcmFjdGVy
IGJyZWFrcyAgQHN0YWJsZSBJQ1UgMi4wICovCi0gIFVCUktfQ0hBUkFDVEVSID0gMCwKLSAgLyoq
IFdvcmQgYnJlYWtzIEBzdGFibGUgSUNVIDIuMCAqLwotICBVQlJLX1dPUkQgPSAxLAotICAvKiog
TGluZSBicmVha3MgQHN0YWJsZSBJQ1UgMi4wICovCi0gIFVCUktfTElORSA9IDIsCi0gIC8qKiBT
ZW50ZW5jZSBicmVha3MgQHN0YWJsZSBJQ1UgMi4wICovCi0gIFVCUktfU0VOVEVOQ0UgPSAzLAot
Ci0jaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQotICAvKioKLSAgICogVGl0bGUgQ2FzZSBi
cmVha3MKLSAgICogVGhlIGl0ZXJhdG9yIGNyZWF0ZWQgdXNpbmcgdGhpcyB0eXBlIGxvY2F0ZXMg
dGl0bGUgYm91bmRhcmllcyBhcyBkZXNjcmliZWQgZm9yCi0gICAqIFVuaWNvZGUgMy4yIG9ubHku
IEZvciBVbmljb2RlIDQuMCBhbmQgYWJvdmUgdGl0bGUgYm91bmRhcnkgaXRlcmF0aW9uLAotICAg
KiBwbGVhc2UgdXNlIFdvcmQgQm91bmRhcnkgaXRlcmF0b3IuCi0gICAqCi0gICAqIEBkZXByZWNh
dGVkIElDVSAyLjggVXNlIHRoZSB3b3JkIGJyZWFrIGl0ZXJhdG9yIGZvciB0aXRsZWNhc2luZyBm
b3IgVW5pY29kZSA0IGFuZCBsYXRlci4KLSAgICovCi0gIFVCUktfVElUTEUgPSA0LAotI2VuZGlm
IC8qIFVfSElERV9ERVBSRUNBVEVEX0FQSSAqLwotICBVQlJLX0NPVU5UID0gNQotfSBVQnJlYWtJ
dGVyYXRvclR5cGU7Ci0KLS8qKiBWYWx1ZSBpbmRpY2F0aW5nIGFsbCB0ZXh0IGJvdW5kYXJpZXMg
aGF2ZSBiZWVuIHJldHVybmVkLgotICogIEBzdGFibGUgSUNVIDIuMAotICovCi0jZGVmaW5lIFVC
UktfRE9ORSAoKGludDMyX3QpIC0xKQotCi0KLS8qKgotICogIEVudW0gY29uc3RhbnRzIGZvciB0
aGUgd29yZCBicmVhayB0YWdzIHJldHVybmVkIGJ5Ci0gKiAgZ2V0UnVsZVN0YXR1cygpLiAgQSBy
YW5nZSBvZiB2YWx1ZXMgaXMgZGVmaW5lZCBmb3IgZWFjaCBjYXRlZ29yeSBvZgotICogIHdvcmQs
IHRvIGFsbG93IGZvciBmdXJ0aGVyIHN1YmRpdmlzaW9ucyBvZiBhIGNhdGVnb3J5IGluIGZ1dHVy
ZSByZWxlYXNlcy4KLSAqICBBcHBsaWNhdGlvbnMgc2hvdWxkIGNoZWNrIGZvciB0YWcgdmFsdWVz
IGZhbGxpbmcgd2l0aGluIHRoZSByYW5nZSwgcmF0aGVyCi0gKiAgdGhhbiBmb3Igc2luZ2xlIGlu
ZGl2aWR1YWwgdmFsdWVzLgotICogIEBzdGFibGUgSUNVIDIuMgotKi8KLXR5cGVkZWYgZW51bSBV
V29yZEJyZWFrIHsKLSAgICAvKiogVGFnIHZhbHVlIGZvciAid29yZHMiIHRoYXQgZG8gbm90IGZp
dCBpbnRvIGFueSBvZiBvdGhlciBjYXRlZ29yaWVzLgotICAgICAqICBJbmNsdWRlcyBzcGFjZXMg
YW5kIG1vc3QgcHVuY3R1YXRpb24uICovCi0gICAgVUJSS19XT1JEX05PTkUgICAgICAgICAgID0g
MCwKLSAgICAvKiogVXBwZXIgYm91bmQgZm9yIHRhZ3MgZm9yIHVuY2F0ZWdvcml6ZWQgd29yZHMu
ICovCi0gICAgVUJSS19XT1JEX05PTkVfTElNSVQgICAgID0gMTAwLAotICAgIC8qKiBUYWcgdmFs
dWUgZm9yIHdvcmRzIHRoYXQgYXBwZWFyIHRvIGJlIG51bWJlcnMsIGxvd2VyIGxpbWl0LiAgICAq
LwotICAgIFVCUktfV09SRF9OVU1CRVIgICAgICAgICA9IDEwMCwKLSAgICAvKiogVGFnIHZhbHVl
IGZvciB3b3JkcyB0aGF0IGFwcGVhciB0byBiZSBudW1iZXJzLCB1cHBlciBsaW1pdC4gICAgKi8K
LSAgICBVQlJLX1dPUkRfTlVNQkVSX0xJTUlUICAgPSAyMDAsCi0gICAgLyoqIFRhZyB2YWx1ZSBm
b3Igd29yZHMgdGhhdCBjb250YWluIGxldHRlcnMsIGV4Y2x1ZGluZwotICAgICAqICBoaXJhZ2Fu
YSwga2F0YWthbmEgb3IgaWRlb2dyYXBoaWMgY2hhcmFjdGVycywgbG93ZXIgbGltaXQuICAgICov
Ci0gICAgVUJSS19XT1JEX0xFVFRFUiAgICAgICAgID0gMjAwLAotICAgIC8qKiBUYWcgdmFsdWUg
Zm9yIHdvcmRzIGNvbnRhaW5pbmcgbGV0dGVycywgdXBwZXIgbGltaXQgICovCi0gICAgVUJSS19X
T1JEX0xFVFRFUl9MSU1JVCAgID0gMzAwLAotICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNv
bnRhaW5pbmcga2FuYSBjaGFyYWN0ZXJzLCBsb3dlciBsaW1pdCAqLwotICAgIFVCUktfV09SRF9L
QU5BICAgICAgICAgICA9IDMwMCwKLSAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyBjb250YWlu
aW5nIGthbmEgY2hhcmFjdGVycywgdXBwZXIgbGltaXQgKi8KLSAgICBVQlJLX1dPUkRfS0FOQV9M
SU1JVCAgICAgPSA0MDAsCi0gICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMgY29udGFpbmluZyBp
ZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzLCBsb3dlciBsaW1pdCAqLwotICAgIFVCUktfV09SRF9JREVP
ICAgICAgICAgICA9IDQwMCwKLSAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyBjb250YWluaW5n
IGlkZW9ncmFwaGljIGNoYXJhY3RlcnMsIHVwcGVyIGxpbWl0ICovCi0gICAgVUJSS19XT1JEX0lE
RU9fTElNSVQgICAgID0gNTAwCi19IFVXb3JkQnJlYWs7Ci0KLS8qKgotICogIEVudW0gY29uc3Rh
bnRzIGZvciB0aGUgbGluZSBicmVhayB0YWdzIHJldHVybmVkIGJ5IGdldFJ1bGVTdGF0dXMoKS4K
LSAqICBBIHJhbmdlIG9mIHZhbHVlcyBpcyBkZWZpbmVkIGZvciBlYWNoIGNhdGVnb3J5IG9mCi0g
KiAgd29yZCwgdG8gYWxsb3cgZm9yIGZ1cnRoZXIgc3ViZGl2aXNpb25zIG9mIGEgY2F0ZWdvcnkg
aW4gZnV0dXJlIHJlbGVhc2VzLgotICogIEFwcGxpY2F0aW9ucyBzaG91bGQgY2hlY2sgZm9yIHRh
ZyB2YWx1ZXMgZmFsbGluZyB3aXRoaW4gdGhlIHJhbmdlLCByYXRoZXIKLSAqICB0aGFuIGZvciBz
aW5nbGUgaW5kaXZpZHVhbCB2YWx1ZXMuCi0gKiAgQHN0YWJsZSBJQ1UgMi44Ci0qLwotdHlwZWRl
ZiBlbnVtIFVMaW5lQnJlYWtUYWcgewotICAgIC8qKiBUYWcgdmFsdWUgZm9yIHNvZnQgbGluZSBi
cmVha3MsIHBvc2l0aW9ucyBhdCB3aGljaCBhIGxpbmUgYnJlYWsKLSAgICAgICogIGlzIGFjY2Vw
dGFibGUgYnV0IG5vdCByZXF1aXJlZCAgICAgICAgICAgICAgICAqLwotICAgIFVCUktfTElORV9T
T0ZUICAgICAgICAgICAgPSAwLAotICAgIC8qKiBVcHBlciBib3VuZCBmb3Igc29mdCBsaW5lIGJy
ZWFrcy4gICAgICAgICAgICAgICovCi0gICAgVUJSS19MSU5FX1NPRlRfTElNSVQgICAgICA9IDEw
MCwKLSAgICAvKiogVGFnIHZhbHVlIGZvciBhIGhhcmQsIG9yIG1hbmRhdG9yeSBsaW5lIGJyZWFr
ICAqLwotICAgIFVCUktfTElORV9IQVJEICAgICAgICAgICAgPSAxMDAsCi0gICAgLyoqIFVwcGVy
IGJvdW5kIGZvciBoYXJkIGxpbmUgYnJlYWtzLiAgICAgICAgICAgICAgKi8KLSAgICBVQlJLX0xJ
TkVfSEFSRF9MSU1JVCAgICAgID0gMjAwCi19IFVMaW5lQnJlYWtUYWc7Ci0KLQotCi0vKioKLSAq
ICBFbnVtIGNvbnN0YW50cyBmb3IgdGhlIHNlbnRlbmNlIGJyZWFrIHRhZ3MgcmV0dXJuZWQgYnkg
Z2V0UnVsZVN0YXR1cygpLgotICogIEEgcmFuZ2Ugb2YgdmFsdWVzIGlzIGRlZmluZWQgZm9yIGVh
Y2ggY2F0ZWdvcnkgb2YKLSAqICBzZW50ZW5jZSwgdG8gYWxsb3cgZm9yIGZ1cnRoZXIgc3ViZGl2
aXNpb25zIG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2VzLgotICogIEFwcGxpY2F0aW9u
cyBzaG91bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3aXRoaW4gdGhlIHJhbmdlLCBy
YXRoZXIKLSAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2YWx1ZXMuCi0gKiAgQHN0YWJs
ZSBJQ1UgMi44Ci0qLwotdHlwZWRlZiBlbnVtIFVTZW50ZW5jZUJyZWFrVGFnIHsKLSAgICAvKiog
VGFnIHZhbHVlIGZvciBmb3Igc2VudGVuY2VzICBlbmRpbmcgd2l0aCBhIHNlbnRlbmNlIHRlcm1p
bmF0b3IKLSAgICAgICogKCcuJywgJz8nLCAnIScsIGV0Yy4pIGNoYXJhY3RlciwgcG9zc2libHkg
Zm9sbG93ZWQgYnkgYQotICAgICAgKiBoYXJkIHNlcGFyYXRvciAoQ1IsIExGLCBQUywgZXRjLikK
LSAgICAgICovCi0gICAgVUJSS19TRU5URU5DRV9URVJNICAgICAgID0gMCwKLSAgICAvKiogVXBw
ZXIgYm91bmQgZm9yIHRhZ3MgZm9yIHNlbnRlbmNlcyBlbmRlZCBieSBzZW50ZW5jZSB0ZXJtaW5h
dG9ycy4gICAgKi8KLSAgICBVQlJLX1NFTlRFTkNFX1RFUk1fTElNSVQgPSAxMDAsCi0gICAgLyoq
IFRhZyB2YWx1ZSBmb3IgZm9yIHNlbnRlbmNlcyB0aGF0IGRvIG5vdCBjb250YWluIGFuIGVuZGlu
ZwotICAgICAgKiBzZW50ZW5jZSB0ZXJtaW5hdG9yICgnLicsICc/JywgJyEnLCBldGMuKSBjaGFy
YWN0ZXIsIGJ1dAotICAgICAgKiBhcmUgZW5kZWQgb25seSBieSBhIGhhcmQgc2VwYXJhdG9yIChD
UiwgTEYsIFBTLCBldGMuKSBvciBlbmQgb2YgaW5wdXQuCi0gICAgICAqLwotICAgIFVCUktfU0VO
VEVOQ0VfU0VQICAgICAgICA9IDEwMCwKLSAgICAvKiogVXBwZXIgYm91bmQgZm9yIHRhZ3MgZm9y
IHNlbnRlbmNlcyBlbmRlZCBieSBhIHNlcGFyYXRvci4gICAgICAgICAgICAgICovCi0gICAgVUJS
S19TRU5URU5DRV9TRVBfTElNSVQgID0gMjAwCi0gICAgLyoqIFRhZyB2YWx1ZSBmb3IgYSBoYXJk
LCBvciBtYW5kYXRvcnkgbGluZSBicmVhayAgKi8KLX0gVVNlbnRlbmNlQnJlYWtUYWc7Ci0KLQot
LyoqCi0gKiBPcGVuIGEgbmV3IFVCcmVha0l0ZXJhdG9yIGZvciBsb2NhdGluZyB0ZXh0IGJvdW5k
YXJpZXMgZm9yIGEgc3BlY2lmaWVkIGxvY2FsZS4KLSAqIEEgVUJyZWFrSXRlcmF0b3IgbWF5IGJl
IHVzZWQgZm9yIGRldGVjdGluZyBjaGFyYWN0ZXIsIGxpbmUsIHdvcmQsCi0gKiBhbmQgc2VudGVu
Y2UgYnJlYWtzIGluIHRleHQuCi0gKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiBVQnJlYWtJdGVy
YXRvciB0byBvcGVuOiBvbmUgb2YgVUJSS19DSEFSQUNURVIsIFVCUktfV09SRCwKLSAqIFVCUktf
TElORSwgVUJSS19TRU5URU5DRQotICogQHBhcmFtIGxvY2FsZSBUaGUgbG9jYWxlIHNwZWNpZnlp
bmcgdGhlIHRleHQtYnJlYWtpbmcgY29udmVudGlvbnMuCi0gKiBAcGFyYW0gdGV4dCBUaGUgdGV4
dCB0byBiZSBpdGVyYXRlZCBvdmVyLgotICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51bWJlciBv
ZiBjaGFyYWN0ZXJzIGluIHRleHQsIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KLSAqIEBwYXJh
bSBzdGF0dXMgQSBVRXJyb3JDb2RlIHRvIHJlY2VpdmUgYW55IGVycm9ycy4KLSAqIEByZXR1cm4g
QSBVQnJlYWtJdGVyYXRvciBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuCi0gKiBAc2VlIHVicmtf
b3BlblJ1bGVzCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUgVUJyZWFrSXRlcmF0
b3IqIFVfRVhQT1JUMgotdWJya19vcGVuKFVCcmVha0l0ZXJhdG9yVHlwZSB0eXBlLAotICAgICAg
Y29uc3QgY2hhciAqbG9jYWxlLAotICAgICAgY29uc3QgVUNoYXIgKnRleHQsCi0gICAgICBpbnQz
Ml90IHRleHRMZW5ndGgsCi0gICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0vKioKLSAqIE9w
ZW4gYSBuZXcgVUJyZWFrSXRlcmF0b3IgZm9yIGxvY2F0aW5nIHRleHQgYm91bmRhcmllcyB1c2lu
ZyBzcGVjaWZpZWQgYnJlYWtpbmcgcnVsZXMuCi0gKiBUaGUgcnVsZSBzeW50YXggaXMgLi4uIChU
QkQpCi0gKiBAcGFyYW0gcnVsZXMgQSBzZXQgb2YgcnVsZXMgc3BlY2lmeWluZyB0aGUgdGV4dCBi
cmVha2luZyBjb252ZW50aW9ucy4KLSAqIEBwYXJhbSBydWxlc0xlbmd0aCBUaGUgbnVtYmVyIG9m
IGNoYXJhY3RlcnMgaW4gcnVsZXMsIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KLSAqIEBwYXJh
bSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIGl0ZXJhdGVkIG92ZXIuICBNYXkgYmUgbnVsbCwgaW4gd2hp
Y2ggY2FzZSB1YnJrX3NldFRleHQoKSBpcwotICogICAgICAgIHVzZWQgdG8gc3BlY2lmeSB0aGUg
dGV4dCB0byBiZSBpdGVyYXRlZC4KLSAqIEBwYXJhbSB0ZXh0TGVuZ3RoIFRoZSBudW1iZXIgb2Yg
Y2hhcmFjdGVycyBpbiB0ZXh0LCBvciAtMSBpZiBudWxsLXRlcm1pbmF0ZWQuCi0gKiBAcGFyYW0g
cGFyc2VFcnIgICBSZWNlaXZlcyBwb3NpdGlvbiBhbmQgY29udGV4dCBpbmZvcm1hdGlvbiBmb3Ig
YW55IHN5bnRheCBlcnJvcnMKLSAqICAgICAgICAgICAgICAgICAgIGRldGVjdGVkIHdoaWxlIHBh
cnNpbmcgdGhlIHJ1bGVzLgotICogQHBhcmFtIHN0YXR1cyBBIFVFcnJvckNvZGUgdG8gcmVjZWl2
ZSBhbnkgZXJyb3JzLgotICogQHJldHVybiBBIFVCcmVha0l0ZXJhdG9yIGZvciB0aGUgc3BlY2lm
aWVkIHJ1bGVzLgotICogQHNlZSB1YnJrX29wZW4KLSAqIEBzdGFibGUgSUNVIDIuMgotICovCi1V
X1NUQUJMRSBVQnJlYWtJdGVyYXRvciogVV9FWFBPUlQyCi11YnJrX29wZW5SdWxlcyhjb25zdCBV
Q2hhciAgICAgKnJ1bGVzLAotICAgICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIHJ1bGVzTGVu
Z3RoLAotICAgICAgICAgICAgICAgY29uc3QgVUNoYXIgICAgICp0ZXh0LAotICAgICAgICAgICAg
ICAgaW50MzJfdCAgICAgICAgICB0ZXh0TGVuZ3RoLAotICAgICAgICAgICAgICAgVVBhcnNlRXJy
b3IgICAgICpwYXJzZUVyciwKLSAgICAgICAgICAgICAgIFVFcnJvckNvZGUgICAgICAqc3RhdHVz
KTsKLQotLyoqCi0gKiBUaHJlYWQgc2FmZSBjbG9uaW5nIG9wZXJhdGlvbgotICogQHBhcmFtIGJp
IGl0ZXJhdG9yIHRvIGJlIGNsb25lZAotICogQHBhcmFtIHN0YWNrQnVmZmVyIDxlbT5EZXByZWNh
dGVkIGZ1bmN0aW9uYWxpdHkgYXMgb2YgSUNVIDUyLCB1c2UgTlVMTC48L2VtPjxicj4KLSAqICB1
c2VyIGFsbG9jYXRlZCBzcGFjZSBmb3IgdGhlIG5ldyBjbG9uZS4gSWYgTlVMTCBuZXcgbWVtb3J5
IHdpbGwgYmUgYWxsb2NhdGVkLgotICogIElmIGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoLCBu
ZXcgbWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVkLgotICogIENsaWVudHMgY2FuIHVzZSB0aGUgVV9C
UktfU0FGRUNMT05FX0JVRkZFUlNJWkUuCi0gKiBAcGFyYW0gcEJ1ZmZlclNpemUgPGVtPkRlcHJl
Y2F0ZWQgZnVuY3Rpb25hbGl0eSBhcyBvZiBJQ1UgNTIsIHVzZSBOVUxMIG9yIDEuPC9lbT48YnI+
Ci0gKiAgcG9pbnRlciB0byBzaXplIG9mIGFsbG9jYXRlZCBzcGFjZS4KLSAqICBJZiAqcEJ1ZmZl
clNpemUgPT0gMCwgYSBzdWZmaWNpZW50IHNpemUgZm9yIHVzZSBpbiBjbG9uaW5nIHdpbGwKLSAq
ICBiZSByZXR1cm5lZCAoJ3ByZS1mbGlnaHRpbmcnKQotICogIElmICpwQnVmZmVyU2l6ZSBpcyBu
b3QgZW5vdWdoIGZvciBhIHN0YWNrLWJhc2VkIHNhZmUgY2xvbmUsCi0gKiAgbmV3IG1lbW9yeSB3
aWxsIGJlIGFsbG9jYXRlZC4KLSAqIEBwYXJhbSBzdGF0dXMgdG8gaW5kaWNhdGUgd2hldGhlciB0
aGUgb3BlcmF0aW9uIHdlbnQgb24gc21vb3RobHkgb3IgdGhlcmUgd2VyZSBlcnJvcnMKLSAqICBB
biBpbmZvcm1hdGlvbmFsIHN0YXR1cyB2YWx1ZSwgVV9TQUZFQ0xPTkVfQUxMT0NBVEVEX0VSUk9S
LCBpcyB1c2VkIGlmIGFueSBhbGxvY2F0aW9ucyB3ZXJlIG5lY2Vzc2FyeS4KLSAqIEByZXR1cm4g
cG9pbnRlciB0byB0aGUgbmV3IGNsb25lCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFC
TEUgVUJyZWFrSXRlcmF0b3IgKiBVX0VYUE9SVDIKLXVicmtfc2FmZUNsb25lKAotICAgICAgICAg
IGNvbnN0IFVCcmVha0l0ZXJhdG9yICpiaSwKLSAgICAgICAgICB2b2lkICpzdGFja0J1ZmZlciwK
LSAgICAgICAgICBpbnQzMl90ICpwQnVmZmVyU2l6ZSwKLSAgICAgICAgICBVRXJyb3JDb2RlICpz
dGF0dXMpOwotCi0jaWZuZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQotCi0vKioKLSAgKiBBIHJl
Y29tbWVuZGVkIHNpemUgKGluIGJ5dGVzKSBmb3IgdGhlIG1lbW9yeSBidWZmZXIgdG8gYmUgcGFz
c2VkIHRvIHVicmtfc2F2ZUNsb25lKCkuCi0gICogQGRlcHJlY2F0ZWQgSUNVIDUyLiBEbyBub3Qg
cmVseSBvbiB1YnJrX3NhZmVDbG9uZSgpIGNsb25pbmcgaW50byBhbnkgcHJvdmlkZWQgYnVmZmVy
LgotICAqLwotI2RlZmluZSBVX0JSS19TQUZFQ0xPTkVfQlVGRkVSU0laRSAxCi0KLSNlbmRpZiAv
KiBVX0hJREVfREVQUkVDQVRFRF9BUEkgKi8KLQotLyoqCi0qIENsb3NlIGEgVUJyZWFrSXRlcmF0
b3IuCi0qIE9uY2UgY2xvc2VkLCBhIFVCcmVha0l0ZXJhdG9yIG1heSBubyBsb25nZXIgYmUgdXNl
ZC4KLSogQHBhcmFtIGJpIFRoZSBicmVhayBpdGVyYXRvciB0byBjbG9zZS4KLSAqIEBzdGFibGUg
SUNVIDIuMAotKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCi11YnJrX2Nsb3NlKFVCcmVha0l0
ZXJhdG9yICpiaSk7Ci0KLSNpZiBVX1NIT1dfQ1BMVVNQTFVTX0FQSQotCi1VX05BTUVTUEFDRV9C
RUdJTgotCi0vKioKLSAqIFxjbGFzcyBMb2NhbFVCcmVha0l0ZXJhdG9yUG9pbnRlcgotICogIlNt
YXJ0IHBvaW50ZXIiIGNsYXNzLCBjbG9zZXMgYSBVQnJlYWtJdGVyYXRvciB2aWEgdWJya19jbG9z
ZSgpLgotICogRm9yIG1vc3QgbWV0aG9kcyBzZWUgdGhlIExvY2FsUG9pbnRlckJhc2UgYmFzZSBj
bGFzcy4KLSAqCi0gKiBAc2VlIExvY2FsUG9pbnRlckJhc2UKLSAqIEBzZWUgTG9jYWxQb2ludGVy
Ci0gKiBAc3RhYmxlIElDVSA0LjQKLSAqLwotVV9ERUZJTkVfTE9DQUxfT1BFTl9QT0lOVEVSKExv
Y2FsVUJyZWFrSXRlcmF0b3JQb2ludGVyLCBVQnJlYWtJdGVyYXRvciwgdWJya19jbG9zZSk7Ci0K
LVVfTkFNRVNQQUNFX0VORAotCi0jZW5kaWYKLQotLyoqCi0gKiBTZXRzIGFuIGV4aXN0aW5nIGl0
ZXJhdG9yIHRvIHBvaW50IHRvIGEgbmV3IHBpZWNlIG9mIHRleHQKLSAqIEBwYXJhbSBiaSBUaGUg
aXRlcmF0b3IgdG8gdXNlCi0gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBiZSBzZXQKLSAqIEBw
YXJhbSB0ZXh0TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHRleHQKLSAqIEBwYXJhbSBzdGF0dXMg
VGhlIGVycm9yIGNvZGUKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSB2b2lkIFVf
RVhQT1JUMgotdWJya19zZXRUZXh0KFVCcmVha0l0ZXJhdG9yKiBiaSwKLSAgICAgICAgICAgICBj
b25zdCBVQ2hhciogICAgdGV4dCwKLSAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgdGV4dExl
bmd0aCwKLSAgICAgICAgICAgICBVRXJyb3JDb2RlKiAgICAgc3RhdHVzKTsKLQotCi0vKioKLSAq
IFNldHMgYW4gZXhpc3RpbmcgaXRlcmF0b3IgdG8gcG9pbnQgdG8gYSBuZXcgcGllY2Ugb2YgdGV4
dC4KLSAqCi0gKiBBbGwgaW5kZXggcG9zaXRpb25zIHJldHVybmVkIGJ5IGJyZWFrIGl0ZXJhdG9y
IGZ1bmN0aW9ucyBhcmUKLSAqIG5hdGl2ZSBpbmRpY2VzIGZyb20gdGhlIFVUZXh0LiBGb3IgZXhh
bXBsZSwgd2hlbiBicmVha2luZyBVVEYtOAotICogZW5jb2RlZCB0ZXh0LCB0aGUgYnJlYWsgcG9z
aXRpb25zIHJldHVybmVkIGJ5IFxyZWYgdWJya19uZXh0LCBccmVmIHVicmtfcHJldmlvdXMsIGV0
Yy4KLSAqIHdpbGwgYmUgVVRGLTggc3RyaW5nIGluZGljZXMsIG5vdCBVVEYtMTYgcG9zaXRpb25z
LgotICoKLSAqIEBwYXJhbSBiaSBUaGUgaXRlcmF0b3IgdG8gdXNlCi0gKiBAcGFyYW0gdGV4dCBU
aGUgdGV4dCB0byBiZSBzZXQuCi0gKiAgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIG1ha2VzIGEg
c2hhbGxvdyBjbG9uZSBvZiB0aGUgc3VwcGxpZWQgVVRleHQuICBUaGlzIG1lYW5zCi0gKiAgICAg
ICAgICAgICB0aGF0IHRoZSBjYWxsZXIgaXMgZnJlZSB0byBpbW1lZGlhdGVseSBjbG9zZSBvciBv
dGhlcndpc2UgcmV1c2UgdGhlCi0gKiAgICAgICAgICAgICBVVGV4dCB0aGF0IHdhcyBwYXNzZWQg
YXMgYSBwYXJhbWV0ZXIsIGJ1dCB0aGF0IHRoZSB1bmRlcmx5aW5nIHRleHQgaXRzZWxmCi0gKiAg
ICAgICAgICAgICBtdXN0IG5vdCBiZSBhbHRlcmVkIHdoaWxlIGJlaW5nIHJlZmVyZW5jZWQgYnkg
dGhlIGJyZWFrIGl0ZXJhdG9yLgotICogQHBhcmFtIHN0YXR1cyBUaGUgZXJyb3IgY29kZQotICog
QHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCi11YnJrX3NldFVU
ZXh0KFVCcmVha0l0ZXJhdG9yKiBiaSwKLSAgICAgICAgICAgICBVVGV4dCogICAgICAgICAgdGV4
dCwKLSAgICAgICAgICAgICBVRXJyb3JDb2RlKiAgICAgc3RhdHVzKTsKLQotCi0KLS8qKgotICog
RGV0ZXJtaW5lIHRoZSBtb3N0IHJlY2VudGx5LXJldHVybmVkIHRleHQgYm91bmRhcnkuCi0gKgot
ICogQHBhcmFtIGJpIFRoZSBicmVhayBpdGVyYXRvciB0byB1c2UuCi0gKiBAcmV0dXJuIFRoZSBj
aGFyYWN0ZXIgaW5kZXggbW9zdCByZWNlbnRseSByZXR1cm5lZCBieSBccmVmIHVicmtfbmV4dCwg
XHJlZiB1YnJrX3ByZXZpb3VzLAotICogXHJlZiB1YnJrX2ZpcnN0LCBvciBccmVmIHVicmtfbGFz
dC4KLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgot
dWJya19jdXJyZW50KGNvbnN0IFVCcmVha0l0ZXJhdG9yICpiaSk7Ci0KLS8qKgotICogQWR2YW5j
ZSB0aGUgaXRlcmF0b3IgdG8gdGhlIGJvdW5kYXJ5IGZvbGxvd2luZyB0aGUgY3VycmVudCBib3Vu
ZGFyeS4KLSAqCi0gKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KLSAqIEBy
ZXR1cm4gVGhlIGNoYXJhY3RlciBpbmRleCBvZiB0aGUgbmV4dCB0ZXh0IGJvdW5kYXJ5LCBvciBV
QlJLX0RPTkUKLSAqIGlmIGFsbCB0ZXh0IGJvdW5kYXJpZXMgaGF2ZSBiZWVuIHJldHVybmVkLgot
ICogQHNlZSB1YnJrX3ByZXZpb3VzCi0gKiBAc3RhYmxlIElDVSAyLjAKLSAqLwotVV9TVEFCTEUg
aW50MzJfdCBVX0VYUE9SVDIKLXVicmtfbmV4dChVQnJlYWtJdGVyYXRvciAqYmkpOwotCi0vKioK
LSAqIFNldCB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGJvdW5kYXJ5IHByZWNlZGluZyB0
aGUgY3VycmVudCBib3VuZGFyeS4KLSAqCi0gKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9y
IHRvIHVzZS4KLSAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBpbmRleCBvZiB0aGUgcHJlY2VkaW5n
IHRleHQgYm91bmRhcnksIG9yIFVCUktfRE9ORQotICogaWYgYWxsIHRleHQgYm91bmRhcmllcyBo
YXZlIGJlZW4gcmV0dXJuZWQuCi0gKiBAc2VlIHVicmtfbmV4dAotICogQHN0YWJsZSBJQ1UgMi4w
Ci0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCi11YnJrX3ByZXZpb3VzKFVCcmVha0l0
ZXJhdG9yICpiaSk7Ci0KLS8qKgotICogU2V0IHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUg
aW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dCBiZWluZyBzY2FubmVkLgot
ICogVGhpcyBpcyBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIGluZGV4IDAgb2YgdGhlIHRleHQuCi0g
KiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KLSAqIEByZXR1cm4gVGhlIGNo
YXJhY3RlciBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNj
YW5uZWQuCi0gKiBAc2VlIHVicmtfbGFzdAotICogQHN0YWJsZSBJQ1UgMi4wCi0gKi8KLVVfU1RB
QkxFIGludDMyX3QgVV9FWFBPUlQyCi11YnJrX2ZpcnN0KFVCcmVha0l0ZXJhdG9yICpiaSk7Ci0K
LS8qKgotICogU2V0IHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgaW5kZXggaW1tZWRpYXRl
bHkgPEVNPmJleW9uZDwvRU0+IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dCBiZWluZyBz
Y2FubmVkLgotICogVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGxhc3QgY2hhcmFjdGVyLgot
ICogQHBhcmFtIGJpIFRoZSBicmVhayBpdGVyYXRvciB0byB1c2UuCi0gKiBAcmV0dXJuIFRoZSBj
aGFyYWN0ZXIgb2Zmc2V0IGltbWVkaWF0ZWx5IDxFTT5iZXlvbmQ8L0VNPiB0aGUgbGFzdCBjaGFy
YWN0ZXIgaW4gdGhlCi0gKiB0ZXh0IGJlaW5nIHNjYW5uZWQuCi0gKiBAc2VlIHVicmtfZmlyc3QK
LSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdWJy
a19sYXN0KFVCcmVha0l0ZXJhdG9yICpiaSk7Ci0KLS8qKgotICogU2V0IHRoZSBpdGVyYXRvciBw
b3NpdGlvbiB0byB0aGUgZmlyc3QgYm91bmRhcnkgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgb2Zm
c2V0LgotICogVGhlIG5ldyBwb3NpdGlvbiBpcyBhbHdheXMgc21hbGxlciB0aGFuIG9mZnNldCwg
b3IgVUJSS19ET05FLgotICogQHBhcmFtIGJpIFRoZSBicmVhayBpdGVyYXRvciB0byB1c2UuCi0g
KiBAcGFyYW0gb2Zmc2V0IFRoZSBvZmZzZXQgdG8gYmVnaW4gc2Nhbm5pbmcuCi0gKiBAcmV0dXJu
IFRoZSB0ZXh0IGJvdW5kYXJ5IHByZWNlZGluZyBvZmZzZXQsIG9yIFVCUktfRE9ORS4KLSAqIEBz
ZWUgdWJya19mb2xsb3dpbmcKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQz
Ml90IFVfRVhQT1JUMgotdWJya19wcmVjZWRpbmcoVUJyZWFrSXRlcmF0b3IgKmJpLAotICAgICAg
ICAgICBpbnQzMl90IG9mZnNldCk7Ci0KLS8qKgotICogQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8g
dGhlIGZpcnN0IGJvdW5kYXJ5IGZvbGxvd2luZyB0aGUgc3BlY2lmaWVkIG9mZnNldC4KLSAqIFRo
ZSB2YWx1ZSByZXR1cm5lZCBpcyBhbHdheXMgZ3JlYXRlciB0aGFuIG9mZnNldCwgb3IgVUJSS19E
T05FLgotICogQHBhcmFtIGJpIFRoZSBicmVhayBpdGVyYXRvciB0byB1c2UuCi0gKiBAcGFyYW0g
b2Zmc2V0IFRoZSBvZmZzZXQgdG8gYmVnaW4gc2Nhbm5pbmcuCi0gKiBAcmV0dXJuIFRoZSB0ZXh0
IGJvdW5kYXJ5IGZvbGxvd2luZyBvZmZzZXQsIG9yIFVCUktfRE9ORS4KLSAqIEBzZWUgdWJya19w
cmVjZWRpbmcKLSAqIEBzdGFibGUgSUNVIDIuMAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQ
T1JUMgotdWJya19mb2xsb3dpbmcoVUJyZWFrSXRlcmF0b3IgKmJpLAotICAgICAgICAgICBpbnQz
Ml90IG9mZnNldCk7Ci0KLS8qKgotKiBHZXQgYSBsb2NhbGUgZm9yIHdoaWNoIHRleHQgYnJlYWtp
bmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgotKiBBIFVCcmVha0l0ZXJhdG9yIGluIGEgbG9j
YWxlIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gd2lsbCBwZXJmb3JtIHRoZSBjb3JyZWN0Ci0q
IHRleHQgYnJlYWtpbmcgZm9yIHRoZSBsb2NhbGUuCi0qIEBwYXJhbSBpbmRleCBUaGUgaW5kZXgg
b2YgdGhlIGRlc2lyZWQgbG9jYWxlLgotKiBAcmV0dXJuIEEgbG9jYWxlIGZvciB3aGljaCBudW1i
ZXIgdGV4dCBicmVha2luZyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUsIG9yIDAgaWYgbm9uZS4K
LSogQHNlZSB1YnJrX2NvdW50QXZhaWxhYmxlCi0qIEBzdGFibGUgSUNVIDIuMAotKi8KLVVfU1RB
QkxFIGNvbnN0IGNoYXIqIFVfRVhQT1JUMgotdWJya19nZXRBdmFpbGFibGUoaW50MzJfdCBpbmRl
eCk7Ci0KLS8qKgotKiBEZXRlcm1pbmUgaG93IG1hbnkgbG9jYWxlcyBoYXZlIHRleHQgYnJlYWtp
bmcgaW5mb3JtYXRpb24gYXZhaWxhYmxlLgotKiBUaGlzIGZ1bmN0aW9uIGlzIG1vc3QgdXNlZnVs
IGFzIGRldGVybWluaW5nIHRoZSBsb29wIGVuZGluZyBjb25kaXRpb24gZm9yCi0qIGNhbGxzIHRv
IFxyZWYgdWJya19nZXRBdmFpbGFibGUuCi0qIEByZXR1cm4gVGhlIG51bWJlciBvZiBsb2NhbGVz
IGZvciB3aGljaCB0ZXh0IGJyZWFraW5nIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZS4KLSogQHNl
ZSB1YnJrX2dldEF2YWlsYWJsZQotKiBAc3RhYmxlIElDVSAyLjAKLSovCi1VX1NUQUJMRSBpbnQz
Ml90IFVfRVhQT1JUMgotdWJya19jb3VudEF2YWlsYWJsZSh2b2lkKTsKLQotCi0vKioKLSogUmV0
dXJucyB0cnVlIGlmIHRoZSBzcGVjZmllZCBwb3NpdGlvbiBpcyBhIGJvdW5kYXJ5IHBvc2l0aW9u
LiAgQXMgYSBzaWRlCi0qIGVmZmVjdCwgbGVhdmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0
aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKLSogb3IgYWZ0ZXIgIm9mZnNldCIuCi0qIEBw
YXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgotKiBAcGFyYW0gb2Zmc2V0IHRoZSBv
ZmZzZXQgdG8gY2hlY2suCi0qIEByZXR1cm4gVHJ1ZSBpZiAib2Zmc2V0IiBpcyBhIGJvdW5kYXJ5
IHBvc2l0aW9uLgotKiBAc3RhYmxlIElDVSAyLjAKLSovCi1VX1NUQUJMRSAgVUJvb2wgVV9FWFBP
UlQyCi11YnJrX2lzQm91bmRhcnkoVUJyZWFrSXRlcmF0b3IgKmJpLCBpbnQzMl90IG9mZnNldCk7
Ci0KLS8qKgotICogUmV0dXJuIHRoZSBzdGF0dXMgZnJvbSB0aGUgYnJlYWsgcnVsZSB0aGF0IGRl
dGVybWluZWQgdGhlIG1vc3QgcmVjZW50bHkKLSAqIHJldHVybmVkIGJyZWFrIHBvc2l0aW9uLiAg
VGhlIHZhbHVlcyBhcHBlYXIgaW4gdGhlIHJ1bGUgc291cmNlCi0gKiB3aXRoaW4gYnJhY2tldHMs
IHsxMjN9LCBmb3IgZXhhbXBsZS4gIEZvciBydWxlcyB0aGF0IGRvIG5vdCBzcGVjaWZ5IGEKLSAq
IHN0YXR1cywgYSBkZWZhdWx0IHZhbHVlIG9mIDAgaXMgcmV0dXJuZWQuCi0gKiA8cD4KLSAqIEZv
ciB3b3JkIGJyZWFrIGl0ZXJhdG9ycywgdGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgZGVmaW5lZCBp
biBlbnVtIFVXb3JkQnJlYWsuCi0gKiBAc3RhYmxlIElDVSAyLjIKLSAqLwotVV9TVEFCTEUgIGlu
dDMyX3QgVV9FWFBPUlQyCi11YnJrX2dldFJ1bGVTdGF0dXMoVUJyZWFrSXRlcmF0b3IgKmJpKTsK
LQotLyoqCi0gKiBHZXQgdGhlIHN0YXR1c2VzIGZyb20gdGhlIGJyZWFrIHJ1bGVzIHRoYXQgZGV0
ZXJtaW5lZCB0aGUgbW9zdCByZWNlbnRseQotICogcmV0dXJuZWQgYnJlYWsgcG9zaXRpb24uICBU
aGUgdmFsdWVzIGFwcGVhciBpbiB0aGUgcnVsZSBzb3VyY2UKLSAqIHdpdGhpbiBicmFja2V0cywg
ezEyM30sIGZvciBleGFtcGxlLiAgVGhlIGRlZmF1bHQgc3RhdHVzIHZhbHVlIGZvciBydWxlcwot
ICogdGhhdCBkbyBub3QgZXhwbGljaXRseSBwcm92aWRlIG9uZSBpcyB6ZXJvLgotICogPHA+Ci0g
KiBGb3Igd29yZCBicmVhayBpdGVyYXRvcnMsIHRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIGRlZmlu
ZWQgaW4gZW51bSBVV29yZEJyZWFrLgotICogQHBhcmFtIGJpICAgICAgICBUaGUgYnJlYWsgaXRl
cmF0b3IgdG8gdXNlCi0gKiBAcGFyYW0gZmlsbEluVmVjIGFuIGFycmF5IHRvIGJlIGZpbGxlZCBp
biB3aXRoIHRoZSBzdGF0dXMgdmFsdWVzLgotICogQHBhcmFtIGNhcGFjaXR5ICB0aGUgbGVuZ3Ro
IG9mIHRoZSBzdXBwbGllZCB2ZWN0b3IuICBBIGxlbmd0aCBvZiB6ZXJvIGNhdXNlcwotICogICAg
ICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdHVz
IHZhbHVlcywgaW4gdGhlCi0gKiAgICAgICAgICAgICAgICAgIG5vcm1hbCB3YXksIHdpdGhvdXQg
YXR0ZW10cGluZyB0byBzdG9yZSBhbnkgdmFsdWVzLgotICogQHBhcmFtIHN0YXR1cyAgICByZWNl
aXZlcyBlcnJvciBjb2Rlcy4KLSAqIEByZXR1cm4gICAgICAgICAgVGhlIG51bWJlciBvZiBydWxl
IHN0YXR1cyB2YWx1ZXMgZnJvbSBydWxlcyB0aGF0IGRldGVybWluZWQKLSAqICAgICAgICAgICAg
ICAgICAgdGhlIG1vc3QgcmVjZW50IGJvdW5kYXJ5IHJldHVybmVkIGJ5IHRoZSBicmVhayBpdGVy
YXRvci4KLSAqIEBzdGFibGUgSUNVIDMuMAotICovCi1VX1NUQUJMRSAgaW50MzJfdCBVX0VYUE9S
VDIKLXVicmtfZ2V0UnVsZVN0YXR1c1ZlYyhVQnJlYWtJdGVyYXRvciAqYmksIGludDMyX3QgKmZp
bGxJblZlYywgaW50MzJfdCBjYXBhY2l0eSwgVUVycm9yQ29kZSAqc3RhdHVzKTsKLQotLyoqCi0g
KiBSZXR1cm4gdGhlIGxvY2FsZSBvZiB0aGUgYnJlYWsgaXRlcmF0b3IuIFlvdSBjYW4gY2hvb3Nl
IGJldHdlZW4gdGhlIHZhbGlkIGFuZAotICogdGhlIGFjdHVhbCBsb2NhbGUuCi0gKiBAcGFyYW0g
YmkgYnJlYWsgaXRlcmF0b3IKLSAqIEBwYXJhbSB0eXBlIGxvY2FsZSB0eXBlICh2YWxpZCBvciBh
Y3R1YWwpCi0gKiBAcGFyYW0gc3RhdHVzIGVycm9yIGNvZGUKLSAqIEByZXR1cm4gbG9jYWxlIHN0
cmluZwotICogQHN0YWJsZSBJQ1UgMi44Ci0gKi8KLVVfU1RBQkxFIGNvbnN0IGNoYXIqIFVfRVhQ
T1JUMgotdWJya19nZXRMb2NhbGVCeVR5cGUoY29uc3QgVUJyZWFrSXRlcmF0b3IgKmJpLCBVTG9j
RGF0YUxvY2FsZVR5cGUgdHlwZSwgVUVycm9yQ29kZSogc3RhdHVzKTsKLQotLyoqCi0gICogIFNl
dCB0aGUgc3ViamVjdCB0ZXh0IHN0cmluZyB1cG9uIHdoaWNoIHRoZSBicmVhayBpdGVyYXRvciBp
cyBvcGVyYXRpbmcKLSAgKiAgd2l0aG91dCBjaGFuZ2luZyBhbnkgb3RoZXIgYXNwZWN0IG9mIHRo
ZSBzdGF0ZS4KLSAgKiAgVGhlIG5ldyBhbmQgcHJldmlvdXMgdGV4dCBzdHJpbmdzIG11c3QgaGF2
ZSB0aGUgc2FtZSBjb250ZW50LgotICAqCi0gICogIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQg
Zm9yIHVzZSBpbiBlbnZpcm9ubWVudHMgd2hlcmUgSUNVIGlzIG9wZXJhdGluZyBvbgotICAqICBz
dHJpbmdzIHRoYXQgbWF5IG1vdmUgYXJvdW5kIGluIG1lbW9yeS4gIEl0IHByb3ZpZGVzIGEgbWVj
aGFuaXNtIGZvciBub3RpZnlpbmcKLSAgKiAgSUNVIHRoYXQgdGhlIHN0cmluZyBoYXMgYmVlbiBy
ZWxvY2F0ZWQsIGFuZCBwcm92aWRpbmcgYSBuZXcgVVRleHQgdG8gYWNjZXNzIHRoZQotICAqICBz
dHJpbmcgaW4gaXRzIG5ldyBwb3NpdGlvbi4KLSAgKgotICAqICBOb3RlIHRoYXQgdGhlIGJyZWFr
IGl0ZXJhdG9yIG5ldmVyIGNvcGllcyB0aGUgdW5kZXJseWluZyB0ZXh0Ci0gICogIG9mIGEgc3Ry
aW5nIGJlaW5nIHByb2Nlc3NlZCwgYnV0IGFsd2F5cyBvcGVyYXRlcyBkaXJlY3RseSBvbiB0aGUg
b3JpZ2luYWwgdGV4dAotICAqICBwcm92aWRlZCBieSB0aGUgdXNlci4gUmVmcmVzaGluZyBzaW1w
bHkgZHJvcHMgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIG9sZCB0ZXh0Ci0gICogIGFuZCByZXBsYWNl
cyB0aGVtIHdpdGggcmVmZXJlbmNlcyB0byB0aGUgbmV3LgotICAqCi0gICogIENhdXRpb246ICB0
aGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IHVzZWQgb25seSBieSB2ZXJ5IHNwZWNpYWxpemVkCi0g
ICogICAgICAgICAgICBzeXN0ZW0tbGV2ZWwgY29kZS4gICBPbmUgZXhhbXBsZSB1c2UgY2FzZSBp
cyB3aXRoIGdhcmJhZ2UgY29sbGVjdGlvbgotICAqICAgICAgICAgICAgdGhhdCBtb3ZlcyB0aGUg
dGV4dCBpbiBtZW1vcnkuCi0gICoKLSAgKiBAcGFyYW0gYmkgICAgICAgICBUaGUgYnJlYWsgaXRl
cmF0b3IuCi0gICogQHBhcmFtIHRleHQgICAgICAgVGhlIG5ldyAobW92ZWQpIHRleHQgc3RyaW5n
LgotICAqIEBwYXJhbSBzdGF0dXMgICAgIFJlY2VpdmVzIGVycm9ycyBkZXRlY3RlZCBieSB0aGlz
IGZ1bmN0aW9uLgotICAqCi0gICogQHN0YWJsZSBJQ1UgNDkKLSAgKi8KLVVfU1RBQkxFIHZvaWQg
VV9FWFBPUlQyCi11YnJrX3JlZnJlc2hVVGV4dChVQnJlYWtJdGVyYXRvciAqYmksCi0gICAgICAg
ICAgICAgICAgICAgICAgIFVUZXh0ICAgICAgICAgICp0ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICBVRXJyb3JDb2RlICAgICAqc3RhdHVzKTsKLQotI2VuZGlmIC8qICNpZiAhVUNPTkZJR19O
T19CUkVBS19JVEVSQVRJT04gKi8KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pY3UvdW5pY29kZS91dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaWN1L3VuaWNvZGUvdXRleHQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQzMTkxM2QzNWIzMWU4NzcxOWMyNjQ3
OWFiMjIxNWU2NGZmMzM5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGV4dC5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTYwMCArMCwwIEBACi0vKgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKgotKiAgIENv
cHlyaWdodCAoQykgMjAwNC0yMDEyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCi0q
ICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0qCi0qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCi0qICAgZmlsZSBuYW1lOiAgdXRleHQuaAotKiAgIGVuY29kaW5n
OiAgIFVTLUFTQ0lJCi0qICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCi0qICAgaW5kZW50YXRp
b246NAotKgotKiAgIGNyZWF0ZWQgb246IDIwMDRvY3QwNgotKiAgIGNyZWF0ZWQgYnk6IE1hcmt1
cyBXLiBTY2hlcmVyCi0qLwotCi0jaWZuZGVmIF9fVVRFWFRfSF9fCi0jZGVmaW5lIF9fVVRFWFRf
SF9fCi0KLS8qKgotICogXGZpbGUKLSAqIFxicmllZiBDIEFQSTogQWJzdHJhY3QgVW5pY29kZSBU
ZXh0IEFQSQotICoKLSAqIFRoZSBUZXh0IEFjY2VzcyBBUEkgcHJvdmlkZXMgYSBtZWFucyB0byBh
bGxvdyB0ZXh0IHRoYXQgaXMgc3RvcmVkIGluIGFsdGVybmF0aXZlCi0gKiBmb3JtYXRzIHRvIHdv
cmsgd2l0aCBJQ1Ugc2VydmljZXMuICBJQ1Ugbm9ybWFsbHkgb3BlcmF0ZXMgb24gdGV4dCB0aGF0
IGlzCi0gKiBzdG9yZWQgaW4gVVRGLTE2IGZvcm1hdCwgaW4gKFVDaGFyICopIGFycmF5cyBmb3Ig
dGhlIEMgQVBJcyBvciBhcyB0eXBlCi0gKiBVbmljb2RlU3RyaW5nIGZvciBDKysgQVBJcy4KLSAq
Ci0gKiBJQ1UgVGV4dCBBY2Nlc3MgYWxsb3dzIG90aGVyIGZvcm1hdHMsIHN1Y2ggYXMgVVRGLTgg
b3Igbm9uLWNvbnRpZ3VvdXMKLSAqIFVURi0xNiBzdHJpbmdzLCB0byBiZSBwbGFjZWQgaW4gYSBV
VGV4dCB3cmFwcGVyIGFuZCB0aGVuIHBhc3NlZCB0byBJQ1Ugc2VydmljZXMuCi0gKgotICogVGhl
cmUgYXJlIHRocmVlIGdlbmVyYWwgY2xhc3NlcyBvZiB1c2FnZSBmb3IgVVRleHQ6Ci0gKgotICog
ICAgIEFwcGxpY2F0aW9uIExldmVsIFVzZS4gIFRoaXMgaXMgdGhlIHNpbXBsZXN0IHVzYWdlIC0g
YXBwbGljYXRpb25zIHdvdWxkCi0gKiAgICAgdXNlIG9uZSBvZiB0aGUgdXRleHRfb3BlbigpIGZ1
bmN0aW9ucyBvbiB0aGVpciBpbnB1dCB0ZXh0LCBhbmQgcGFzcwotICogICAgIHRoZSByZXN1bHRp
bmcgVVRleHQgdG8gdGhlIGRlc2lyZWQgSUNVIHNlcnZpY2UuCi0gKgotICogICAgIFNlY29uZCBp
cyB1c2FnZSBpbiBJQ1UgU2VydmljZXMsIHN1Y2ggYXMgYnJlYWsgaXRlcmF0aW9uLCB0aGF0IHdp
bGwgbmVlZCB0bwotICogICAgIG9wZXJhdGUgb24gaW5wdXQgcHJlc2VudGVkIHRvIHRoZW0gYXMg
YSBVVGV4dC4gIFRoZXNlIGltcGxlbWVudGF0aW9ucwotICogICAgIHdpbGwgbmVlZCB0byB1c2Ug
dGhlIGl0ZXJhdGlvbiBhbmQgcmVsYXRlZCBVVGV4dCBmdW5jdGlvbnMgdG8gZ2FpbgotICogICAg
IGFjY2VzcyB0byB0aGUgYWN0dWFsIHRleHQuCi0gKgotICogICAgIFRoZSB0aGlyZCBjbGFzcyBv
ZiBVVGV4dCB1c2VycyBhcmUgInRleHQgcHJvdmlkZXJzLiIgIFRoZXNlIGFyZSB0aGUKLSAqICAg
ICBVVGV4dCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSB2YXJpb3VzIHRleHQgc3RvcmFnZSBmb3Jt
YXRzLiAgQW4gYXBwbGljYXRpb24KLSAqICAgICBvciBzeXN0ZW0gd2l0aCBhIHVuaXF1ZSB0ZXh0
IHN0b3JhZ2UgZm9ybWF0IGNhbiBpbXBsZW1lbnQgYSBzZXQgb2YKLSAqICAgICBVVGV4dCBwcm92
aWRlciBmdW5jdGlvbnMgZm9yIHRoYXQgZm9ybWF0LCB3aGljaCB3aWxsIHRoZW4gYWxsb3cKLSAq
ICAgICBJQ1Ugc2VydmljZXMgdG8gb3BlcmF0ZSBvbiB0aGF0IGZvcm1hdC4KLSAqCi0gKgotICog
PGVtPkl0ZXJhdGluZyBvdmVyIHRleHQ8L2VtPgotICoKLSAqIEhlcmUgaXMgc2FtcGxlIGNvZGUg
Zm9yIGEgZm9yd2FyZCBpdGVyYXRpb24gb3ZlciB0aGUgY29udGVudHMgb2YgYSBVVGV4dAotICoK
LSAqIFxjb2RlCi0gKiAgICBVQ2hhcjMyICBjOwotICogICAgVVRleHQgICAgKnV0ID0gd2hhdGV2
ZXIoKTsKLSAqCi0gKiAgICBmb3IgKGM9dXRleHRfbmV4dDMyRnJvbSh1dCwgMCk7IGM+PTA7IGM9
dXRleHRfbmV4dDMyKHV0KSkgewotICogICAgICAgLy8gZG8gd2hhdGV2ZXIgd2l0aCB0aGUgY29k
ZXBvaW50IGMgaGVyZS4KLSAqICAgIH0KLSAqIFxlbmRjb2RlCi0gKgotICogQW5kIGhlcmUgaXMg
c2ltaWxhciBjb2RlIHRvIGl0ZXJhdGUgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBmcm9tIHRo
ZSBlbmQKLSAqIG9mIHRoZSB0ZXh0IHRvd2FyZHMgdGhlIGJlZ2lubmluZy4KLSAqCi0gKiBcY29k
ZQotICogICAgVUNoYXIzMiAgYzsKLSAqICAgIFVUZXh0ICAgICp1dCA9IHdoYXRldmVyKCk7Ci0g
KiAgICBpbnQgICAgICB0ZXh0TGVuZ3RoID0gdXRleHRfbmF0aXZlTGVuZ3RoKHV0KTsKLSAqICAg
IGZvciAoYz11dGV4dF9wcmV2aW91czMyRnJvbSh1dCwgdGV4dExlbmd0aCk7IGM+PTA7IGM9dXRl
eHRfcHJldmlvdXMzMih1dCkpIHsKLSAqICAgICAgIC8vIGRvIHdoYXRldmVyIHdpdGggdGhlIGNv
ZGVwb2ludCBjIGhlcmUuCi0gKiAgICB9Ci0gKiBcZW5kY29kZQotICoKLSAqIDxlbT5DaGFyYWN0
ZXJzIGFuZCBJbmRleGluZzwvZW0+Ci0gKgotICogSW5kZXhpbmcgaW50byB0ZXh0IGJ5IFVUZXh0
IGZ1bmN0aW9ucyBpcyBuZWFybHkgYWx3YXlzIGluIHRlcm1zIG9mIHRoZSBuYXRpdmUKLSAqIGlu
ZGV4aW5nIG9mIHRoZSB1bmRlcmx5aW5nIHRleHQgc3RvcmFnZS4gIFRoZSBzdG9yYWdlIGZvcm1h
dCBjb3VsZCBiZSBVVEYtOAotICogb3IgVVRGLTMyLCBmb3IgZXhhbXBsZS4gIFdoZW4gY29kaW5n
IHRvIHRoZSBVVGV4dCBhY2Nlc3MgQVBJLCBubyBhc3N1bXB0aW9ucwotICogY2FuIGJlIG1hZGUg
cmVnYXJkaW5nIHRoZSBzaXplIG9mIGNoYXJhY3RlcnMsIG9yIGhvdyBmYXIgYW4gaW5kZXgKLSAq
IG1heSBtb3ZlIHdoZW4gaXRlcmF0aW5nIGJldHdlZW4gY2hhcmFjdGVycy4KLSAqCi0gKiBBbGwg
aW5kaWNlcyBzdXBwbGllZCB0byBVVGV4dCBmdW5jdGlvbnMgYXJlIHBpbm5lZCB0byB0aGUgbGVu
Z3RoIG9mIHRoZQotICogdGV4dC4gIEFuIG91dC1vZi1ib3VuZHMgaW5kZXggaXMgbm90IGNvbnNp
ZGVyZWQgdG8gYmUgYW4gZXJyb3IsIGJ1dCBpcwotICogYWRqdXN0ZWQgdG8gYmUgaW4gdGhlIHJh
bmdlICAwIDw9IGluZGV4IDw9IGxlbmd0aCBvZiBpbnB1dCB0ZXh0LgotICoKLSAqCi0gKiBXaGVu
IGFuIGluZGV4IHBvc2l0aW9uIGlzIHJldHVybmVkIGZyb20gYSBVVGV4dCBmdW5jdGlvbiwgaXQg
d2lsbCBiZQotICogYSBuYXRpdmUgaW5kZXggdG8gdGhlIHVuZGVybHlpbmcgdGV4dC4gIEluIHRo
ZSBjYXNlIG9mIG11bHRpLXVuaXQgY2hhcmFjdGVycywKLSAqIGl0IHdpbGwgIGFsd2F5cyByZWZl
ciB0byB0aGUgZmlyc3QgcG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciwKLSAqIG5ldmVyIHRvIHRo
ZSBpbnRlcmlvci4gIFRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgdGhpbmcgYXMgc2F5aW5n
IHRoYXQKLSAqIGEgcmV0dXJuZWQgaW5kZXggd2lsbCBhbHdheXMgcG9pbnQgdG8gYSBib3VuZGFy
eSBiZXR3ZWVuIGNoYXJhY3RlcnMuCi0gKgotICogV2hlbiBhIG5hdGl2ZSBpbmRleCBpcyBzdXBw
bGllZCB0byBhIFVUZXh0IGZ1bmN0aW9uLCBhbGwgaW5kaWNlcyB0aGF0Ci0gKiByZWZlciB0byBh
bnkgcGFydCBvZiBhIG11bHRpLXVuaXQgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9uIGFyZSBjb25z
aWRlcmVkCi0gKiB0byBiZSBlcXVpdmFsZW50LiAgSW4gdGhlIGNhc2Ugb2YgbXVsdGktdW5pdCBj
aGFyYWN0ZXJzLCBhbiBpbmNvbWluZyBpbmRleAotICogd2lsbCBiZSBsb2dpY2FsbHkgbm9ybWFs
aXplZCB0byByZWZlciB0byB0aGUgc3RhcnQgb2YgdGhlIGNoYXJhY3Rlci4KLSAqIAotICogSXQg
aXMgcG9zc2libGUgdG8gdGVzdCB3aGV0aGVyIGEgbmF0aXZlIGluZGV4IGlzIG9uIGEgY29kZSBw
b2ludCBib3VuZGFyeQotICogYnkgZG9pbmcgYSB1dGV4dF9zZXROYXRpdmVJbmRleCgpIGZvbGxv
d2VkIGJ5IGEgdXRleHRfZ2V0TmF0aXZlSW5kZXgoKS4KLSAqIElmIHRoZSBpbmRleCBpcyByZXR1
cm5lZCB1bmNoYW5nZWQsIGl0IHdhcyBvbiBhIGNvZGUgcG9pbnQgYm91bmRhcnkuICBJZgotICog
YW4gYWRqdXN0ZWQgaW5kZXggaXMgcmV0dXJuZWQsIHRoZSBvcmlnaW5hbCBpbmRleCByZWZlcnJl
ZCB0byB0aGUKLSAqIGludGVyaW9yIG9mIGEgY2hhcmFjdGVyLgotICoKLSAqIDxlbT5Db252ZW50
aW9ucyBmb3IgY2FsbGluZyBVVGV4dCBmdW5jdGlvbnM8L2VtPgotICoKLSAqIE1vc3QgVVRleHQg
YWNjZXNzIGZ1bmN0aW9ucyBoYXZlIGFzIHRoZWlyIGZpcnN0IHBhcmFtZXRlciBhIChVVGV4dCAq
KSBwb2ludGVyLAotICogd2hpY2ggc3BlY2lmaWVzIHRoZSBVVGV4dCB0byBiZSB1c2VkLiAgVW5s
ZXNzIG90aGVyd2lzZSBub3RlZCwgdGhlCi0gKiBwb2ludGVyIG11c3QgcmVmZXIgdG8gYSB2YWxp
ZCwgb3BlbiBVVGV4dC4gIEF0dGVtcHRpbmcgdG8KLSAqIHVzZSBhIGNsb3NlZCBVVGV4dCBvciBw
YXNzaW5nIGEgTlVMTCBwb2ludGVyIGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IgYW5kCi0gKiB3aWxs
IHByb2R1Y2UgdW5kZWZpbmVkIHJlc3VsdHMgb3IgTlVMTCBwb2ludGVyIGV4Y2VwdGlvbnMuCi0g
KiAKLSAqIFRoZSBVVGV4dF9PcGVuIGZhbWlseSBvZiBmdW5jdGlvbnMgY2FuIGVpdGhlciBvcGVu
IGFuIGV4aXN0aW5nIChjbG9zZWQpCi0gKiBVVGV4dCwgb3IgaGVhcCBhbGxvY2F0ZSBhIG5ldyBV
VGV4dC4gIEhlcmUgaXMgc2FtcGxlIGNvZGUgZm9yIGNyZWF0aW5nCi0gKiBhIHN0YWNrLWFsbG9j
YXRlZCBVVGV4dC4KLSAqCi0gKiBcY29kZQotICogICAgY2hhciAgICAgKnMgPSB3aGF0ZXZlcigp
OyAgLy8gQSB1dGYtOCBzdHJpbmcgCi0gKiAgICBVX0Vycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7Ci0gKiAgICBVVGV4dCAgICB1dCA9IFVURVhUX0lOSVRJQUxJWkVSOwotICogICAgdXRl
eHRfb3BlblVURjgodXQsIHMsIC0xLCAmc3RhdHVzKTsKLSAqICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewotICogICAgICAgIC8vIGVycm9yIGhhbmRsaW5nCi0gKiAgICB9IGVsc2UgewotICog
ICAgICAgIC8vIHdvcmsgd2l0aCB0aGUgVVRleHQKLSAqICAgIH0KLSAqIFxlbmRjb2RlCi0gKgot
ICogQW55IGV4aXN0aW5nIFVUZXh0IHBhc3NlZCB0byBhbiBvcGVuIGZ1bmN0aW9uIF9tdXN0XyBo
YXZlIGJlZW4gaW5pdGlhbGl6ZWQsIAotICogZWl0aGVyIGJ5IHRoZSBVVEVYVF9JTklUSUFMSVpF
Uiwgb3IgYnkgaGF2aW5nIGJlZW4gb3JpZ2luYWxseSBoZWFwLWFsbG9jYXRlZAotICogYnkgYW4g
b3BlbiBmdW5jdGlvbi4gIFBhc3NpbmcgTlVMTCB3aWxsIGNhdXNlIHRoZSBvcGVuIGZ1bmN0aW9u
IHRvCi0gKiBoZWFwLWFsbG9jYXRlIGFuZCBmdWxseSBpbml0aWFsaXplIGEgbmV3IFVUZXh0Lgot
ICoKLSAqLwotCi0KLQotI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCi0jaW5jbHVkZSAidW5p
Y29kZS91Y2hhci5oIgotI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCi0jaW5jbHVkZSAidW5pY29k
ZS9sb2NhbHBvaW50ZXIuaCIKLSNpbmNsdWRlICJ1bmljb2RlL3JlcC5oIgotI2luY2x1ZGUgInVu
aWNvZGUvdW5pc3RyLmgiCi0jaW5jbHVkZSAidW5pY29kZS9jaGFyaXRlci5oIgotI2VuZGlmCi0K
LQotVV9DREVDTF9CRUdJTgotCi1zdHJ1Y3QgVVRleHQ7Ci10eXBlZGVmIHN0cnVjdCBVVGV4dCBV
VGV4dDsgLyoqPCBDIHR5cGVkZWYgZm9yIHN0cnVjdCBVVGV4dC4gQHN0YWJsZSBJQ1UgMy42ICov
Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICAgQyBGdW5jdGlv
bnMgZm9yIGNyZWF0aW5nIFVUZXh0IHdyYXBwZXJzIGFyb3VuZCB2YXJpb3VzIGtpbmRzIG9mIHRl
eHQgc3RyaW5ncy4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotCi0v
KioKLSAgKiBDbG9zZSBmdW5jdGlvbiBmb3IgVVRleHQgaW5zdGFuY2VzLgotICAqIENsZWFucyB1
cCwgcmVsZWFzZXMgYW55IHJlc291cmNlcyBiZWluZyBoZWxkIGJ5IGFuIG9wZW4gVVRleHQuCi0g
ICogPHA+Ci0gICogICBJZiB0aGUgVVRleHQgd2FzIG9yaWdpbmFsbHkgYWxsb2NhdGVkIGJ5IG9u
ZSBvZiB0aGUgdXRleHRfb3BlbiBmdW5jdGlvbnMsCi0gICogICB0aGUgc3RvcmFnZSBhc3NvY2lh
dGVkIHdpdGggdGhlIHV0ZXh0IHdpbGwgYWxzbyBiZSBmcmVlZC4KLSAgKiAgIElmIHRoZSBVVGV4
dCBzdG9yYWdlIG9yaWdpbmF0ZWQgd2l0aCB0aGUgYXBwbGljYXRpb24sIGFzIGl0IHdvdWxkIHdp
dGgKLSAgKiAgIGEgbG9jYWwgb3Igc3RhdGljIGluc3RhbmNlLCB0aGUgc3RvcmFnZSB3aWxsIG5v
dCBiZSBkZWxldGVkLgotICAqCi0gICogICBBbiBvcGVuIFVUZXh0IGNhbiBiZSByZXNldCB0byBy
ZWZlciB0byBuZXcgc3RyaW5nIGJ5IHVzaW5nIG9uZSBvZiB0aGUgdXRleHRfb3BlbigpCi0gICog
ICBmdW5jdGlvbnMgd2l0aG91dCBmaXJzdCBjbG9zaW5nIHRoZSBVVGV4dC4gIAotICAqCi0gICog
QHBhcmFtIHV0ICBUaGUgVVRleHQgdG8gYmUgY2xvc2VkLgotICAqIEByZXR1cm4gICAgTlVMTCBp
ZiB0aGUgVVRleHQgc3RydWN0IHdhcyBkZWxldGVkIGJ5IHRoZSBjbG9zZS4gIElmIHRoZSBVVGV4
dCBzdHJ1Y3QKLSAgKiAgICAgICAgICAgIHdhcyBvcmlnaW5hbGx5IHByb3ZpZGVkIGJ5IHRoZSBj
YWxsZXIgdG8gdGhlIG9wZW4gZnVuY3Rpb24sIGl0IGlzCi0gICogICAgICAgICAgICByZXR1cm5l
ZCBieSB0aGlzIGZ1bmN0aW9uLCBhbmQgbWF5IGJlIHNhZmVseSB1c2VkIGFnYWluIGluCi0gICog
ICAgICAgICAgICBhIHN1YnNlcXVlbnQgdXRleHRfb3Blbi4KLSAgKgotICAqIEBzdGFibGUgSUNV
IDMuNAotICAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X2Nsb3NlKFVUZXh0
ICp1dCk7Ci0KLSNpZiBVX1NIT1dfQ1BMVVNQTFVTX0FQSQotCi1VX05BTUVTUEFDRV9CRUdJTgot
Ci0vKioKLSAqIFxjbGFzcyBMb2NhbFVUZXh0UG9pbnRlcgotICogIlNtYXJ0IHBvaW50ZXIiIGNs
YXNzLCBjbG9zZXMgYSBVVGV4dCB2aWEgdXRleHRfY2xvc2UoKS4KLSAqIEZvciBtb3N0IG1ldGhv
ZHMgc2VlIHRoZSBMb2NhbFBvaW50ZXJCYXNlIGJhc2UgY2xhc3MuCi0gKgotICogQHNlZSBMb2Nh
bFBvaW50ZXJCYXNlCi0gKiBAc2VlIExvY2FsUG9pbnRlcgotICogQHN0YWJsZSBJQ1UgNC40Ci0g
Ki8KLVVfREVGSU5FX0xPQ0FMX09QRU5fUE9JTlRFUihMb2NhbFVUZXh0UG9pbnRlciwgVVRleHQs
IHV0ZXh0X2Nsb3NlKTsKLQotVV9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRpZgotCi0vKioKLSAqIE9w
ZW4gYSByZWFkLW9ubHkgVVRleHQgaW1wbGVtZW50YXRpb24gZm9yIFVURi04IHN0cmluZ3MuCi0g
KiAKLSAqIFxodG1sb25seQotICogQW55IGludmFsaWQgVVRGLTggaW4gdGhlIGlucHV0IHdpbGwg
YmUgaGFuZGxlZCBpbiB0aGlzIHdheToKLSAqIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgdGhhdCBoYXMg
dGhlIGZvcm0gb2YgYSB0cnVuY2F0ZWQsIGJ1dCBvdGhlcndpc2UgdmFsaWQsCi0gKiBVVEYtOCBz
ZXF1ZW5jZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IGEgc2luZ2xlIHVuaWNvZGUgcmVwbGFjZW1lbnQg
Y2hhcmFjdGVyLCBcdUZGRkQuIAotICogQW55IG90aGVyIGlsbGVnYWwgYnl0ZXMgd2lsbCBlYWNo
IGJlIHJlcGxhY2VkIGJ5IGEgXHVGRkZELgotICogXGVuZGh0bWxvbmx5Ci0gKiAKLSAqIEBwYXJh
bSB1dCAgICAgUG9pbnRlciB0byBhIFVUZXh0IHN0cnVjdC4gIElmIE5VTEwsIGEgbmV3IFVUZXh0
IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAgICAgICAgICAgSWYgbm9uLU5VTEwsIG11c3QgcmVm
ZXIgdG8gYW4gaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0LCB3aGljaCB3aWxsIHRoZW4KLSAqICAg
ICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgVVRGLTggc3Ry
aW5nLgotICogQHBhcmFtIHMgICAgICBBIFVURi04IHN0cmluZy4gIE11c3Qgbm90IGJlIE5VTEwu
Ci0gKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIFVURi04IHN0cmluZyBpbiBieXRl
cywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcwotICogICAgICAgICAgICAgICB6ZXJvIHRlcm1pbmF0
ZWQuCi0gKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KLSAqIEByZXR1
cm4gICAgICAgQSBwb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgcHJlLWFsbG9jYXRlZCBVVGV4
dCB3YXMgcHJvdmlkZWQsIGl0Ci0gKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQg
YW5kIHJldHVybmVkLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVUZXh0ICog
VV9FWFBPUlQyCi11dGV4dF9vcGVuVVRGOChVVGV4dCAqdXQsIGNvbnN0IGNoYXIgKnMsIGludDY0
X3QgbGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0KLS8qKgotICogT3BlbiBhIHJlYWQt
b25seSBVVGV4dCBmb3IgVUNoYXIgKiBzdHJpbmcuCi0gKiAKLSAqIEBwYXJhbSB1dCAgICAgUG9p
bnRlciB0byBhIFVUZXh0IHN0cnVjdC4gIElmIE5VTEwsIGEgbmV3IFVUZXh0IHdpbGwgYmUgY3Jl
YXRlZC4KLSAqICAgICAgICAgICAgICAgSWYgbm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gaW5p
dGlhbGl6ZWQgVVRleHQgc3RydWN0LCB3aGljaCB3aWxsIHRoZW4KLSAqICAgICAgICAgICAgICAg
YmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgVUNoYXIgc3RyaW5nLgotICogQHBh
cmFtIHMgICAgICBBIFVDaGFyIChVVEYtMTYpIHN0cmluZwotICogQHBhcmFtIGxlbmd0aCBUaGUg
bnVtYmVyIG9mIFVDaGFycyBpbiB0aGUgaW5wdXQgc3RyaW5nLCBvciAtMSBpZiB0aGUgc3RyaW5n
IGlzCi0gKiAgICAgICAgICAgICAgIHplcm8gdGVybWluYXRlZC4KLSAqIEBwYXJhbSBzdGF0dXMg
RXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgotICogQHJldHVybiAgICAgICBBIHBvaW50ZXIgdG8g
dGhlIFVUZXh0LiAgSWYgYSBwcmUtYWxsb2NhdGVkIFVUZXh0IHdhcyBwcm92aWRlZCwgaXQKLSAq
ICAgICAgICAgICAgICAgd2lsbCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCi0gKiBAc3Rh
YmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X29wZW5V
Q2hhcnMoVVRleHQgKnV0LCBjb25zdCBVQ2hhciAqcywgaW50NjRfdCBsZW5ndGgsIFVFcnJvckNv
ZGUgKnN0YXR1cyk7Ci0KLQotI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCi0vKioKLSAqIE9wZW4g
YSB3cml0YWJsZSBVVGV4dCBmb3IgYSBub24tY29uc3QgVW5pY29kZVN0cmluZy4gCi0gKiAKLSAq
IEBwYXJhbSB1dCAgICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5l
dyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCi0gKiAgICAgICAgICAgICAgICAgSWYgbm9uLU5VTEws
IG11c3QgcmVmZXIgdG8gYW4gaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0LCB3aGljaCB3aWxsIHRo
ZW4KLSAqICAgICAgICAgICAgICAgICBiZSByZXNldCB0byByZWZlcmVuY2UgdGhlIHNwZWNpZmll
ZCBpbnB1dCBzdHJpbmcuCi0gKiBAcGFyYW0gcyAgICAgICBBIFVuaWNvZGVTdHJpbmcuCi0gKiBA
cGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KLSAqIEByZXR1cm4gICAgICAg
IFBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYgYSBVVGV4dCB3YXMgc3VwcGxpZWQgYXMgaW5wdXQs
IHRoaXMKLSAqICAgICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5l
ZC4KLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgot
dXRleHRfb3BlblVuaWNvZGVTdHJpbmcoVVRleHQgKnV0LCBpY3U6OlVuaWNvZGVTdHJpbmcgKnMs
IFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotLyoqCi0gKiBPcGVuIGEgVVRleHQgZm9yIGEgY29u
c3QgVW5pY29kZVN0cmluZy4gICBUaGUgcmVzdWx0aW5nIFVUZXh0IHdpbGwgbm90IGJlIHdyaXRh
YmxlLgotICogCi0gKiBAcGFyYW0gdXQgICAgUG9pbnRlciB0byBhIFVUZXh0IHN0cnVjdC4gIElm
IE5VTEwsIGEgbmV3IFVUZXh0IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAgICAgICAgICAgSWYg
bm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0LCB3aGlj
aCB3aWxsIHRoZW4KLSAqICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBz
cGVjaWZpZWQgaW5wdXQgc3RyaW5nLgotICogQHBhcmFtIHMgICAgICBBIGNvbnN0IFVuaWNvZGVT
dHJpbmcgdG8gYmUgd3JhcHBlZC4KLSAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5l
ZCBoZXJlLgotICogQHJldHVybiAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgVVRl
eHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCi0gKiAgICAgICAgICAgICAgIHdpbGwgYWx3
YXlzIGJlIHVzZWQgYW5kIHJldHVybmVkLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCi11dGV4dF9vcGVuQ29uc3RVbmljb2RlU3RyaW5nKFVUZXh0
ICp1dCwgY29uc3QgaWN1OjpVbmljb2RlU3RyaW5nICpzLCBVRXJyb3JDb2RlICpzdGF0dXMpOwot
Ci0KLS8qKgotICogT3BlbiBhIHdyaXRhYmxlIFVUZXh0IGltcGxlbWVudGF0aW9uIGZvciBhbiBJ
Q1UgUmVwbGFjZWFibGUgb2JqZWN0LgotICogQHBhcmFtIHV0ICAgIFBvaW50ZXIgdG8gYSBVVGV4
dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCi0gKiAgICAg
ICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGFscmVhZHkgZXhpc3Rpbmcg
VVRleHQsIHdoaWNoIHdpbGwgdGhlbgotICogICAgICAgICAgICAgICBiZSByZXNldCB0byByZWZl
cmVuY2UgdGhlIHNwZWNpZmllZCByZXBsYWNlYWJsZSB0ZXh0LgotICogQHBhcmFtIHJlcCAgICBB
IFJlcGxhY2VhYmxlIHRleHQgb2JqZWN0LgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuCi0gKiBAcmV0dXJuICAgICAgIFBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYg
YSBVVGV4dCB3YXMgc3VwcGxpZWQgYXMgaW5wdXQsIHRoaXMKLSAqICAgICAgICAgICAgICAgd2ls
bCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCi0gKiBAc2VlIFJlcGxhY2VhYmxlCi0gKiBA
c3RhYmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X29w
ZW5SZXBsYWNlYWJsZShVVGV4dCAqdXQsIGljdTo6UmVwbGFjZWFibGUgKnJlcCwgVUVycm9yQ29k
ZSAqc3RhdHVzKTsKLQotLyoqCi0gKiBPcGVuIGEgIFVUZXh0IGltcGxlbWVudGF0aW9uIG92ZXIg
YW4gSUNVIENoYXJhY3Rlckl0ZXJhdG9yLgotICogQHBhcmFtIHV0ICAgIFBvaW50ZXIgdG8gYSBV
VGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCi0gKiAg
ICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGFscmVhZHkgZXhpc3Rp
bmcgVVRleHQsIHdoaWNoIHdpbGwgdGhlbgotICogICAgICAgICAgICAgICBiZSByZXNldCB0byBy
ZWZlcmVuY2UgdGhlIHNwZWNpZmllZCByZXBsYWNlYWJsZSB0ZXh0LgotICogQHBhcmFtIGNpICAg
ICBBIENoYXJhY3RlciBJdGVyYXRvci4KLSAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1
cm5lZCBoZXJlLgotICogQHJldHVybiAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEg
VVRleHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCi0gKiAgICAgICAgICAgICAgIHdpbGwg
YWx3YXlzIGJlIHVzZWQgYW5kIHJldHVybmVkLgotICogQHNlZSBSZXBsYWNlYWJsZQotICogQHN0
YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCi11dGV4dF9vcGVu
Q2hhcmFjdGVySXRlcmF0b3IoVVRleHQgKnV0LCBpY3U6OkNoYXJhY3Rlckl0ZXJhdG9yICpjaSwg
VUVycm9yQ29kZSAqc3RhdHVzKTsKLQotI2VuZGlmCi0KLQotLyoqCi0gICogIENsb25lIGEgVVRl
eHQuICBUaGlzIGlzIG11Y2ggbGlrZSBvcGVuaW5nIGEgVVRleHQgd2hlcmUgdGhlIHNvdXJjZSB0
ZXh0IGlzIGl0c2VsZgotICAqICBhbm90aGVyIFVUZXh0LgotICAqCi0gICogIEEgZGVlcCBjbG9u
ZSB3aWxsIGNvcHkgYm90aCB0aGUgVVRleHQgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGUgdW5kZXJs
eWluZyB0ZXh0LgotICAqICBUaGUgb3JpZ2luYWwgYW5kIGNsb25lZCBVVGV4dCB3aWxsIG9wZXJh
dGUgY29tcGxldGVseSBpbmRlcGVuZGVudGx5OyBtb2RpZmljYXRpb25zCi0gICogIG1hZGUgdG8g
dGhlIHRleHQgaW4gb25lIHdpbGwgbm90IGFmZmVjdCB0aGUgb3RoZXIuICBUZXh0IHByb3ZpZGVy
cyBhcmUgbm90Ci0gICogIHJlcXVpcmVkIHRvIHN1cHBvcnQgZGVlcCBjbG9uZXMuICBUaGUgdXNl
ciBvZiBjbG9uZSgpIG11c3QgY2hlY2sgdGhlIHN0YXR1cyByZXR1cm4KLSAgKiAgYW5kIGJlIHBy
ZXBhcmVkIHRvIGhhbmRsZSBmYWlsdXJlcy4KLSAgKgotICAqICBUaGUgc3RhbmRhcmQgVVRleHQg
aW1wbGVtZW50YXRpb25zIGZvciBVVEY4LCBVQ2hhciAqLCBVbmljb2RlU3RyaW5nIGFuZAotICAq
ICBSZXBsYWNlYWJsZSBhbGwgc3VwcG9ydCBkZWVwIGNsb25pbmcuCi0gICoKLSAgKiAgVGhlIFVU
ZXh0IHJldHVybmVkIGZyb20gYSBkZWVwIGNsb25lIHdpbGwgYmUgd3JpdGFibGUsIGFzc3VtaW5n
IHRoYXQgdGhlIHRleHQKLSAgKiAgcHJvdmlkZXIgaXMgYWJsZSB0byBzdXBwb3J0IHdyaXRpbmcs
IGV2ZW4gaWYgdGhlIHNvdXJjZSBVVGV4dCBoYWQgYmVlbiBtYWRlCi0gICogIG5vbi13cml0YWJs
ZSBieSBtZWFucyBvZiBVVGV4dF9mcmVlemUoKS4KLSAgKgotICAqICBBIHNoYWxsb3cgY2xvbmUg
cmVwbGljYXRlcyBvbmx5IHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXM7IGl0IGRvZXMgbm90IG1h
a2UKLSAgKiAgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIHRleHQuICBTaGFsbG93IGNsb25lcyBj
YW4gYmUgdXNlZCBhcyBhbiBlZmZpY2llbnQgd2F5IHRvIAotICAqICBoYXZlIG11bHRpcGxlIGl0
ZXJhdG9ycyBhY3RpdmUgaW4gYSBzaW5nbGUgdGV4dCBzdHJpbmcgdGhhdCBpcyBub3QgYmVpbmcK
LSAgKiAgbW9kaWZpZWQuCi0gICoKLSAgKiAgQSBzaGFsbG93IGNsb25lIG9wZXJhdGlvbiB3aWxs
IG5vdCBmYWlsLCBiYXJyaW5nIHRydWx5IGV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMgc3VjaAotICAq
ICBhcyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4KLSAgKgotICAqICBTaGFsbG93IFVUZXh0
IGNsb25lcyBzaG91bGQgYmUgYXZvaWRlZCBpZiB0aGUgVVRleHQgZnVuY3Rpb25zIHRoYXQgbW9k
aWZ5IHRoZQotICAqICB0ZXh0IGFyZSBleHBlY3RlZCB0byBiZSB1c2VkLCBlaXRoZXIgb24gdGhl
IG9yaWdpbmFsIG9yIHRoZSBjbG9uZWQgVVRleHQuCi0gICogIEFueSBzdWNoIG1vZGlmaWNhdGlv
bnMgIGNhbiBjYXVzZSB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLiAgUmVhZCBPbmx5Ci0gICogIHNo
YWxsb3cgY2xvbmVzIHByb3ZpZGUgc29tZSBwcm90ZWN0aW9uIGFnYWluc3QgZXJyb3JzIG9mIHRo
aXMgdHlwZSBieQotICAqICBkaXNhYmxpbmcgdGV4dCBtb2RpZmljYXRpb24gdmlhIHRoZSBjbG9u
ZWQgVVRleHQuCi0gICoKLSAgKiAgQSBzaGFsbG93IGNsb25lIG1hZGUgd2l0aCB0aGUgcmVhZE9u
bHkgcGFyYW1ldGVyID09IEZBTFNFIHdpbGwgcHJlc2VydmUgdGhlIAotICAqICB1dGV4dF9pc1dy
aXRhYmxlKCkgc3RhdGUgb2YgdGhlIHNvdXJjZSBvYmplY3QuICBOb3RlLCBob3dldmVyLCB0aGF0
Ci0gICogIHdyaXRlIG9wZXJhdGlvbnMgbXVzdCBiZSBhdm9pZGVkIHdoaWxlIG1vcmUgdGhhbiBv
bmUgVVRleHQgZXhpc3RzIHRoYXQgcmVmZXIKLSAgKiAgdG8gdGhlIHNhbWUgdW5kZXJseWluZyB0
ZXh0LgotICAqCi0gICogIEEgVVRleHQgYW5kIGl0cyBjbG9uZSBtYXkgYmUgc2FmZWx5IGNvbmN1
cnJlbnRseSBhY2Nlc3NlZCBieSBzZXBhcmF0ZSB0aHJlYWRzLgotICAqICBUaGlzIGlzIHRydWUg
Zm9yIHJlYWQgYWNjZXNzIG9ubHkgd2l0aCBzaGFsbG93IGNsb25lcywgYW5kIGZvciBib3RoIHJl
YWQgYW5kCi0gICogIHdyaXRlIGFjY2VzcyB3aXRoIGRlZXAgY2xvbmVzLgotICAqICBJdCBpcyB0
aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIFRleHQgUHJvdmlkZXIgdG8gZW5zdXJlIHRoYXQgdGhp
cyB0aHJlYWQgc2FmZXR5Ci0gICogIGNvbnN0cmFpbnQgaXMgbWV0LgotICAqCi0gICogIEBwYXJh
bSBkZXN0ICAgQSBVVGV4dCBzdHJ1Y3QgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhlIHJlc3VsdCBv
ZiB0aGUgY2xvbmUgb3BlcmF0aW9uLAotICAqICAgICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhl
IGNsb25lIGZ1bmN0aW9uIHNob3VsZCBoZWFwLWFsbG9jYXRlIGEgbmV3IFVUZXh0IHN0cnVjdC4K
LSAgKiAgICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCByZWZlciB0byBhbiBhbHJlYWR5
IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4KLSAgKiAgICAgICAgICAgICAgICBiZSBy
ZXNldCB0byBiZWNvbWUgdGhlIGNsb25lLgotICAqICBAcGFyYW0gc3JjICAgIFRoZSBVVGV4dCB0
byBiZSBjbG9uZWQuCi0gICogIEBwYXJhbSBkZWVwICAgVFJVRSB0byByZXF1ZXN0IGEgZGVlcCBj
bG9uZSwgRkFMU0UgZm9yIGEgc2hhbGxvdyBjbG9uZS4KLSAgKiAgQHBhcmFtIHJlYWRPbmx5IFRS
VUUgdG8gcmVxdWVzdCB0aGF0IHRoZSBjbG9uZWQgVVRleHQgaGF2ZSByZWFkIG9ubHkgYWNjZXNz
IHRvIHRoZSAKLSAgKiAgICAgICAgICAgICAgICB1bmRlcmx5aW5nIHRleHQuICAKLQotICAqICBA
cGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4gIEZvciBkZWVwIGNsb25lcywg
VV9VTlNVUFBPUlRFRF9FUlJPUgotICAqICAgICAgICAgICAgICAgIHdpbGwgYmUgcmV0dXJuZWQg
aWYgdGhlIHRleHQgcHJvdmlkZXIgaXMgdW5hYmxlIHRvIGNsb25lIHRoZQotICAqICAgICAgICAg
ICAgICAgIG9yaWdpbmFsIHRleHQuCi0gICogIEByZXR1cm4gICAgICAgVGhlIG5ld2x5IGNyZWF0
ZWQgY2xvbmUsIG9yIE5VTEwgaWYgdGhlIGNsb25lIG9wZXJhdGlvbiBmYWlsZWQuCi0gICogIEBz
dGFibGUgSUNVIDMuNAotICAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X2Ns
b25lKFVUZXh0ICpkZXN0LCBjb25zdCBVVGV4dCAqc3JjLCBVQm9vbCBkZWVwLCBVQm9vbCByZWFk
T25seSwgVUVycm9yQ29kZSAqc3RhdHVzKTsKLQotCi0vKioKLSAgKiAgQ29tcGFyZSB0d28gVVRl
eHQgb2JqZWN0cyBmb3IgZXF1YWxpdHkuCi0gICogIFVUZXh0cyBhcmUgZXF1YWwgaWYgdGhleSBh
cmUgaXRlcmF0aW5nIG92ZXIgdGhlIHNhbWUgdGV4dCwgYW5kCi0gICogICAgaGF2ZSB0aGUgc2Ft
ZSBpdGVyYXRpb24gcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0LgotICAqICAgIElmIGVpdGhlciBv
ciBib3RoIG9mIHRoZSBwYXJhbWV0ZXJzIGFyZSBOVUxMLCB0aGUgY29tcGFyaXNvbiBpcyBGQUxT
RS4KLSAgKgotICAqICBAcGFyYW0gYSAgIFRoZSBmaXJzdCBvZiB0aGUgdHdvIFVUZXh0cyB0byBj
b21wYXJlLgotICAqICBAcGFyYW0gYiAgIFRoZSBvdGhlciBVVGV4dCB0byBiZSBjb21wYXJlZC4K
LSAgKiAgQHJldHVybiAgICBUUlVFIGlmIHRoZSB0d28gVVRleHRzIGFyZSBlcXVhbC4KLSAgKiAg
QHN0YWJsZSBJQ1UgMy42Ci0gICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXV0ZXh0X2Vx
dWFscyhjb25zdCBVVGV4dCAqYSwgY29uc3QgVVRleHQgKmIpOwotCi0KLS8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgotICoKLSAqICAgRnVuY3Rpb25zIHRvIHdvcmsgd2l0aCB0aGUgdGV4dCByZXByZXNl
dGVkIGJ5IGEgVVRleHQgd3JhcHBlcgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoq
Ci0gICogR2V0IHRoZSBsZW5ndGggb2YgdGhlIHRleHQuICBEZXBlbmRpbmcgb24gdGhlIGNoYXJh
Y3RlcmlzdGljcwotICAqIG9mIHRoZSB1bmRlcmx5aW5nIHRleHQgcmVwcmVzZW50YXRpb24sIHRo
aXMgbWF5IGJlIGV4cGVuc2l2ZS4gIAotICAqIEBzZWUgIHV0ZXh0X2lzTGVuZ3RoRXhwZW5zaXZl
KCkKLSAgKgotICAqCi0gICogQHBhcmFtIHV0ICB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KLSAg
KiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQsIGV4cHJlc3NlZCBpbiBuYXRpdmUgdW5p
dHMuCi0gICoKLSAgKiBAc3RhYmxlIElDVSAzLjQKLSAgKi8KLVVfU1RBQkxFIGludDY0X3QgVV9F
WFBPUlQyCi11dGV4dF9uYXRpdmVMZW5ndGgoVVRleHQgKnV0KTsKLQotLyoqCi0gKiAgUmV0dXJu
IFRSVUUgaWYgY2FsY3VsYXRpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBjb3VsZCBiZSBleHBl
bnNpdmUuCi0gKiAgRmluZGluZyB0aGUgbGVuZ3RoIG9mIE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3Mg
aXMgY29uc2lkZXJlZCB0byBiZSBleHBlbnNpdmUuCi0gKgotICogIE5vdGUgdGhhdCB0aGUgdmFs
dWUgb2YgdGhpcyBmdW5jdGlvbiBtYXkgY2hhbmdlCi0gKiAgYXMgdGhlIHJlc3VsdCBvZiBvdGhl
ciBvcGVyYXRpb25zIG9uIGEgVVRleHQuCi0gKiAgT25jZSB0aGUgbGVuZ3RoIG9mIGEgc3RyaW5n
IGhhcyBiZWVuIGRpc2NvdmVyZWQsIGl0IHdpbGwgbm8gbG9uZ2VyCi0gKiAgYmUgZXhwZW5zaXZl
IHRvIHJlcG9ydCBpdC4KLSAqCi0gKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQu
Ci0gKiBAcmV0dXJuIFRSVUUgaWYgZGV0ZXJtaW5pbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBj
b3VsZCBiZSB0aW1lIGNvbnN1bWluZy4KLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi1VX1NUQUJM
RSBVQm9vbCBVX0VYUE9SVDIKLXV0ZXh0X2lzTGVuZ3RoRXhwZW5zaXZlKGNvbnN0IFVUZXh0ICp1
dCk7Ci0KLS8qKgotICogUmV0dXJucyB0aGUgY29kZSBwb2ludCBhdCB0aGUgcmVxdWVzdGVkIGlu
ZGV4LAotICogb3IgVV9TRU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCi0gKgot
ICogSWYgdGhlIHNwZWNpZmllZCBpbmRleCBwb2ludHMgdG8gdGhlIGludGVyaW9yIG9mIGEgbXVs
dGktdW5pdAotICogY2hhcmFjdGVyIC0gb25lIG9mIHRoZSB0cmFpbCBieXRlcyBvZiBhIFVURi04
IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSAtCi0gKiB0aGUgY29tcGxldGUgY29kZSBwb2ludCB3aWxs
IGJlIHJldHVybmVkLgotICoKLSAqIFRoZSBpdGVyYXRpb24gcG9zaXRpb24gd2lsbCBiZSBzZXQg
dG8gdGhlIHN0YXJ0IG9mIHRoZSByZXR1cm5lZCBjb2RlIHBvaW50LgotICoKLSAqIFRoaXMgZnVu
Y3Rpb24gaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHRoZSB0aGUgc2VxdWVuY2UKLSAqICAgIHV0
ZXh0X3NldE5hdGl2ZUluZGV4KGluZGV4KTsKLSAqICAgIHV0ZXh0X2N1cnJlbnQzMigpOwotICog
KFRoZXJlIGlzIGEgc3VidGxlIGRpZmZlcmVuY2UgaWYgdGhlIGluZGV4IGlzIG91dCBvZiBib3Vu
ZHMgYnkgYmVpbmcgbGVzcyB0aGFuIHplcm8gLSAKLSAqIHV0ZXh0X3NldE5hdGl2ZUluZGV4KG5l
Z2F0aXZlIHZhbHVlKSBzZXRzIHRoZSBpbmRleCB0byB6ZXJvLCBhZnRlciB3aGljaCB1dGV4dF9j
dXJyZW50KCkKLSAqIHdpbGwgcmV0dXJuIHRoZSBjaGFyIGF0IHplcm8uICB1dGV4dF9jaGFyMzJB
dChuZWdhdGl2ZSBpbmRleCksIG9uIHRoZSBvdGhlciBoYW5kLCB3aWxsCi0gKiByZXR1cm4gdGhl
IFVfU0VOVElORUwgdmFsdWUgb2YgLTEuKQotICogCi0gKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8g
YmUgYWNjZXNzZWQKLSAqIEBwYXJhbSBuYXRpdmVJbmRleCB0aGUgbmF0aXZlIGluZGV4IG9mIHRo
ZSBjaGFyYWN0ZXIgdG8gYmUgYWNjZXNzZWQuICBJZiB0aGUgaW5kZXggcG9pbnRzCi0gKiAgICAg
ICAgdG8gb3RoZXIgdGhhbiB0aGUgZmlyc3QgdW5pdCBvZiBhIG11bHRpLXVuaXQgY2hhcmFjdGVy
LCBpdCB3aWxsIGJlIGFkanVzdGVkCi0gKiAgICAgICAgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjaGFy
YWN0ZXIuCi0gKiBAcmV0dXJuIHRoZSBjb2RlIHBvaW50IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXgu
Ci0gKiBAc3RhYmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXV0
ZXh0X2NoYXIzMkF0KFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7Ci0KLQotLyoqCi0g
KgotICogR2V0IHRoZSBjb2RlIHBvaW50IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlv
biwKLSAqIG9yIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgaXRlcmF0aW9uIGhhcyByZWFjaGVkIHRo
ZSBlbmQgb2YKLSAqIHRoZSBpbnB1dCB0ZXh0LgotICoKLSAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0
byBiZSBhY2Nlc3NlZC4KLSAqIEByZXR1cm4gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBhdCB0aGUg
Y3VycmVudCBpdGVyYXRvciBwb3NpdGlvbi4KLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi1VX1NU
QUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdXRleHRfY3VycmVudDMyKFVUZXh0ICp1dCk7Ci0KLQot
LyoqCi0gKiBHZXQgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0
aW9uIG9mIHRoZSBVVGV4dCwgYW5kCi0gKiBhZHZhbmNlIHRoZSBwb3NpdGlvbiB0byB0aGUgZmly
c3QgaW5kZXggZm9sbG93aW5nIHRoZSBjaGFyYWN0ZXIuCi0gKgotICogSWYgdGhlIHBvc2l0aW9u
IGlzIGF0IHRoZSBlbmQgb2YgdGhlIHRleHQgKHRoZSBpbmRleCBmb2xsb3dpbmcKLSAqIHRoZSBs
YXN0IGNoYXJhY3Rlciwgd2hpY2ggaXMgYWxzbyB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0KSwgCi0g
KiByZXR1cm4gVV9TRU5USU5FTCAoLTEpIGFuZCBkbyBub3QgYWR2YW5jZSB0aGUgaW5kZXguIAot
ICoKLSAqIFRoaXMgaXMgYSBwb3N0LWluY3JlbWVudCBvcGVyYXRpb24uCi0gKgotICogQW4gaW5s
aW5lIG1hY3JvIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiwgVVRFWFRfTkVYVDMyKCksIAotICog
aXMgYXZhaWxhYmxlIGZvciBwZXJmb3JtYW5jZSBjcml0aWNhbCB1c2UuCi0gKgotICogQHBhcmFt
IHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICogQHJldHVybiB0aGUgVW5pY29kZSBjb2Rl
IHBvaW50IGF0IHRoZSBpdGVyYXRpb24gcG9zaXRpb24uCi0gKiBAc2VlIFVURVhUX05FWFQzMgot
ICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCi11dGV4
dF9uZXh0MzIoVVRleHQgKnV0KTsKLQotCi0vKioKLSAqICBNb3ZlIHRoZSBpdGVyYXRvciBwb3Np
dGlvbiB0byB0aGUgY2hhcmFjdGVyIChjb2RlIHBvaW50KSB3aG9zZQotICogIGluZGV4IHByZWNl
ZGVzIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQgcmV0dXJuIHRoYXQgY2hhcmFjdGVyLgotICog
IFRoaXMgaXMgYSBwcmUtZGVjcmVtZW50IG9wZXJhdGlvbi4KLSAqCi0gKiAgSWYgdGhlIGluaXRp
YWwgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IChpbmRleCBvZiAwKSAKLSAq
ICByZXR1cm4gVV9TRU5USU5FTCAoLTEpLCBhbmQgbGVhdmUgdGhlIHBvc2l0aW9uIHVuY2hhbmdl
ZC4KLSAqCi0gKiAgQW4gaW5saW5lIG1hY3JvIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiwgVVRF
WFRfUFJFVklPVVMzMigpLCAKLSAqICBpcyBhdmFpbGFibGUgZm9yIHBlcmZvcm1hbmNlIGNyaXRp
Y2FsIHVzZS4KLSAqCi0gKiAgQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICog
IEByZXR1cm4gdGhlIHByZXZpb3VzIFVDaGFyMzIgY29kZSBwb2ludCwgb3IgVV9TRU5USU5FTCAo
LTEpIAotICogICAgICAgICAgaWYgdGhlIGl0ZXJhdGlvbiBoYXMgcmVhY2hlZCB0aGUgc3RhcnQg
b2YgdGhlIHRleHQuCi0gKiAgQHNlZSBVVEVYVF9QUkVWSU9VUzMyCi0gKiAgQHN0YWJsZSBJQ1Ug
My40Ci0gKi8KLVVfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCi11dGV4dF9wcmV2aW91czMyKFVU
ZXh0ICp1dCk7Ci0KLQotLyoqCi0gICogU2V0IHRoZSBpdGVyYXRpb24gaW5kZXggYW5kIHJldHVy
biB0aGUgY29kZSBwb2ludCBhdCB0aGF0IGluZGV4LiAKLSAgKiBMZWF2ZSB0aGUgaXRlcmF0aW9u
IGluZGV4IGF0IHRoZSBzdGFydCBvZiB0aGUgZm9sbG93aW5nIGNvZGUgcG9pbnQuCi0gICoKLSAg
KiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBtb3N0IGVmZmljaWVudCBhbmQgY29udmVuaWVudCB3YXkg
dG8KLSAgKiBiZWdpbiBhIGZvcndhcmQgaXRlcmF0aW9uLiAgVGhlIHJlc3VsdHMgYXJlIGlkZW50
aWNhbCB0byB0aGUgdGhvc2UKLSAgKiBmcm9tIHRoZSBzZXF1ZW5jZQotICAqIFxjb2RlCi0gICog
ICAgdXRleHRfc2V0SW5kZXgoKTsKLSAgKiAgICB1dGV4dF9uZXh0MzIoKTsKLSAgKiBcZW5kY29k
ZQotICAqCi0gICogIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KLSAgKiAgQHBh
cmFtIG5hdGl2ZUluZGV4IEl0ZXJhdGlvbiBpbmRleCwgaW4gdGhlIG5hdGl2ZSB1bml0cyBvZiB0
aGUgdGV4dCBwcm92aWRlci4KLSAgKiAgQHJldHVybiBDb2RlIHBvaW50IHdoaWNoIHN0YXJ0cyBh
dCBvciBiZWZvcmUgaW5kZXgsCi0gICogICAgICAgICBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQg
aXMgb3V0IG9mIGJvdW5kcy4KLSAgKiBAc3RhYmxlIElDVSAzLjQKLSAgKi8KLVVfU1RBQkxFIFVD
aGFyMzIgVV9FWFBPUlQyCi11dGV4dF9uZXh0MzJGcm9tKFVUZXh0ICp1dCwgaW50NjRfdCBuYXRp
dmVJbmRleCk7Ci0KLQotCi0vKioKLSAgKiBTZXQgdGhlIGl0ZXJhdGlvbiBpbmRleCwgYW5kIHJl
dHVybiB0aGUgY29kZSBwb2ludCBwcmVjZWRpbmcgdGhlCi0gICogb25lIHNwZWNpZmllZCBieSB0
aGUgaW5pdGlhbCBpbmRleC4gIExlYXZlIHRoZSBpdGVyYXRpb24gcG9zaXRpb24KLSAgKiBhdCB0
aGUgc3RhcnQgb2YgdGhlIHJldHVybmVkIGNvZGUgcG9pbnQuCi0gICoKLSAgKiBUaGlzIGZ1bmN0
aW9uIGlzIHRoZSBtb3N0IGVmZmljaWVudCBhbmQgY29udmVuaWVudCB3YXkgdG8KLSAgKiBiZWdp
biBhIGJhY2t3YXJkcyBpdGVyYXRpb24uCi0gICoKLSAgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8g
YmUgYWNjZXNzZWQuCi0gICogQHBhcmFtIG5hdGl2ZUluZGV4IEl0ZXJhdGlvbiBpbmRleCBpbiB0
aGUgbmF0aXZlIHVuaXRzIG9mIHRoZSB0ZXh0IHByb3ZpZGVyLgotICAqIEByZXR1cm4gQ29kZSBw
b2ludCBwcmVjZWRpbmcgdGhlIG9uZSBhdCB0aGUgaW5pdGlhbCBpbmRleCwKLSAgKiAgICAgICAg
IG9yIFVfU0VOVElORUwgKC0xKSBpZiBpdCBpcyBvdXQgb2YgYm91bmRzLgotICAqCi0gICogQHN0
YWJsZSBJQ1UgMy40Ci0gICovCi1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdXRleHRfcHJl
dmlvdXMzMkZyb20oVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KTsKLQotLyoqCi0gICog
R2V0IHRoZSBjdXJyZW50IGl0ZXJhdG9yIHBvc2l0aW9uLCB3aGljaCBjYW4gcmFuZ2UgZnJvbSAw
IHRvIAotICAqIHRoZSBsZW5ndGggb2YgdGhlIHRleHQuCi0gICogVGhlIHBvc2l0aW9uIGlzIGEg
bmF0aXZlIGluZGV4IGludG8gdGhlIGlucHV0IHRleHQsIGluIHdoYXRldmVyIGZvcm1hdCBpdAot
ICAqIG1heSBoYXZlIChwb3NzaWJseSBVVEYtOCBmb3IgZXhhbXBsZSksIGFuZCBtYXkgbm90IGFs
d2F5cyBiZSB0aGUgc2FtZSBhcwotICAqIHRoZSBjb3JyZXNwb25kaW5nIFVDaGFyIChVVEYtMTYp
IGluZGV4LgotICAqIFRoZSByZXR1cm5lZCBwb3NpdGlvbiB3aWxsIGFsd2F5cyBiZSBhbGlnbmVk
IHRvIGEgY29kZSBwb2ludCBib3VuZGFyeS4gCi0gICoKLSAgKiBAcGFyYW0gdXQgdGhlIHRleHQg
dG8gYmUgYWNjZXNzZWQuCi0gICogQHJldHVybiB0aGUgY3VycmVudCBpbmRleCBwb3NpdGlvbiwg
aW4gdGhlIG5hdGl2ZSB1bml0cyBvZiB0aGUgdGV4dCBwcm92aWRlci4KLSAgKiBAc3RhYmxlIElD
VSAzLjQKLSAgKi8KLVVfU1RBQkxFIGludDY0X3QgVV9FWFBPUlQyCi11dGV4dF9nZXROYXRpdmVJ
bmRleChjb25zdCBVVGV4dCAqdXQpOwotCi0vKioKLSAqIFNldCB0aGUgY3VycmVudCBpdGVyYXRp
b24gcG9zaXRpb24gdG8gdGhlIG5lYXJlc3QgY29kZSBwb2ludAotICogYm91bmRhcnkgYXQgb3Ig
cHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgaW5kZXguCi0gKiBUaGUgaW5kZXggaXMgaW4gdGhlIG5h
dGl2ZSB1bml0cyBvZiB0aGUgb3JpZ2luYWwgaW5wdXQgdGV4dC4KLSAqIElmIHRoZSBpbmRleCBp
cyBvdXQgb2YgcmFuZ2UsIGl0IHdpbGwgYmUgcGlubmVkIHRvIGJlIHdpdGhpbgotICogdGhlIHJh
bmdlIG9mIHRoZSBpbnB1dCB0ZXh0LgotICogPHA+Ci0gKiBJdCB3aWxsIHVzdWFsbHkgYmUgbW9y
ZSBlZmZpY2llbnQgdG8gYmVnaW4gYW4gaXRlcmF0aW9uCi0gKiB1c2luZyB0aGUgZnVuY3Rpb25z
IHV0ZXh0X25leHQzMkZyb20oKSBvciB1dGV4dF9wcmV2aW91czMyRnJvbSgpCi0gKiByYXRoZXIg
dGhhbiBzZXRJbmRleCgpLgotICogPHA+Ci0gKiBNb3ZpbmcgdGhlIGluZGV4IHBvc2l0aW9uIHRv
IGFuIGFkamFjZW50IGNoYXJhY3RlciBpcyBiZXN0IGRvbmUKLSAqIHdpdGggdXRleHRfbmV4dDMy
KCksIHV0ZXh0X3ByZXZpb3VzMzIoKSBvciB1dGV4dF9tb3ZlSW5kZXgzMigpLgotICogQXR0ZW1w
dGluZyB0byBkbyBkaXJlY3QgYXJpdGhtZXRpYyBvbiB0aGUgaW5kZXggcG9zaXRpb24gaXMKLSAq
IGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIHNpemUgKGluIG5hdGl2ZSB1bml0cykg
b2YgYQotICogY2hhcmFjdGVyIGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGNoYXJhY3RlcgotICogKFVURi04LCBVVEYtMTYsIFVURi0zMiwgYXJiaXRyYXJ5
IGNvZGVwYWdlKSwgYW5kIGlzIG5vdAotICogZWFzaWx5IGtub3dhYmxlLgotICoKLSAqIEBwYXJh
bSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KLSAqIEBwYXJhbSBuYXRpdmVJbmRleCB0aGUg
bmF0aXZlIHVuaXQgaW5kZXggb2YgdGhlIG5ldyBpdGVyYXRpb24gcG9zaXRpb24uCi0gKiBAc3Rh
YmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKLXV0ZXh0X3NldE5hdGl2
ZUluZGV4KFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7Ci0KLS8qKgotICogTW92ZSB0
aGUgaXRlcmF0b3IgcG9zdGlvbiBieSBkZWx0YSBjb2RlIHBvaW50cy4gIFRoZSBudW1iZXIgb2Yg
Y29kZSBwb2ludHMKLSAqIGlzIGEgc2lnbmVkIG51bWJlcjsgYSBuZWdhdGl2ZSBkZWx0YSB3aWxs
IG1vdmUgdGhlIGl0ZXJhdG9yIGJhY2t3YXJkcywKLSAqIHRvd2FyZHMgdGhlIHN0YXJ0IG9mIHRo
ZSB0ZXh0LgotICogPHA+Ci0gKiBUaGUgaW5kZXggaXMgbW92ZWQgYnkgPGNvZGU+ZGVsdGE8L2Nv
ZGU+IGNvZGUgcG9pbnRzCi0gKiBmb3J3YXJkIG9yIGJhY2t3YXJkLCBidXQgbm8gZnVydGhlciBi
YWNrd2FyZCB0aGFuIHRvIDAgYW5kCi0gKiBubyBmdXJ0aGVyIGZvcndhcmQgdGhhbiB0byB1dGV4
dF9uYXRpdmVMZW5ndGgoKS4KLSAqIFRoZSByZXN1bHRpbmcgaW5kZXggdmFsdWUgd2lsbCBiZSBp
biBiZXR3ZWVuIDAgYW5kIGxlbmd0aCwgaW5jbHVzaXZlLgotICoKLSAqIEBwYXJhbSB1dCB0aGUg
dGV4dCB0byBiZSBhY2Nlc3NlZC4KLSAqIEBwYXJhbSBkZWx0YSB0aGUgc2lnbmVkIG51bWJlciBv
ZiBjb2RlIHBvaW50cyB0byBtb3ZlIHRoZSBpdGVyYXRpb24gcG9zaXRpb24uCi0gKiBAcmV0dXJu
IFRSVUUgaWYgdGhlIHBvc2l0aW9uIGNvdWxkIGJlIG1vdmVkIHRoZSByZXF1ZXN0ZWQgbnVtYmVy
IG9mIHBvc2l0aW9ucyB3aGlsZQotICogICAgICAgICAgICAgIHN0YXlpbmcgd2l0aGluIHRoZSBy
YW5nZSBbMCAtIHRleHQgbGVuZ3RoXS4KLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi1VX1NUQUJM
RSBVQm9vbCBVX0VYUE9SVDIKLXV0ZXh0X21vdmVJbmRleDMyKFVUZXh0ICp1dCwgaW50MzJfdCBk
ZWx0YSk7Ci0KLS8qKgotICogR2V0IHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBw
cmVjZWVkaW5nIHRoZSBjdXJyZW50IHBvc2l0aW9uLgotICogSWYgdGhlIGl0ZXJhdGlvbiBwb3Np
dGlvbiBpcyBhbHJlYWR5IGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCwgemVybwotICogaXMgcmV0
dXJuZWQuCi0gKiBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgdGhlIHNhbWUgYXMgdGhhdCBvYnRhaW5l
ZCBmcm9tIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2UsCi0gKiBidXQgd2l0aG91dCB0aGUgc2lkZSBl
ZmZlY3Qgb2YgY2hhbmdpbmcgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbi4KLSAqICAgCi0gKiBcY29k
ZQotICogICAgVVRleHQgICp1dCA9IHdoYXRldmVyOwotICogICAgICAuLi4KLSAqICAgIHV0ZXh0
X3ByZXZpb3VzKHV0KQotICogICAgdXRleHRfZ2V0TmF0aXZlSW5kZXgodXQpOwotICogXGVuZGNv
ZGUKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIG1vc3QgdXNlZnVsIGR1cmluZyBmb3J3YXJkcyBp
dGVyYXRpb24sIHdoZXJlIGl0IHdpbGwgZ2V0IHRoZQotICogICBuYXRpdmUgaW5kZXggb2YgdGhl
IGNoYXJhY3RlciBtb3N0IHJlY2VudGx5IHJldHVybmVkIGZyb20gdXRleHRfbmV4dCgpLgotICoK
LSAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZAotICogQHJldHVybiB0aGUgbmF0
aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgY3VycmVudCBpbmRleCBw
b3NpdGlvbiwKLSAqICAgICAgICAgb3IgemVybyBpZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBh
dCB0aGUgc3RhcnQgb2YgdGhlIHRleHQuCi0gKiBAc3RhYmxlIElDVSAzLjYKLSAqLwotVV9TVEFC
TEUgaW50NjRfdCBVX0VYUE9SVDIKLXV0ZXh0X2dldFByZXZpb3VzTmF0aXZlSW5kZXgoVVRleHQg
KnV0KTsgCi0KLQotLyoqCi0gKgotICogRXh0cmFjdCB0ZXh0IGZyb20gYSBVVGV4dCBpbnRvIGEg
VUNoYXIgYnVmZmVyLiAgVGhlIHJhbmdlIG9mIHRleHQgdG8gYmUgZXh0cmFjdGVkCi0gKiBpcyBz
cGVjaWZpZWQgaW4gdGhlIG5hdGl2ZSBpbmRpY2VzIG9mIHRoZSBVVGV4dCBwcm92aWRlci4gIFRo
ZXNlIG1heSBub3QgbmVjZXNzYXJpbHkKLSAqIGJlIFVURi0xNiBpbmRpY2VzLgotICogPHA+Ci0g
KiBUaGUgc2l6ZSAobnVtYmVyIG9mIDE2IGJpdCBVQ2hhcnMpIG9mIHRoZSBkYXRhIHRvIGJlIGV4
dHJhY3RlZCBpcyByZXR1cm5lZC4gIFRoZQotICogZnVsbCBudW1iZXIgb2YgVUNoYXJzIGlzIHJl
dHVybmVkLCBldmVuIHdoZW4gdGhlIGV4dHJhY3RlZCB0ZXh0IGlzIHRydW5jYXRlZAotICogYmVj
YXVzZSB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBzaXplIGlzIHRvbyBzbWFsbC4KLSAqIDxwPgotICog
VGhlIGV4dHJhY3RlZCBzdHJpbmcgd2lsbCAoaWYgeW91IGFyZSBhIHVzZXIpIC8gbXVzdCAoaWYg
eW91IGFyZSBhIHRleHQgcHJvdmlkZXIpCi0gKiBiZSBOVUwtdGVybWluYXRlZCBpZiB0aGVyZSBp
cyBzdWZmaWNpZW50IHNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuICBUaGlzCi0gKiB0
ZXJtaW5hdGluZyBOVUwgaXMgbm90IGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBsZW5ndGguCi0g
KiA8cD4KLSAqIFRoZSBpdGVyYXRpb24gaW5kZXggaXMgbGVmdCBhdCB0aGUgcG9zaXRpb24gZm9s
bG93aW5nIHRoZSBsYXN0IGV4dHJhY3RlZCBjaGFyYWN0ZXIuCi0gKgotICogQHBhcmFtICB1dCAg
ICB0aGUgVVRleHQgZnJvbSB3aGljaCB0byBleHRyYWN0IGRhdGEuCi0gKiBAcGFyYW0gIG5hdGl2
ZVN0YXJ0IHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBleHRyYWN0
LlwKLSAqICAgICAgICAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBvdXQgb2YgcmFu
Z2UsCi0gKiAgICAgICAgICAgICAgIGl0IHdpbGwgYmUgcGlubmVkIHRvIHRvIGJlIHdpdGhpbiAw
IDw9IGluZGV4IDw9IHRleHRMZW5ndGgKLSAqIEBwYXJhbSAgbmF0aXZlTGltaXQgdGhlIG5hdGl2
ZSBzdHJpbmcgaW5kZXggb2YgdGhlIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgbGFzdAotICogICAg
ICAgICAgICAgICBjaGFyYWN0ZXIgdG8gZXh0cmFjdC4gIElmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
aXMgb3V0IG9mIHJhbmdlLAotICogICAgICAgICAgICAgICBpdCB3aWxsIGJlIHBpbm5lZCB0byB0
byBiZSB3aXRoaW4gMCA8PSBpbmRleCA8PSB0ZXh0TGVuZ3RoLgotICogICAgICAgICAgICAgICBu
YXRpdmVMaW1pdCBtdXN0IGJlID49IG5hdGl2ZVN0YXJ0LgotICogQHBhcmFtICBkZXN0ICB0aGUg
VUNoYXIgKFVURi0xNikgYnVmZmVyIGludG8gd2hpY2ggdGhlIGV4dHJhY3RlZCB0ZXh0IGlzIHBs
YWNlZAotICogQHBhcmFtICBkZXN0Q2FwYWNpdHkgIFRoZSBzaXplLCBpbiBVQ2hhcnMsIG9mIHRo
ZSBkZXN0aW5hdGlvbiBidWZmZXIuICBNYXkgYmUgemVybwotICogICAgICAgICAgICAgICBmb3Ig
cHJlY29tcHV0aW5nIHRoZSByZXF1aXJlZCBzaXplLgotICogQHBhcmFtICBzdGF0dXMgcmVjZWl2
ZXMgYW55IGVycm9yIHN0YXR1cy4KLSAqICAgICAgICAgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I6
IHRoZSBleHRyYWN0ZWQgdGV4dCB3YXMgdHJ1bmNhdGVkIGJlY2F1c2UgdGhlIAotICogICAgICAg
ICBidWZmZXIgd2FzIHRvbyBzbWFsbC4gIFJldHVybnMgbnVtYmVyIG9mIFVDaGFycyBmb3IgcHJl
ZmxpZ2h0aW5nLgotICogQHJldHVybiBOdW1iZXIgb2YgVUNoYXJzIGluIHRoZSBkYXRhIHRvIGJl
IGV4dHJhY3RlZC4gIERvZXMgbm90IGluY2x1ZGUgYSB0cmFpbGluZyBOVUwuCi0gKgotICogQHN0
YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCi11dGV4dF9leHRy
YWN0KFVUZXh0ICp1dCwKLSAgICAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90
IG5hdGl2ZUxpbWl0LAotICAgICAgICAgICAgIFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBh
Y2l0eSwKLSAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0KLQotLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgotICoKLSAqICAjZGVmaW5lIGlubGluZSB2ZXJzaW9ucyBvZiBz
ZWxlY3RlZCBwZXJmb3JtYW5jZS1jcml0aWNhbCB0ZXh0IGFjY2VzcyBmdW5jdGlvbnMKLSAqICAg
ICAgICAgIENhdXRpb246ICBkbyBub3QgdXNlIGF1dG8gaW5jcmVtZW50Kysgb3IgZGVjcmVtZW50
LS0gZXhwcmVzc2lvbnMKLSAqICAgICAgICAgICAgICAgICAgICBhcyBwYXJhbWV0ZXJzIHRvIHRo
ZXNlIG1hY3Jvcy4KLSAqCi0gKiAgICAgICAgICBGb3IgbW9zdCB1c2UsIHdoZXJlIHRoZXJlIGlz
IG5vIGV4dHJlbWUgcGVyZm9ybWFuY2UgY29uc3RyYWludCwgdGhlCi0gKiAgICAgICAgICBub3Jt
YWwsIG5vbi1pbmxpbmUgZnVuY3Rpb25zIGFyZSBhIGJldHRlciBjaG9pY2UuICBUaGUgcmVzdWx0
aW5nIGNvZGUKLSAqICAgICAgICAgIHdpbGwgYmUgc21hbGxlciwgYW5kLCBpZiB0aGUgbmVlZCBl
dmVyIGFyaXNlcywgZWFzaWVyIHRvIGRlYnVnLgotICoKLSAqICAgICAgICAgIFRoZXNlIGFyZSBp
bXBsZW1lbnRlZCBhcyAjZGVmaW5lcyByYXRoZXIgdGhhbiByZWFsIGZ1bmN0aW9ucwotICogICAg
ICAgICAgYmVjYXVzZSB0aGVyZSBpcyBubyBmdWxseSBwb3J0YWJsZSB3YXkgdG8gZG8gaW5saW5l
IGZ1bmN0aW9ucyBpbiBwbGFpbiBDLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
Ci0KLSNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQotLyoqCi0gKiBpbmxpbmUgdmVyc2lvbiBv
ZiB1dGV4dF9jdXJyZW50MzIoKSwgZm9yIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHNpdHVhdGlvbnMu
Ci0gKgotICogR2V0IHRoZSBjb2RlIHBvaW50IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3Np
dGlvbiBvZiB0aGUgVVRleHQuCi0gKiBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9z
aXRpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGUKLSAqIHRleHQuCi0gKgotICogQGludGVybmFsIElD
VSA0LjQgdGVjaG5vbG9neSBwcmV2aWV3Ci0gKi8KLSNkZWZpbmUgVVRFWFRfQ1VSUkVOVDMyKHV0
KSAgXAotICAgICgodXQpLT5jaHVua09mZnNldCA8ICh1dCktPmNodW5rTGVuZ3RoICYmICgodXQp
LT5jaHVua0NvbnRlbnRzKVsodXQpLT5jaHVua09mZnNldF08MHhkODAwID8gXAotICAgICgodXQp
LT5jaHVua0NvbnRlbnRzKVsoKHV0KS0+Y2h1bmtPZmZzZXQpXSA6IHV0ZXh0X2N1cnJlbnQzMih1
dCkpCi0jZW5kaWYgIC8qIFVfSElERV9JTlRFUk5BTF9BUEkgKi8KLQotLyoqCi0gKiBpbmxpbmUg
dmVyc2lvbiBvZiB1dGV4dF9uZXh0MzIoKSwgZm9yIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHNpdHVh
dGlvbnMuCi0gKgotICogR2V0IHRoZSBjb2RlIHBvaW50IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlv
biBwb3NpdGlvbiBvZiB0aGUgVVRleHQsIGFuZAotICogYWR2YW5jZSB0aGUgcG9zaXRpb24gdG8g
dGhlIGZpcnN0IGluZGV4IGZvbGxvd2luZyB0aGUgY2hhcmFjdGVyLgotICogVGhpcyBpcyBhIHBv
c3QtaW5jcmVtZW50IG9wZXJhdGlvbi4KLSAqIFJldHVybnMgVV9TRU5USU5FTCAoLTEpIGlmIHRo
ZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZQotICogdGV4dC4KLSAqCi0gKiBAc3RhYmxl
IElDVSAzLjQKLSAqLwotI2RlZmluZSBVVEVYVF9ORVhUMzIodXQpICBcCi0gICAgKCh1dCktPmNo
dW5rT2Zmc2V0IDwgKHV0KS0+Y2h1bmtMZW5ndGggJiYgKCh1dCktPmNodW5rQ29udGVudHMpWyh1
dCktPmNodW5rT2Zmc2V0XTwweGQ4MDAgPyBcCi0gICAgKCh1dCktPmNodW5rQ29udGVudHMpWygo
dXQpLT5jaHVua09mZnNldCkrK10gOiB1dGV4dF9uZXh0MzIodXQpKQotCi0vKioKLSAqIGlubGlu
ZSB2ZXJzaW9uIG9mIHV0ZXh0X3ByZXZpb3VzMzIoKSwgZm9yIHBlcmZvcm1hbmNlLWNyaXRpY2Fs
IHNpdHVhdGlvbnMuCi0gKgotICogIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBj
aGFyYWN0ZXIgKGNvZGUgcG9pbnQpIHdob3NlCi0gKiAgaW5kZXggcHJlY2VkZXMgdGhlIGN1cnJl
bnQgcG9zaXRpb24sIGFuZCByZXR1cm4gdGhhdCBjaGFyYWN0ZXIuCi0gKiAgVGhpcyBpcyBhIHBy
ZS1kZWNyZW1lbnQgb3BlcmF0aW9uLgotICogIFJldHVybnMgVV9TRU5USU5FTCAoLTEpIGlmIHRo
ZSBwb3NpdGlvbiBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlICB0ZXh0LgotICoKLSAqIEBzdGFibGUg
SUNVIDMuNAotICovCi0jZGVmaW5lIFVURVhUX1BSRVZJT1VTMzIodXQpICBcCi0gICAgKCh1dCkt
PmNodW5rT2Zmc2V0ID4gMCAmJiBcCi0gICAgICh1dCktPmNodW5rQ29udGVudHNbKHV0KS0+Y2h1
bmtPZmZzZXQtMV0gPCAweGQ4MDAgPyBcCi0gICAgICAgICAgKHV0KS0+Y2h1bmtDb250ZW50c1st
LSgodXQpLT5jaHVua09mZnNldCldICA6ICB1dGV4dF9wcmV2aW91czMyKHV0KSkKLQotLyoqCi0g
ICogIGlubGluZSB2ZXJzaW9uIG9mIHV0ZXh0X2dldE5hdGl2ZUluZGV4KCksIGZvciBwZXJmb3Jt
YW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgotICAqCi0gICogR2V0IHRoZSBjdXJyZW50IGl0ZXJh
dG9yIHBvc2l0aW9uLCB3aGljaCBjYW4gcmFuZ2UgZnJvbSAwIHRvIAotICAqIHRoZSBsZW5ndGgg
b2YgdGhlIHRleHQuCi0gICogVGhlIHBvc2l0aW9uIGlzIGEgbmF0aXZlIGluZGV4IGludG8gdGhl
IGlucHV0IHRleHQsIGluIHdoYXRldmVyIGZvcm1hdCBpdAotICAqIG1heSBoYXZlIChwb3NzaWJs
eSBVVEYtOCBmb3IgZXhhbXBsZSksIGFuZCBtYXkgbm90IGFsd2F5cyBiZSB0aGUgc2FtZSBhcwot
ICAqIHRoZSBjb3JyZXNwb25kaW5nIFVDaGFyIChVVEYtMTYpIGluZGV4LgotICAqIFRoZSByZXR1
cm5lZCBwb3NpdGlvbiB3aWxsIGFsd2F5cyBiZSBhbGlnbmVkIHRvIGEgY29kZSBwb2ludCBib3Vu
ZGFyeS4gCi0gICoKLSAgKiBAc3RhYmxlIElDVSAzLjYKLSAgKi8KLSNkZWZpbmUgVVRFWFRfR0VU
TkFUSVZFSU5ERVgodXQpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKCh1dCktPmNodW5r
T2Zmc2V0IDw9ICh1dCktPm5hdGl2ZUluZGV4aW5nTGltaXQ/ICAgXAotICAgICAgICAodXQpLT5j
aHVua05hdGl2ZVN0YXJ0Kyh1dCktPmNodW5rT2Zmc2V0IDogICAgIFwKLSAgICAgICAgKHV0KS0+
cEZ1bmNzLT5tYXBPZmZzZXRUb05hdGl2ZSh1dCkpICAgIAotCi0vKioKLSAgKiAgaW5saW5lIHZl
cnNpb24gb2YgdXRleHRfc2V0TmF0aXZlSW5kZXgoKSwgZm9yIHBlcmZvcm1hbmNlLWNyaXRpY2Fs
IHNpdHVhdGlvbnMuCi0gICoKLSAgKiBTZXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9u
IHRvIHRoZSBuZWFyZXN0IGNvZGUgcG9pbnQKLSAgKiBib3VuZGFyeSBhdCBvciBwcmVjZWRpbmcg
dGhlIHNwZWNpZmllZCBpbmRleC4KLSAgKiBUaGUgaW5kZXggaXMgaW4gdGhlIG5hdGl2ZSB1bml0
cyBvZiB0aGUgb3JpZ2luYWwgaW5wdXQgdGV4dC4KLSAgKiBJZiB0aGUgaW5kZXggaXMgb3V0IG9m
IHJhbmdlLCBpdCB3aWxsIGJlIHBpbm5lZCB0byBiZSB3aXRoaW4KLSAgKiB0aGUgcmFuZ2Ugb2Yg
dGhlIGlucHV0IHRleHQuCi0gICoKLSAgKiBAc3RhYmxlIElDVSAzLjgKLSAgKi8KLSNkZWZpbmUg
VVRFWFRfU0VUTkFUSVZFSU5ERVgodXQsIGl4KSAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IHsgaW50NjRfdCBfX29mZnNldCA9IChpeCkgLSAodXQpLT5jaHVua05hdGl2ZVN0YXJ0OyBcCi0g
ICAgICBpZiAoX19vZmZzZXQ+PTAgJiYgX19vZmZzZXQ8PShpbnQ2NF90KSh1dCktPm5hdGl2ZUlu
ZGV4aW5nTGltaXQpIHsgXAotICAgICAgICAgICh1dCktPmNodW5rT2Zmc2V0PShpbnQzMl90KV9f
b2Zmc2V0OyBcCi0gICAgICB9IGVsc2UgeyBcCi0gICAgICAgICAgdXRleHRfc2V0TmF0aXZlSW5k
ZXgoKHV0KSwgKGl4KSk7IH0gfQotCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot
ICoKLSAqICAgRnVuY3Rpb25zIHJlbGF0ZWQgdG8gd3JpdGluZyBvciBtb2RpZnlpbmcgdGhlIHRl
eHQuCi0gKiAgIFRoZXNlIHdpbGwgd29yayBvbmx5IHdpdGggbW9kaWZpYWJsZSBVVGV4dHMuICBB
dHRlbXB0aW5nIHRvCi0gKiAgIG1vZGlmeSBhIHJlYWQtb25seSBVVGV4dCB3aWxsIHJldHVybiBh
biBlcnJvciBzdGF0dXMuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotCi0v
KioKLSAqICBSZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCBjYW4gYmUgd3JpdHRlbiAobW9kaWZpZWQp
IHdpdGggdXRleHRfcmVwbGFjZSgpIG9yCi0gKiAgdXRleHRfY29weSgpLiAgRm9yIHRoZSB0ZXh0
IHRvIGJlIHdyaXRhYmxlLCB0aGUgdGV4dCBwcm92aWRlciBtdXN0Ci0gKiAgYmUgb2YgYSB0eXBl
IHRoYXQgc3VwcG9ydHMgd3JpdGluZyBhbmQgdGhlIFVUZXh0IG11c3Qgbm90IGJlIGZyb3plbi4K
LSAqCi0gKiAgQXR0ZW1wdGluZyB0byBtb2RpZnkgdGV4dCB3aGVuIHV0ZXh0X2lzV3JpdGVhYmxl
KCkgaXMgRkFMU0Ugd2lsbCBmYWlsIC0KLSAqICB0aGUgdGV4dCB3aWxsIG5vdCBiZSBtb2RpZmll
ZCwgYW5kIGFuIGVycm9yIHdpbGwgYmUgcmV0dXJuZWQgZnJvbSB0aGUgZnVuY3Rpb24KLSAqICB0
aGF0IGF0dGVtcHRlZCB0aGUgbW9kaWZpY2F0aW9uLgotICoKLSAqIEBwYXJhbSAgdXQgICB0aGUg
VVRleHQgdG8gYmUgdGVzdGVkLgotICogQHJldHVybiBUUlVFIGlmIHRoZSB0ZXh0IGlzIG1vZGlm
aWFibGUuCi0gKgotICogQHNlZSAgICB1dGV4dF9mcmVlemUoKQotICogQHNlZSAgICB1dGV4dF9y
ZXBsYWNlKCkKLSAqIEBzZWUgICAgdXRleHRfY29weSgpCi0gKiBAc3RhYmxlIElDVSAzLjQKLSAq
Ci0gKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdXRleHRfaXNXcml0YWJsZShjb25zdCBV
VGV4dCAqdXQpOwotCi0KLS8qKgotICAqIFRlc3Qgd2hldGhlciB0aGVyZSBpcyBtZXRhIGRhdGEg
YXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgotICAqIEBzZWUgUmVwbGFjZWFibGU6Omhhc01ldGFE
YXRhKCkKLSAgKgotICAqIEBwYXJhbSB1dCBUaGUgVVRleHQgdG8gYmUgdGVzdGVkCi0gICogQHJl
dHVybiBUUlVFIGlmIHRoZSB1bmRlcmx5aW5nIHRleHQgaW5jbHVkZXMgbWV0YSBkYXRhLgotICAq
IEBzdGFibGUgSUNVIDMuNAotICAqLwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11dGV4dF9o
YXNNZXRhRGF0YShjb25zdCBVVGV4dCAqdXQpOwotCi0KLS8qKgotICogUmVwbGFjZSBhIHJhbmdl
IG9mIHRoZSBvcmlnaW5hbCB0ZXh0IHdpdGggYSByZXBsYWNlbWVudCB0ZXh0LgotICoKLSAqIExl
YXZlcyB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gYXQgdGhlIHBvc2l0aW9uIGZvbGxv
d2luZyB0aGUKLSAqICBuZXdseSBpbnNlcnRlZCByZXBsYWNlbWVudCB0ZXh0LgotICoKLSAqIFRo
aXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0
IHdyaXRpbmcsCi0gKiB0aGF0IGlzLCBvbmVzIHdoZXJlIHV0ZXh0X2lzV3JpdGFibGUoKSByZXR1
cm5zIFRSVUUuCi0gKgotICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQg
YmUgb25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKLSAqIHVuZGVybHlpbmcgbmF0
aXZlIHRleHQgc3RyaW5nLiAgQmVoYXZpb3IgYWZ0ZXIgYSByZXBsYWNlIG9wZXJhdGlvbgotICog
b24gYSBVVGV4dCBpcyB1bmRlZmluZWQgZm9yIGFueSBvdGhlciBhZGRpdGlvbmFsIFVUZXh0cyB0
aGF0IHJlZmVyIHRvIHRoZQotICogbW9kaWZpZWQgc3RyaW5nLgotICoKLSAqIEBwYXJhbSB1dCAg
ICAgICAgICAgICAgIHRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0
ZWQgb24uCi0gKiBAcGFyYW0gbmF0aXZlU3RhcnQgICAgICB0aGUgbmF0aXZlIGluZGV4IG9mIHRo
ZSBzdGFydCBvZiB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkCi0gKiBAcGFyYW0gbmF0aXZlTGlt
aXQgICAgICB0aGUgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBy
ZWdpb24gdG8gYmUgcmVwbGFjZWQuCi0gKiBAcGFyYW0gcmVwbGFjZW1lbnRUZXh0ICBwb2ludGVy
IHRvIHRoZSByZXBsYWNlbWVudCB0ZXh0Ci0gKiBAcGFyYW0gcmVwbGFjZW1lbnRMZW5ndGggbGVu
Z3RoIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0LCBvciAtMSBpZiB0aGUgdGV4dCBpcyBOVUwgdGVy
bWluYXRlZC4KLSAqIEBwYXJhbSBzdGF0dXMgICAgICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBz
dGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZQotICogICAgICAgICAgICAgICAgICAgICAg
ICAgVV9OT19XUklURV9QRVJNSVNTSU9OCi0gKgotICogQHJldHVybiBUaGUgc2lnbmVkIG51bWJl
ciBvZiAobmF0aXZlKSBzdG9yYWdlIHVuaXRzIGJ5IHdoaWNoCi0gKiAgICAgICAgIHRoZSBsZW5n
dGggb2YgdGhlIHRleHQgZXhwYW5kZWQgb3IgY29udHJhY3RlZC4KLSAqCi0gKiBAc3RhYmxlIElD
VSAzLjQKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXV0ZXh0X3JlcGxhY2UoVVRl
eHQgKnV0LAotICAgICAgICAgICAgIGludDY0X3QgbmF0aXZlU3RhcnQsIGludDY0X3QgbmF0aXZl
TGltaXQsCi0gICAgICAgICAgICAgY29uc3QgVUNoYXIgKnJlcGxhY2VtZW50VGV4dCwgaW50MzJf
dCByZXBsYWNlbWVudExlbmd0aCwKLSAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwot
Ci0KLQotLyoqCi0gKgotICogQ29weSBvciBtb3ZlIGEgc3Vic3RyaW5nIGZyb20gb25lIHBvc2l0
aW9uIHRvIGFub3RoZXIgd2l0aGluIHRoZSB0ZXh0LAotICogd2hpbGUgcmV0YWluaW5nIGFueSBt
ZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHRleHQuCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVz
ZWQgdG8gZHVwbGljYXRlIG9yIHJlb3JkZXIgc3Vic3RyaW5ncy4KLSAqIFRoZSBkZXN0aW5hdGlv
biBpbmRleCBtdXN0IG5vdCBvdmVybGFwIHRoZSBzb3VyY2UgcmFuZ2UuCi0gKgotICogVGhlIHRl
eHQgdG8gYmUgY29waWVkIG9yIG1vdmVkIGlzIGluc2VydGVkIGF0IGRlc3RJbmRleDsKLSAqIGl0
IGRvZXMgbm90IHJlcGxhY2Ugb3Igb3ZlcndyaXRlIGFueSBleGlzdGluZyB0ZXh0LgotICoKLSAq
IFRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgbGVmdCBmb2xsb3dpbmcgdGhlIG5ld2x5IGluc2Vy
dGVkIHRleHQKLSAqIGF0IHRoZSBkZXN0aW5hdGlvbiBwb3NpdGlvbi4KLSAqCi0gKiBUaGlzIGZ1
bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0
aW5nLAotICogdGhhdCBpcywgb25lcyB3aGVyZSB1dGV4dF9pc1dyaXRhYmxlKCkgcmV0dXJucyBU
UlVFLgotICoKLSAqIFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9u
bHkgYSBzaW5nbGUgVVRleHQgb3BlbmVkIG9udG8gdGhlCi0gKiB1bmRlcmx5aW5nIG5hdGl2ZSB0
ZXh0IHN0cmluZy4gIEJlaGF2aW9yIGFmdGVyIGEgY29weSBvcGVyYXRpb24KLSAqIG9uIGEgVVRl
eHQgaXMgdW5kZWZpbmVkIGluIGFueSBvdGhlciBhZGRpdGlvbmFsIFVUZXh0cyB0aGF0IHJlZmVy
IHRvIHRoZQotICogbW9kaWZpZWQgc3RyaW5nLgotICoKLSAqIEBwYXJhbSB1dCAgICAgICAgICAg
VGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBvbi4KLSAqIEBw
YXJhbSBuYXRpdmVTdGFydCAgVGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJl
Z2lvbiB0byBiZSBjb3BpZWQgb3IgbW92ZWQKLSAqIEBwYXJhbSBuYXRpdmVMaW1pdCAgVGhlIG5h
dGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgcmVnaW9u
Ci0gKiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGNvcGllZC4KLSAqIEBwYXJhbSBkZXN0SW5k
ZXggICAgVGhlIG5hdGl2ZSBkZXN0aW5hdGlvbiBpbmRleCB0byB3aGljaCB0aGUgc291cmNlIHN1
YnN0cmluZyBpcwotICogICAgICAgICAgICAgICAgICAgICBjb3BpZWQgb3IgbW92ZWQuCi0gKiBA
cGFyYW0gbW92ZSAgICAgICAgIElmIFRSVUUsIHRoZW4gdGhlIHN1YnN0cmluZyBpcyBtb3ZlZCwg
bm90IGNvcGllZC9kdXBsaWNhdGVkLgotICogQHBhcmFtIHN0YXR1cyAgICAgICByZWNlaXZlcyBh
bnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUgVV9OT19XUklURV9QRVJN
SVNTSU9OCi0gKiAgICAgICAgICAgICAgICAgICAgICAgCi0gKiBAc3RhYmxlIElDVSAzLjQKLSAq
LwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKLXV0ZXh0X2NvcHkoVVRleHQgKnV0LAotICAgICAg
ICAgIGludDY0X3QgbmF0aXZlU3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCi0gICAgICAgICAg
aW50NjRfdCBkZXN0SW5kZXgsCi0gICAgICAgICAgVUJvb2wgbW92ZSwKLSAgICAgICAgICBVRXJy
b3JDb2RlICpzdGF0dXMpOwotCi0KLS8qKgotICAqICA8cD4KLSAgKiAgRnJlZXplIGEgVVRleHQu
ICBUaGlzIHByZXZlbnRzIGFueSBtb2RpZmljYXRpb24gdG8gdGhlIHVuZGVybHlpbmcgdGV4dCBp
dHNlbGYKLSAgKiAgYnkgbWVhbnMgb2YgZnVuY3Rpb25zIG9wZXJhdGluZyBvbiB0aGlzIFVUZXh0
LgotICAqICA8L3A+Ci0gICogIDxwPgotICAqICBPbmNlIGZyb3plbiwgYSBVVGV4dCBjYW4gbm90
IGJlIHVuZnJvemVuLiAgVGhlIGludGVudCBpcyB0byBlbnN1cmUKLSAgKiAgdGhhdCBhIHRoZSB0
ZXh0IHVuZGVybHlpbmcgYSBmcm96ZW4gVVRleHQgd3JhcHBlciBjYW5ub3QgYmUgbW9kaWZpZWQg
dmlhIHRoYXQgVVRleHQuCi0gICogIDwvcD4KLSAgKiAgPHA+Ci0gICogIENhdXRpb246ICBmcmVl
emluZyBhIFVUZXh0IHdpbGwgZGlzYWJsZSBjaGFuZ2VzIG1hZGUgdmlhIHRoZSBzcGVjaWZpYwot
ICAqICAgZnJvemVuIFVUZXh0IHdyYXBwZXIgb25seTsgaXQgd2lsbCBub3QgaGF2ZSBhbnkgZWZm
ZWN0IG9uIHRoZSBhYmlsaXR5IHRvCi0gICogICBkaXJlY3RseSBtb2RpZnkgdGhlIHRleHQgYnkg
YnlwYXNzaW5nIHRoZSBVVGV4dC4gIEFueSBzdWNoIGJhY2tkb29yIG1vZGlmaWNhdGlvbnMKLSAg
KiAgIGFyZSBhbHdheXMgYW4gZXJyb3Igd2hpbGUgVVRleHQgYWNjZXNzIGlzIG9jY3VyaW5nIGJl
Y2F1c2UgdGhlIHVuZGVybHlpbmcKLSAgKiAgIHRleHQgY2FuIGdldCBvdXQgb2Ygc3luYyB3aXRo
IFVUZXh0J3MgYnVmZmVyaW5nLgotICAqICA8L3A+Ci0gICoKLSAgKiAgQHBhcmFtIHV0ICBUaGUg
VVRleHQgdG8gYmUgZnJvemVuLgotICAqICBAc2VlICAgdXRleHRfaXNXcml0YWJsZSgpCi0gICog
IEBzdGFibGUgSUNVIDMuNgotICAqLwotVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKLXV0ZXh0X2Zy
ZWV6ZShVVGV4dCAqdXQpOwotCi0KLS8qKgotICogVVRleHQgcHJvdmlkZXIgcHJvcGVydGllcyAo
Yml0IGZpZWxkIGluZGV4ZXMpLgotICoKLSAqIEBzZWUgVVRleHQKLSAqIEBzdGFibGUgSUNVIDMu
NAotICovCi1lbnVtIHsKLSAgICAvKioKLSAgICAgKiBJdCBpcyBwb3RlbnRpYWxseSB0aW1lIGNv
bnN1bWluZyBmb3IgdGhlIHByb3ZpZGVyIHRvIGRldGVybWluZSB0aGUgbGVuZ3RoIG9mIHRoZSB0
ZXh0LgotICAgICAqIEBzdGFibGUgSUNVIDMuNAotICAgICAqLwotICAgIFVURVhUX1BST1ZJREVS
X0xFTkdUSF9JU19FWFBFTlNJVkUgPSAxLAotICAgIC8qKgotICAgICAqIFRleHQgY2h1bmtzIHJl
bWFpbiB2YWxpZCBhbmQgdXNhYmxlIHVudGlsIHRoZSB0ZXh0IG9iamVjdCBpcyBtb2RpZmllZCBv
cgotICAgICAqIGRlbGV0ZWQsIG5vdCBqdXN0IHVudGlsIHRoZSBuZXh0IHRpbWUgdGhlIGFjY2Vz
cygpIGZ1bmN0aW9uIGlzIGNhbGxlZAotICAgICAqICh3aGljaCBpcyB0aGUgZGVmYXVsdCkuCi0g
ICAgICogQHN0YWJsZSBJQ1UgMy40Ci0gICAgICovCi0gICAgVVRFWFRfUFJPVklERVJfU1RBQkxF
X0NIVU5LUyA9IDIsCi0gICAgLyoqCi0gICAgICogVGhlIHByb3ZpZGVyIHN1cHBvcnRzIG1vZGlm
eWluZyB0aGUgdGV4dCB2aWEgdGhlIHJlcGxhY2UoKSBhbmQgY29weSgpCi0gICAgICogZnVuY3Rp
b25zLgotICAgICAqIEBzZWUgUmVwbGFjZWFibGUKLSAgICAgKiBAc3RhYmxlIElDVSAzLjQKLSAg
ICAgKi8KLSAgICBVVEVYVF9QUk9WSURFUl9XUklUQUJMRSA9IDMsCi0gICAgLyoqCi0gICAgICog
VGhlcmUgaXMgbWV0YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4KLSAgICAgKiBAc2Vl
IFJlcGxhY2VhYmxlOjpoYXNNZXRhRGF0YSgpCi0gICAgICogQHN0YWJsZSBJQ1UgMy40Ci0gICAg
ICovIAotICAgIFVURVhUX1BST1ZJREVSX0hBU19NRVRBX0RBVEEgPSA0LAotICAgIC8qKgotICAg
ICAqIFRleHQgcHJvdmlkZXIgb3ducyB0aGUgdGV4dCBzdG9yYWdlLgotICAgICAqICBHZW5lcmFs
bHkgb2NjdXJzIGFzIHRoZSByZXN1bHQgb2YgYSBkZWVwIGNsb25lIG9mIHRoZSBVVGV4dC4KLSAg
ICAgKiAgV2hlbiBjbG9zaW5nIHRoZSBVVGV4dCwgdGhlIGFzc29jaWF0ZWQgdGV4dCBtdXN0Ci0g
ICAgICogIGFsc28gYmUgY2xvc2VkL2RlbGV0ZWQvZnJlZWQvIHdoYXRldmVyIGlzIGFwcHJvcHJp
YXRlLgotICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAqLwotICAgICBVVEVYVF9QUk9WSURF
Ul9PV05TX1RFWFQgPSA1Ci19OwotCi0vKioKLSAgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9u
IGZvciBVVGV4dC5jbG9uZSgpLgotICAqCi0gICogIGNsb25lIGEgVVRleHQuICBNdWNoIGxpa2Ug
b3BlbmluZyBhIFVUZXh0IHdoZXJlIHRoZSBzb3VyY2UgdGV4dCBpcyBpdHNlbGYKLSAgKiAgYW5v
dGhlciBVVGV4dC4KLSAgKgotICAqICBBIGRlZXAgY2xvbmUgd2lsbCBjb3B5IGJvdGggdGhlIFVU
ZXh0IGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHVuZGVybHlpbmcgdGV4dC4KLSAgKiAgVGhlIG9y
aWdpbmFsIGFuZCBjbG9uZWQgVVRleHQgd2lsbCBvcGVyYXRlIGNvbXBsZXRlbHkgaW5kZXBlbmRl
bnRseTsgbW9kaWZpY2F0aW9ucwotICAqICBtYWRlIHRvIHRoZSB0ZXh0IGluIG9uZSB3aWxsIG5v
dCBlZmZlY3QgdGhlIG90aGVyLiAgVGV4dCBwcm92aWRlcnMgYXJlIG5vdAotICAqICByZXF1aXJl
ZCB0byBzdXBwb3J0IGRlZXAgY2xvbmVzLiAgVGhlIHVzZXIgb2YgY2xvbmUoKSBtdXN0IGNoZWNr
IHRoZSBzdGF0dXMgcmV0dXJuCi0gICogIGFuZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgZmFpbHVy
ZXMuCi0gICoKLSAgKiAgQSBzaGFsbG93IGNsb25lIHJlcGxpY2F0ZXMgb25seSB0aGUgVVRleHQg
ZGF0YSBzdHJ1Y3R1cmVzOyBpdCBkb2VzIG5vdCBtYWtlCi0gICogIGEgY29weSBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0LiAgU2hhbGxvdyBjbG9uZXMgY2FuIGJlIHVzZWQgYXMgYW4gZWZmaWNpZW50
IHdheSB0byAKLSAgKiAgaGF2ZSBtdWx0aXBsZSBpdGVyYXRvcnMgYWN0aXZlIGluIGEgc2luZ2xl
IHRleHQgc3RyaW5nIHRoYXQgaXMgbm90IGJlaW5nCi0gICogIG1vZGlmaWVkLgotICAqCi0gICog
IEEgc2hhbGxvdyBjbG9uZSBvcGVyYXRpb24gbXVzdCBub3QgZmFpbCBleGNlcHQgZm9yIHRydWx5
IGV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMgc3VjaAotICAqICBhcyBtZW1vcnkgYWxsb2NhdGlvbiBm
YWlsdXJlcy4KLSAgKgotICAqICBBIFVUZXh0IGFuZCBpdHMgY2xvbmUgbWF5IGJlIHNhZmVseSBj
b25jdXJyZW50bHkgYWNjZXNzZWQgYnkgc2VwYXJhdGUgdGhyZWFkcy4KLSAgKiAgVGhpcyBpcyB0
cnVlIGZvciBib3RoIHNoYWxsb3cgYW5kIGRlZXAgY2xvbmVzLgotICAqICBJdCBpcyB0aGUgcmVz
cG9uc2liaWxpdHkgb2YgdGhlIFRleHQgUHJvdmlkZXIgdG8gZW5zdXJlIHRoYXQgdGhpcyB0aHJl
YWQgc2FmZXR5Ci0gICogIGNvbnN0cmFpbnQgaXMgbWV0LgotCi0gICoKLSAgKiAgQHBhcmFtIGRl
c3QgICBBIFVUZXh0IHN0cnVjdCB0byBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgcmVzdWx0IG9mIHRo
ZSBjbG9uZSBvcGVyYXRpb24sCi0gICogICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGUgY2xv
bmUgZnVuY3Rpb24gc2hvdWxkIGhlYXAtYWxsb2NhdGUgYSBuZXcgVVRleHQgc3RydWN0LgotICAq
ICBAcGFyYW0gc3JjICAgIFRoZSBVVGV4dCB0byBiZSBjbG9uZWQuCi0gICogIEBwYXJhbSBkZWVw
ICAgVFJVRSB0byByZXF1ZXN0IGEgZGVlcCBjbG9uZSwgRkFMU0UgZm9yIGEgc2hhbGxvdyBjbG9u
ZS4KLSAgKiAgQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUuICBGb3IgZGVl
cCBjbG9uZXMsIFVfVU5TVVBQT1JURURfRVJST1IKLSAgKiAgICAgICAgICAgICAgICBzaG91bGQg
YmUgcmV0dXJuZWQgaWYgdGhlIHRleHQgcHJvdmlkZXIgaXMgdW5hYmxlIHRvIGNsb25lIHRoZQot
ICAqICAgICAgICAgICAgICAgIG9yaWdpbmFsIHRleHQuCi0gICogIEByZXR1cm4gICAgICAgVGhl
IG5ld2x5IGNyZWF0ZWQgY2xvbmUsIG9yIE5VTEwgaWYgdGhlIGNsb25lIG9wZXJhdGlvbiBmYWls
ZWQuCi0gICoKLSAgKiBAc3RhYmxlIElDVSAzLjQKLSAgKi8KLXR5cGVkZWYgVVRleHQgKiBVX0NB
TExDT05WCi1VVGV4dENsb25lKFVUZXh0ICpkZXN0LCBjb25zdCBVVGV4dCAqc3JjLCBVQm9vbCBk
ZWVwLCBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNs
YXJhdGlvbiBmb3IgVVRleHQubmF0aXZlTGVuZ3RoKCkuCi0gKgotICogQHBhcmFtIHV0IHRoZSBV
VGV4dCB0byBnZXQgdGhlIGxlbmd0aCBvZi4KLSAqIEByZXR1cm4gdGhlIGxlbmd0aCwgaW4gdGhl
IG5hdGl2ZSB1bml0cyBvZiB0aGUgb3JpZ2luYWwgdGV4dCBzdHJpbmcuCi0gKiBAc2VlIFVUZXh0
Ci0gKiBAc3RhYmxlIElDVSAzLjQKLSAqLwotdHlwZWRlZiBpbnQ2NF90IFVfQ0FMTENPTlYKLVVU
ZXh0TmF0aXZlTGVuZ3RoKFVUZXh0ICp1dCk7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNs
YXJhdGlvbiBmb3IgVVRleHQuYWNjZXNzKCkuICBHZXQgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB0
ZXh0IGNodW5rCi0gKiAgY29udGFpbmluZyB0aGUgdGV4dCBhdCBhIHJlcXVlc3RlZCBuYXRpdmUg
aW5kZXguICBUaGUgVVRleHQncyBpdGVyYXRpb24KLSAqICBwb3NpdGlvbiB3aWxsIGJlIGxlZnQg
YXQgdGhlIHJlcXVlc3RlZCBpbmRleC4gIElmIHRoZSBpbmRleCBpcyBvdXQKLSAqICBvZiBib3Vu
ZHMsIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gd2lsbCBiZSBsZWZ0IGF0IHRoZSBzdGFydCBvciBl
bmQKLSAqICBvZiB0aGUgc3RyaW5nLCBhcyBhcHByb3ByaWF0ZS4KLSAqCi0gKiAgQ2h1bmtzIG11
c3QgYmVnaW4gYW5kIGVuZCBvbiBjb2RlIHBvaW50IGJvdW5kYXJpZXMuICBBIHNpbmdsZSBjb2Rl
IHBvaW50Ci0gKiAgY29tcHJpc2VkIG9mIG11bHRpcGxlIHN0b3JhZ2UgdW5pdHMgbXVzdCBuZXZl
ciBzcGFuIGEgY2h1bmsgYm91bmRhcnkuCi0gKgotICoKLSAqIEBwYXJhbSB1dCAgICAgICAgICB0
aGUgVVRleHQgYmVpbmcgYWNjZXNzZWQuCi0gKiBAcGFyYW0gbmF0aXZlSW5kZXggUmVxdWVzdGVk
IGluZGV4IG9mIHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICogQHBhcmFtIGZvcndhcmQgICAg
IElmIFRSVUUsIHRoZW4gdGhlIHJldHVybmVkIGNodW5rIG11c3QgY29udGFpbiB0ZXh0Ci0gKiAg
ICAgICAgICAgICAgICAgICAgc3RhcnRpbmcgZnJvbSB0aGUgaW5kZXgsIHNvIHRoYXQgc3RhcnQ8
PWluZGV4PGxpbWl0LgotICogICAgICAgICAgICAgICAgICAgIElmIEZBTFNFLCB0aGVuIHRoZSBy
ZXR1cm5lZCBjaHVuayBtdXN0IGNvbnRhaW4gdGV4dAotICogICAgICAgICAgICAgICAgICAgIGJl
Zm9yZSB0aGUgaW5kZXgsIHNvIHRoYXQgc3RhcnQ8aW5kZXg8PWxpbWl0LgotICogQHJldHVybiAg
ICAgICAgICAgIFRydWUgaWYgdGhlIHJlcXVlc3RlZCBpbmRleCBjb3VsZCBiZSBhY2Nlc3NlZC4g
IFRoZSBjaHVuawotICogICAgICAgICAgICAgICAgICAgIHdpbGwgY29udGFpbiB0aGUgcmVxdWVz
dGVkIHRleHQuCi0gKiAgICAgICAgICAgICAgICAgICAgRmFsc2UgdmFsdWUgaWYgYSBjaHVuayBj
YW5ub3QgYmUgYWNjZXNzZWQKLSAqICAgICAgICAgICAgICAgICAgICAodGhlIHJlcXVlc3RlZCBp
bmRleCBpcyBvdXQgb2YgYm91bmRzKS4KLSAqCi0gKiBAc2VlIFVUZXh0Ci0gKiBAc3RhYmxlIElD
VSAzLjQKLSAqLwotdHlwZWRlZiBVQm9vbCBVX0NBTExDT05WCi1VVGV4dEFjY2VzcyhVVGV4dCAq
dXQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpOwotCi0vKioKLSAqIEZ1bmN0
aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmV4dHJhY3QoKS4KLSAqCi0gKiBFeHRyYWN0
IHRleHQgZnJvbSBhIFVUZXh0IGludG8gYSBVQ2hhciBidWZmZXIuICBUaGUgcmFuZ2Ugb2YgdGV4
dCB0byBiZSBleHRyYWN0ZWQKLSAqIGlzIHNwZWNpZmllZCBpbiB0aGUgbmF0aXZlIGluZGljZXMg
b2YgdGhlIFVUZXh0IHByb3ZpZGVyLiAgVGhlc2UgbWF5IG5vdCBuZWNlc3NhcmlseQotICogYmUg
VVRGLTE2IGluZGljZXMuCi0gKiA8cD4KLSAqIFRoZSBzaXplIChudW1iZXIgb2YgMTYgYml0IFVD
aGFycykgaW4gdGhlIGRhdGEgdG8gYmUgZXh0cmFjdGVkIGlzIHJldHVybmVkLiAgVGhlCi0gKiBm
dWxsIGFtb3VudCBpcyByZXR1cm5lZCwgZXZlbiB3aGVuIHRoZSBzcGVjaWZpZWQgYnVmZmVyIHNp
emUgaXMgc21hbGxlci4KLSAqIDxwPgotICogVGhlIGV4dHJhY3RlZCBzdHJpbmcgd2lsbCAoaWYg
eW91IGFyZSBhIHVzZXIpIC8gbXVzdCAoaWYgeW91IGFyZSBhIHRleHQgcHJvdmlkZXIpCi0gKiBi
ZSBOVUwtdGVybWluYXRlZCBpZiB0aGVyZSBpcyBzdWZmaWNpZW50IHNwYWNlIGluIHRoZSBkZXN0
aW5hdGlvbiBidWZmZXIuCi0gKgotICogQHBhcmFtICB1dCAgICAgICAgICAgIHRoZSBVVGV4dCBm
cm9tIHdoaWNoIHRvIGV4dHJhY3QgZGF0YS4KLSAqIEBwYXJhbSAgbmF0aXZlU3RhcnQgICB0aGUg
bmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWNlciB0byBleHRyYWN0LgotICogQHBhcmFt
ICBuYXRpdmVMaW1pdCAgIHRoZSBuYXRpdmUgc3RyaW5nIGluZGV4IG9mIHRoZSBwb3NpdGlvbiBm
b2xsb3dpbmcgdGhlIGxhc3QKLSAqICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdG8g
ZXh0cmFjdC4KLSAqIEBwYXJhbSAgZGVzdCAgICAgICAgICB0aGUgVUNoYXIgKFVURi0xNikgYnVm
ZmVyIGludG8gd2hpY2ggdGhlIGV4dHJhY3RlZCB0ZXh0IGlzIHBsYWNlZAotICogQHBhcmFtICBk
ZXN0Q2FwYWNpdHkgIFRoZSBzaXplLCBpbiBVQ2hhcnMsIG9mIHRoZSBkZXN0aW5hdGlvbiBidWZm
ZXIuICBNYXkgYmUgemVybwotICogICAgICAgICAgICAgICAgICAgICAgIGZvciBwcmVjb21wdXRp
bmcgdGhlIHJlcXVpcmVkIHNpemUuCi0gKiBAcGFyYW0gIHN0YXR1cyAgICAgICAgcmVjZWl2ZXMg
YW55IGVycm9yIHN0YXR1cy4KLSAqICAgICAgICAgICAgICAgICAgICAgICBJZiBVX0JVRkZFUl9P
VkVSRkxPV19FUlJPUjogUmV0dXJucyBudW1iZXIgb2YgVUNoYXJzIGZvcgotICogICAgICAgICAg
ICAgICAgICAgICAgIHByZWZsaWdodGluZy4KLSAqIEByZXR1cm4gTnVtYmVyIG9mIFVDaGFycyBp
biB0aGUgZGF0YS4gIERvZXMgbm90IGluY2x1ZGUgYSB0cmFpbGluZyBOVUwuCi0gKgotICogQHN0
YWJsZSBJQ1UgMy40Ci0gKi8KLXR5cGVkZWYgaW50MzJfdCBVX0NBTExDT05WCi1VVGV4dEV4dHJh
Y3QoVVRleHQgKnV0LAotICAgICAgICAgICAgIGludDY0X3QgbmF0aXZlU3RhcnQsIGludDY0X3Qg
bmF0aXZlTGltaXQsCi0gICAgICAgICAgICAgVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFj
aXR5LAotICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLS8qKgotICogRnVuY3Rp
b24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQucmVwbGFjZSgpLgotICoKLSAqIFJlcGxhY2Ug
YSByYW5nZSBvZiB0aGUgb3JpZ2luYWwgdGV4dCB3aXRoIGEgcmVwbGFjZW1lbnQgdGV4dC4KLSAq
Ci0gKiBMZWF2ZXMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIGF0IHRoZSBwb3NpdGlv
biBmb2xsb3dpbmcgdGhlCi0gKiAgbmV3bHkgaW5zZXJ0ZWQgcmVwbGFjZW1lbnQgdGV4dC4KLSAq
Ci0gKiBUaGlzIGZ1bmN0aW9uIG5lZWQgb25seSBiZSBpbXBsZW1lbnRlZCBvbiBVVGV4dCB0eXBl
cyB0aGF0IHN1cHBvcnQgd3JpdGluZy4KLSAqCi0gKiBXaGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24s
IHRoZXJlIHNob3VsZCBiZSBvbmx5IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBvbnRvIHRoZQotICog
dW5kZXJseWluZyBuYXRpdmUgdGV4dCBzdHJpbmcuICBUaGUgZnVuY3Rpb24gaXMgcmVzcG9uc2li
bGUgZm9yIHVwZGF0aW5nIHRoZQotICogdGV4dCBjaHVuayB3aXRoaW4gdGhlIFVUZXh0IHRvIHJl
ZmxlY3QgdGhlIHVwZGF0ZWQgaXRlcmF0aW9uIHBvc2l0aW9uLAotICogdGFraW5nIGludG8gYWNj
b3VudCBhbnkgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyBzdHJpbmcncyBzdHJ1Y3R1cmUgY2F1
c2VkCi0gKiBieSB0aGUgcmVwbGFjZSBvcGVyYXRpb24uCi0gKgotICogQHBhcmFtIHV0ICAgICAg
ICAgICAgICAgdGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBv
bi4KLSAqIEBwYXJhbSBuYXRpdmVTdGFydCAgICAgIHRoZSBpbmRleCBvZiB0aGUgc3RhcnQgb2Yg
dGhlIHJlZ2lvbiB0byBiZSByZXBsYWNlZAotICogQHBhcmFtIG5hdGl2ZUxpbWl0ICAgICAgdGhl
IGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSByZWdpb24gdG8gYmUgcmVwbGFj
ZWQuCi0gKiBAcGFyYW0gcmVwbGFjZW1lbnRUZXh0ICBwb2ludGVyIHRvIHRoZSByZXBsYWNlbWVu
dCB0ZXh0Ci0gKiBAcGFyYW0gcmVwbGFjbWVudExlbmd0aCBsZW5ndGggb2YgdGhlIHJlcGxhY2Vt
ZW50IHRleHQgaW4gVUNoYXJzLCBvciAtMSBpZiB0aGUgdGV4dCBpcyBOVUwgdGVybWluYXRlZC4K
LSAqIEBwYXJhbSBzdGF0dXMgICAgICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuICBQ
b3NzaWJsZSBlcnJvcnMgaW5jbHVkZQotICogICAgICAgICAgICAgICAgICAgICAgICAgVV9OT19X
UklURV9QRVJNSVNTSU9OCi0gKgotICogQHJldHVybiBUaGUgc2lnbmVkIG51bWJlciBvZiAobmF0
aXZlKSBzdG9yYWdlIHVuaXRzIGJ5IHdoaWNoCi0gKiAgICAgICAgIHRoZSBsZW5ndGggb2YgdGhl
IHRleHQgZXhwYW5kZWQgb3IgY29udHJhY3RlZC4KLSAqCi0gKiBAc3RhYmxlIElDVSAzLjQKLSAq
LwotdHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKLVVUZXh0UmVwbGFjZShVVGV4dCAqdXQsCi0g
ICAgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKLSAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAqcmVwbGFjZW1lbnRUZXh0LCBpbnQzMl90IHJlcGxhY21l
bnRMZW5ndGgsCi0gICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKLQotLyoqCi0gKiBG
dW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5jb3B5KCkuCi0gKgotICogQ29weSBv
ciBtb3ZlIGEgc3Vic3RyaW5nIGZyb20gb25lIHBvc2l0aW9uIHRvIGFub3RoZXIgd2l0aGluIHRo
ZSB0ZXh0LAotICogd2hpbGUgcmV0YWluaW5nIGFueSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGgg
dGhlIHRleHQuCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHVwbGljYXRlIG9yIHJlb3Jk
ZXIgc3Vic3RyaW5ncy4KLSAqIFRoZSBkZXN0aW5hdGlvbiBpbmRleCBtdXN0IG5vdCBvdmVybGFw
IHRoZSBzb3VyY2UgcmFuZ2UuCi0gKgotICogVGhlIHRleHQgdG8gYmUgY29waWVkIG9yIG1vdmVk
IGlzIGluc2VydGVkIGF0IGRlc3RJbmRleDsKLSAqIGl0IGRvZXMgbm90IHJlcGxhY2Ugb3Igb3Zl
cndyaXRlIGFueSBleGlzdGluZyB0ZXh0LgotICoKLSAqIFRoaXMgZnVuY3Rpb24gbmVlZCBvbmx5
IGJlIGltcGxlbWVudGVkIGZvciBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3JpdGluZy4KLSAq
Ci0gKiBXaGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBvbmx5IGEgc2lu
Z2xlIFVUZXh0IG9wZW5lZCBvbnRvIHRoZQotICogdW5kZXJseWluZyBuYXRpdmUgdGV4dCBzdHJp
bmcuICBUaGUgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZQotICogdGV4
dCBjaHVuayB3aXRoaW4gdGhlIFVUZXh0IHRvIHJlZmxlY3QgdGhlIHVwZGF0ZWQgaXRlcmF0aW9u
IHBvc2l0aW9uLAotICogdGFraW5nIGludG8gYWNjb3VudCBhbnkgY2hhbmdlcyB0byB0aGUgdW5k
ZXJseWluZyBzdHJpbmcncyBzdHJ1Y3R1cmUgY2F1c2VkCi0gKiBieSB0aGUgcmVwbGFjZSBvcGVy
YXRpb24uCi0gKgotICogQHBhcmFtIHV0ICAgICAgICAgICBUaGUgVVRleHQgcmVwcmVzZW50aW5n
IHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgotICogQHBhcmFtIG5hdGl2ZVN0YXJ0ICBUaGUg
aW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgY29waWVkIG9yIG1vdmVkCi0g
KiBAcGFyYW0gbmF0aXZlTGltaXQgIFRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2lu
ZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgotICogQHBhcmFtIG5hdGl2ZURlc3QgICBUaGUg
ZGVzdGluYXRpb24gaW5kZXggdG8gd2hpY2ggdGhlIHNvdXJjZSBzdWJzdHJpbmcgaXMgY29waWVk
IG9yIG1vdmVkLgotICogQHBhcmFtIG1vdmUgICAgICAgICBJZiBUUlVFLCB0aGVuIHRoZSBzdWJz
dHJpbmcgaXMgbW92ZWQsIG5vdCBjb3BpZWQvZHVwbGljYXRlZC4KLSAqIEBwYXJhbSBzdGF0dXMg
ICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3NpYmxlIGVycm9ycyBpbmNsdWRl
IFVfTk9fV1JJVEVfUEVSTUlTU0lPTgotICoKLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi10eXBl
ZGVmIHZvaWQgVV9DQUxMQ09OVgotVVRleHRDb3B5KFVUZXh0ICp1dCwKLSAgICAgICAgICBpbnQ2
NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAotICAgICAgICAgIGludDY0X3Qg
bmF0aXZlRGVzdCwKLSAgICAgICAgICBVQm9vbCBtb3ZlLAotICAgICAgICAgIFVFcnJvckNvZGUg
KnN0YXR1cyk7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQu
bWFwT2Zmc2V0VG9OYXRpdmUoKS4KLSAqIE1hcCBmcm9tIHRoZSBjdXJyZW50IFVDaGFyIG9mZnNl
dCB3aXRoaW4gdGhlIGN1cnJlbnQgdGV4dCBjaHVuayB0bwotICogIHRoZSBjb3JyZXNwb25kaW5n
IG5hdGl2ZSBpbmRleCBpbiB0aGUgb3JpZ2luYWwgc291cmNlIHRleHQuCi0gKgotICogVGhpcyBp
cyByZXF1aXJlZCBvbmx5IGZvciB0ZXh0IHByb3ZpZGVycyB0aGF0IGRvIG5vdCB1c2UgbmF0aXZl
IFVURi0xNiBpbmRleGVzLgotICoKLSAqIEBwYXJhbSB1dCAgICAgdGhlIFVUZXh0LgotICogQHJl
dHVybiBBYnNvbHV0ZSAobmF0aXZlKSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIGNodW5rT2Zmc2V0
IGluIHRoZSBjdXJyZW50IGNodW5rLgotICogICAgICAgICBUaGUgcmV0dXJuZWQgbmF0aXZlIGlu
ZGV4IHNob3VsZCBhbHdheXMgYmUgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5LgotICoKLSAqIEBz
dGFibGUgSUNVIDMuNAotICovCi10eXBlZGVmIGludDY0X3QgVV9DQUxMQ09OVgotVVRleHRNYXBP
ZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4dCAqdXQpOwotCi0vKioKLSAqIEZ1bmN0aW9uIHR5cGUg
ZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm1hcEluZGV4VG9VVEYxNigpLgotICogTWFwIGZyb20gYSBu
YXRpdmUgaW5kZXggdG8gYSBVQ2hhciBvZmZzZXQgd2l0aGluIGEgdGV4dCBjaHVuay4KLSAqIEJl
aGF2aW9yIGlzIHVuZGVmaW5lZCBpZiB0aGUgbmF0aXZlIGluZGV4IGRvZXMgbm90IGZhbGwgd2l0
aGluIHRoZQotICogICBjdXJyZW50IGNodW5rLgotICoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgcmVx
dWlyZWQgb25seSBmb3IgdGV4dCBwcm92aWRlcnMgdGhhdCBkbyBub3QgdXNlIG5hdGl2ZSBVVEYt
MTYgaW5kZXhlcy4KLSAqCi0gKiBAcGFyYW0gdXQgICAgICAgICAgVGhlIFVUZXh0IGNvbnRhaW5p
bmcgdGhlIHRleHQgY2h1bmsuCi0gKiBAcGFyYW0gbmF0aXZlSW5kZXggQWJzb2x1dGUgKG5hdGl2
ZSkgdGV4dCBpbmRleCwgY2h1bmstPnN0YXJ0PD1pbmRleDw9Y2h1bmstPmxpbWl0LgotICogQHJl
dHVybiAgICAgICAgICAgIENodW5rLXJlbGF0aXZlIFVURi0xNiBvZmZzZXQgY29ycmVzcG9uZGlu
ZyB0byB0aGUgc3BlY2lmaWVkIG5hdGl2ZQotICogICAgICAgICAgICAgICAgICAgIGluZGV4Lgot
ICoKLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi10eXBlZGVmIGludDMyX3QgVV9DQUxMQ09OVgot
VVRleHRNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3QgVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2
ZUluZGV4KTsKLQotCi0vKioKLSAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0
LnV0ZXh0Q2xvc2UoKS4KLSAqCi0gKiBBIFRleHQgUHJvdmlkZXIgY2xvc2UgZnVuY3Rpb24gaXMg
b25seSByZXF1aXJlZCBmb3IgcHJvdmlkZXIgdHlwZXMgdGhhdCBtYWtlCi0gKiAgYWxsb2NhdGlv
bnMgaW4gdGhlaXIgb3BlbiBmdW5jdGlvbiAob3Igb3RoZXIgZnVuY3Rpb25zKSB0aGF0IG11c3Qg
YmUgCi0gKiAgY2xlYW5lZCB3aGVuIHRoZSBVVGV4dCBpcyBjbG9zZWQuCi0gKgotICogVGhlIGFs
bG9jYXRpb24gb2YgdGhlIFVUZXh0IHN0cnVjdCBpdHNlbGYgYW5kIGFueSAiZXh0cmEiIHN0b3Jh
Z2UKLSAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgVVRleHQgaXMgaGFuZGxlZCBieSB0aGUgY29tbW9u
IFVUZXh0IGltcGxlbWVudGF0aW9uCi0gKiBhbmQgZG9lcyBub3QgcmVxdWlyZSBwcm92aWRlciBz
cGVjaWZpYyBjbGVhbnVwIGluIGEgY2xvc2UgZnVuY3Rpb24uCi0gKgotICogTW9zdCBVVGV4dCBw
cm92aWRlciBpbXBsZW1lbnRhdGlvbnMgZG8gbm90IG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgZnVu
Y3Rpb24uCi0gKgotICogQHBhcmFtIHV0IEEgVVRleHQgb2JqZWN0IHRvIGJlIGNsb3NlZC4KLSAq
Ci0gKiBAc3RhYmxlIElDVSAzLjQKLSAqLwotdHlwZWRlZiB2b2lkIFVfQ0FMTENPTlYKLVVUZXh0
Q2xvc2UoVVRleHQgKnV0KTsKLQotCi0vKioKLSAgKiAgIChwdWJsaWMpICBGdW5jdGlvbiBkaXNw
YXRjaCB0YWJsZSBmb3IgVVRleHQuCi0gICogICAgICAgICAgICAgQ29uY2VwdHVhbGx5IHZlcnkg
bXVjaCBsaWtlIGEgQysrIFZpcnR1YWwgRnVuY3Rpb24gVGFibGUuCi0gICogICAgICAgICAgICAg
VGhpcyBzdHJ1Y3QgZGVmaW5lcyB0aGUgb3JnYW5pemF0aW9uIG9mIHRoZSB0YWJsZS4KLSAgKiAg
ICAgICAgICAgICBFYWNoIHRleHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRl
IGFuCi0gICogICAgICAgICAgICAgIGFjdHVhbCB0YWJsZSB0aGF0IGlzIGluaXRpYWxpemVkIHdp
dGggdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucwotICAqICAgICAgICAgICAgICBmb3IgdGhlIHR5
cGUgb2YgdGV4dCBiZWluZyBoYW5kbGVkLgotICAqICAgQHN0YWJsZSBJQ1UgMy42Ci0gICovCi1z
dHJ1Y3QgVVRleHRGdW5jcyB7Ci0gICAgLyoqCi0gICAgICogICAocHVibGljKSAgRnVuY3Rpb24g
dGFibGUgc2l6ZSwgc2l6ZW9mKFVUZXh0RnVuY3MpCi0gICAgICogICAgICAgICAgICAgSW50ZW5k
ZWQgZm9yIHVzZSBzaG91bGQgdGhlIHRhYmxlIGdyb3cgdG8gYWNjb21vZGF0ZSBhZGRlZAotICAg
ICAqICAgICAgICAgICAgIGZ1bmN0aW9ucyBpbiB0aGUgZnV0dXJlLCB0byBhbGxvdyB0ZXN0cyBm
b3Igb2xkZXIgZm9ybWF0Ci0gICAgICogICAgICAgICAgICAgZnVuY3Rpb24gdGFibGVzIHRoYXQg
ZG8gbm90IGNvbnRhaW4gdGhlIGV4dGVuc2lvbnMuCi0gICAgICoKLSAgICAgKiAgICAgICAgICAg
ICBGaWVsZHMgYXJlIHBsYWNlZCBmb3Igb3B0aW1hbCBhbGlnbm1lbnQgb24KLSAgICAgKiAgICAg
ICAgICAgICAzMi82NC8xMjgtYml0LXBvaW50ZXIgbWFjaGluZXMsIGJ5IG5vcm1hbGx5IGdyb3Vw
aW5nIHRvZ2V0aGVyCi0gICAgICogICAgICAgICAgICAgNCAzMi1iaXQgZmllbGRzLAotICAgICAq
ICAgICAgICAgICAgIDQgcG9pbnRlcnMsCi0gICAgICogICAgICAgICAgICAgMiA2NC1iaXQgZmll
bGRzCi0gICAgICogICAgICAgICAgICAgaW4gc2VxdWVuY2UuCi0gICAgICogICBAc3RhYmxlIElD
VSAzLjYKLSAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgIHRhYmxlU2l6ZTsKLQotICAgIC8qKgot
ICAgICAgKiAgIChwcml2YXRlKSAgQWxpZ25tZW50IHBhZGRpbmcuCi0gICAgICAqICAgICAgICAg
ICAgICBEbyBub3QgdXNlLCByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsg
b25seS4KLSAgICAgICogICBAaW50ZXJuYWwKLSAgICAgICovCi0gICAgaW50MzJfdCAgICAgICBy
ZXNlcnZlZDEsIC8qKiBAaW50ZXJuYWwgKi8gcmVzZXJ2ZWQyLCAvKiogQGludGVybmFsICovIHJl
c2VydmVkMzsKLQotCi0gICAgLyoqCi0gICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBm
b3IgVVRleHRDbG9uZQotICAgICAqCi0gICAgICogQHNlZSBVVGV4dENsb25lCi0gICAgICogQHN0
YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgVVRleHRDbG9uZSAqY2xvbmU7Ci0KLSAgICAvKioK
LSAgICAgKiAocHVibGljKSBmdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dExlbmd0aAotICAgICAq
IE1heSBiZSBleHBlbnNpdmUgdG8gY29tcHV0ZSEKLSAgICAgKgotICAgICAqIEBzZWUgVVRleHRM
ZW5ndGgKLSAgICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBVVGV4dE5hdGl2ZUxl
bmd0aCAqbmF0aXZlTGVuZ3RoOwotCi0gICAgLyoqCi0gICAgICogKHB1YmxpYykgRnVuY3Rpb24g
cG9pbnRlciBmb3IgVVRleHRBY2Nlc3MuCi0gICAgICoKLSAgICAgKiBAc2VlIFVUZXh0QWNjZXNz
Ci0gICAgICogQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgVVRleHRBY2Nlc3MgKmFjY2Vz
czsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0
RXh0cmFjdC4KLSAgICAgKgotICAgICAqIEBzZWUgVVRleHRFeHRyYWN0Ci0gICAgICogQHN0YWJs
ZSBJQ1UgMy42Ci0gICAgICovCi0gICAgVVRleHRFeHRyYWN0ICpleHRyYWN0OwotCi0gICAgLyoq
Ci0gICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRSZXBsYWNlLgotICAg
ICAqCi0gICAgICogQHNlZSBVVGV4dFJlcGxhY2UKLSAgICAgKiBAc3RhYmxlIElDVSAzLjYKLSAg
ICAgKi8KLSAgICBVVGV4dFJlcGxhY2UgKnJlcGxhY2U7Ci0KLSAgICAvKioKLSAgICAgKiAocHVi
bGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dENvcHkuCi0gICAgICoKLSAgICAgKiBAc2Vl
IFVUZXh0Q29weQotICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIFVUZXh0Q29w
eSAqY29weTsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9y
IFVUZXh0TWFwT2Zmc2V0VG9OYXRpdmUuCi0gICAgICoKLSAgICAgKiBAc2VlIFVUZXh0TWFwT2Zm
c2V0VG9OYXRpdmUKLSAgICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBVVGV4dE1h
cE9mZnNldFRvTmF0aXZlICptYXBPZmZzZXRUb05hdGl2ZTsKLQotICAgIC8qKgotICAgICAqIChw
dWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2Lgot
ICAgICAqCi0gICAgICogQHNlZSBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNgotICAgICAqIEBz
dGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIFVUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2ICpt
YXBOYXRpdmVJbmRleFRvVVRGMTY7Ci0KLSAgICAvKioKLSAgICAgKiAocHVibGljKSBGdW5jdGlv
biBwb2ludGVyIGZvciBVVGV4dENsb3NlLgotICAgICAgKgotICAgICAgKiBAc2VlIFVUZXh0Q2xv
c2UKLSAgICAgICogQHN0YWJsZSBJQ1UgMy42Ci0gICAgICAqLwotICAgIFVUZXh0Q2xvc2UgICpj
bG9zZTsKLQotICAgIC8qKgotICAgICAgKiAocHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9uIHBvaW50
ZXIKLSAgICAgICogQGludGVybmFsCi0gICAgICAqLwotICAgIFVUZXh0Q2xvc2UgICpzcGFyZTE7
Ci0gICAgCi0gICAgLyoqCi0gICAgICAqIChwcml2YXRlKSAgU3BhcmUgZnVuY3Rpb24gcG9pbnRl
cgotICAgICAgKiBAaW50ZXJuYWwKLSAgICAgICovCi0gICAgVVRleHRDbG9zZSAgKnNwYXJlMjsK
LQotICAgIC8qKgotICAgICAgKiAocHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9uIHBvaW50ZXIKLSAg
ICAgICogQGludGVybmFsCi0gICAgICAqLwotICAgIFVUZXh0Q2xvc2UgICpzcGFyZTM7Ci0KLX07
Ci0vKioKLSAqIEZ1bmN0aW9uIGRpc3BhdGNoIHRhYmxlIGZvciBVVGV4dAotICogQHNlZSBVVGV4
dEZ1bmNzCi0gKi8KLXR5cGVkZWYgc3RydWN0IFVUZXh0RnVuY3MgVVRleHRGdW5jczsKLQotIC8q
KgotICAqICAgVVRleHQgc3RydWN0LiAgUHJvdmlkZXMgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRo
ZSBnZW5lcmljIFVUZXh0IGFjY2VzcyBjb2RlCi0gICogICAgICAgICAgICAgICAgICBhbmQgdGhl
IFVUZXh0IHByb3ZpZGVyIGNvZGUgdGhhdCB3b3JrcyBvbiBzcGVjaWZpYyBraW5kcyBvZgotICAq
ICAgICAgICAgICAgICAgICAgdGV4dCAgKFVURi04LCBub25jb250aWd1b3VzIFVURi0xNiwgd2hh
dGV2ZXIuKQotICAqCi0gICogICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbnMgdGhhdCBhcmUg
dXNpbmcgcHJlZGVmaW5lZCB0eXBlcyBvZiB0ZXh0IHByb3ZpZGVycwotICAqICAgICAgICAgICAg
ICAgICAgdG8gcGFzcyB0ZXh0IGRhdGEgdG8gSUNVIHNlcnZpY2VzIHdpbGwgaGF2ZSBubyBuZWVk
IHRvIHZpZXcgdGhlCi0gICogICAgICAgICAgICAgICAgICBpbnRlcm5hbHMgb2YgdGhlIFVUZXh0
IHN0cnVjdHMgdGhhdCB0aGV5IG9wZW4uCi0gICoKLSAgKiBAc3RhYmxlIElDVSAzLjYKLSAgKi8K
LXN0cnVjdCBVVGV4dCB7Ci0gICAgLyoqCi0gICAgICogICAgIChwcml2YXRlKSAgTWFnaWMuICBV
c2VkIHRvIGhlbHAgZGV0ZWN0IHdoZW4gVVRleHQgZnVuY3Rpb25zIGFyZSBoYW5kZWQKLSAgICAg
KiAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQgb3IgdW5pdGlhbGl6ZWQgVVRleHQgc3Ry
dWN0cy4KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHV0ZXh0X29wZW5YWVooKSBmdW5j
dGlvbnMgdGFrZSBhbiBpbml0aWFsaXplZCwKLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAg
IGJ1dCBub3QgbmVjZXNzYXJpbHkgb3BlbiwgVVRleHQgc3RydWN0IGFzIGFuCi0gICAgICogICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBmaWxsLWluIHBhcmFtZXRlci4gIFRoaXMgbWFn
aWMgZmllbGQKLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgdG8gY2hlY2sg
Zm9yIHRoYXQgaW5pdGlhbGl6YXRpb24uCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0IHByb3ZpZGVyIGNsb3NlIGZ1bmN0aW9ucyBtdXN0IE5PVCBjbGVhcgotICAgICAqICAgICAg
ICAgICAgICAgICAgICAgICAgdGhlIG1hZ2ljIGZpZWxkIGJlY2F1c2UgdGhhdCB3b3VsZCBwcmV2
ZW50Ci0gICAgICogICAgICAgICAgICAgICAgICAgICAgICByZXVzZSBvZiB0aGUgVVRleHQgc3Ry
dWN0LgotICAgICAqIEBpbnRlcm5hbAotICAgICAqLwotICAgIHVpbnQzMl90ICAgICAgIG1hZ2lj
OwotCi0KLSAgICAvKioKLSAgICAgKiAgICAgKHByaXZhdGUpICBGbGFncyBmb3IgbWFuYWdpbmcg
dGhlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgb2YKLSAgICAgKiAgICAgICAgICAgICAgICBtZW1v
cnkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVVRleHQuCi0gICAgICogQGludGVybmFsCi0gICAgICov
Ci0gICAgaW50MzJfdCAgICAgICAgZmxhZ3M7Ci0KLQotICAgIC8qKgotICAgICAgKiAgVGV4dCBw
cm92aWRlciBwcm9wZXJ0aWVzLiAgVGhpcyBzZXQgb2YgZmxhZ3MgaXMgbWFpbnRhaW50ZWQgYnkg
dGhlCi0gICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0IHByb3ZpZGVyIGlt
cGxlbWVudGF0aW9uLgotICAgICAgKiAgQHN0YWJsZSBJQ1UgMy40Ci0gICAgICAqLwotICAgIGlu
dDMyX3QgICAgICAgICBwcm92aWRlclByb3BlcnRpZXM7Ci0KLSAgICAvKioKLSAgICAgKiAocHVi
bGljKSBzaXplT2ZTdHJ1Y3Q9c2l6ZW9mKFVUZXh0KQotICAgICAqIEFsbG93cyBwb3NzaWJsZSBi
YWNrd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbi4KLSAgICAgKgotICAgICAqIEBzdGFibGUgSUNV
IDMuNAotICAgICAqLwotICAgIGludDMyX3QgICAgICAgICBzaXplT2ZTdHJ1Y3Q7Ci0gICAgCi0g
ICAgLyogLS0tLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5IC0tLS0tLS0tLS0tICAqLwot
ICAgIAotCi0gICAgLyoqCi0gICAgICAqICAocHJvdGVjdGVkKSBOYXRpdmUgaW5kZXggb2YgdGhl
IGZpcnN0IGNoYXJhY3RlciBwb3NpdGlvbiBmb2xsb3dpbmcKLSAgICAgICogICAgICAgICAgICAg
IHRoZSBjdXJyZW50IGNodW5rLgotICAgICAgKiAgQHN0YWJsZSBJQ1UgMy42Ci0gICAgICAqLwot
ICAgIGludDY0X3QgICAgICAgICBjaHVua05hdGl2ZUxpbWl0OwotCi0gICAgLyoqCi0gICAgICog
ICAocHJvdGVjdGVkKSAgU2l6ZSBpbiBieXRlcyBvZiB0aGUgZXh0cmEgc3BhY2UgKHBFeHRyYSku
Ci0gICAgICogIEBzdGFibGUgSUNVIDMuNAotICAgICAqLwotICAgIGludDMyX3QgICAgICAgIGV4
dHJhU2l6ZTsKLQotICAgIC8qKgotICAgICAgKiAgICAocHJvdGVjdGVkKSBUaGUgaGlnaGVzdCBj
aHVuayBvZmZzZXQgd2hlcmUgbmF0aXZlIGluZGV4aW5nIGFuZAotICAgICAgKiAgICBjaHVuayAo
VVRGLTE2KSBpbmRleGluZyBjb3JyZXNwb25kLiAgRm9yIFVURi0xNiBzb3VyY2VzLCB2YWx1ZQot
ICAgICAgKiAgICB3aWxsIGJlIGVxdWFsIHRvIGNodW5rTGVuZ3RoLgotICAgICAgKgotICAgICAg
KiAgICBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAgaW50MzJfdCAgICAgICAgIG5hdGl2
ZUluZGV4aW5nTGltaXQ7Ci0KLSAgICAvKiAtLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tLS0tICovCi0gICAgCi0gICAgLyoqCi0gICAgICogIChwcm90ZWN0ZWQpIE5hdGl2ZSBpbmRl
eCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGNodW5rLgotICAgICAqICBAc3Rh
YmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBpbnQ2NF90ICAgICAgICAgY2h1bmtOYXRpdmVTdGFy
dDsKLQotICAgIC8qKgotICAgICAqICAocHJvdGVjdGVkKSBDdXJyZW50IGl0ZXJhdGlvbiBwb3Np
dGlvbiB3aXRoaW4gdGhlIHRleHQgY2h1bmsgKFVURi0xNiBidWZmZXIpLgotICAgICAqICBUaGlz
IGlzIHRoZSBpbmRleCB0byB0aGUgY2hhcmFjdGVyIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBieSB1
dGV4dF9uZXh0MzIoKS4KLSAgICAgKiAgQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgaW50
MzJfdCAgICAgICAgIGNodW5rT2Zmc2V0OwotCi0gICAgLyoqCi0gICAgICogIChwcm90ZWN0ZWQp
IExlbmd0aCB0aGUgdGV4dCBjaHVuayAoVVRGLTE2IGJ1ZmZlciksIGluIFVDaGFycy4KLSAgICAg
KiAgQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgaW50MzJfdCAgICAgICAgIGNodW5rTGVu
Z3RoOwotCi0gICAgLyogLS0tLSAxNiAgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnktLSAqLwotICAg
IAotCi0gICAgLyoqCi0gICAgICogIChwcm90ZWN0ZWQpICBwb2ludGVyIHRvIGEgY2h1bmsgb2Yg
dGV4dCBpbiBVVEYtMTYgZm9ybWF0LgotICAgICAqICBNYXkgcmVmZXIgZWl0aGVyIHRvIG9yaWdp
bmFsIHN0b3JhZ2Ugb2YgdGhlIHNvdXJjZSBvZiB0aGUgdGV4dCwgb3IKLSAgICAgKiAgaWYgY29u
dmVyc2lvbiB3YXMgcmVxdWlyZWQsIHRvIGEgYnVmZmVyIG93bmVkIGJ5IHRoZSBVVGV4dC4KLSAg
ICAgKiAgQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgY29uc3QgVUNoYXIgICAgKmNodW5r
Q29udGVudHM7Ci0KLSAgICAgLyoqCi0gICAgICAqIChwdWJsaWMpICAgICBQb2ludGVyIHRvIERp
c3BhdGNoIHRhYmxlIGZvciBhY2Nlc3NpbmcgZnVuY3Rpb25zIGZvciB0aGlzIFVUZXh0LgotICAg
ICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAgY29uc3QgVVRleHRGdW5jcyAgICAg
KnBGdW5jczsKLQotICAgIC8qKgotICAgICAqICAocHJvdGVjdGVkKSAgUG9pbnRlciB0byBhZGRp
dGlvbmFsIHNwYWNlIHJlcXVlc3RlZCBieSB0aGUKLSAgICAgKiAgICAgICAgICAgICAgIHRleHQg
cHJvdmlkZXIgZHVyaW5nIHRoZSB1dGV4dF9vcGVuIG9wZXJhdGlvbi4KLSAgICAgKiBAc3RhYmxl
IElDVSAzLjQKLSAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICpwRXh0cmE7Ci0KLSAgICAvKioK
LSAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIHRvIHN0cmluZyBvciB0ZXh0LWNvbnRhaW5pbiBv
YmplY3Qgb3Igc2ltaWxhci4KLSAgICAgKiBUaGlzIGlzIHRoZSBzb3VyY2Ugb2YgdGhlIHRleHQg
dGhhdCB0aGlzIFVUZXh0IGlzIHdyYXBwaW5nLCBpbiBhIGZvcm1hdAotICAgICAqICB0aGF0IGlz
IGtub3duIHRvIHRoZSB0ZXh0IHByb3ZpZGVyIGZ1bmN0aW9ucy4KLSAgICAgKiBAc3RhYmxlIElD
VSAzLjQKLSAgICAgKi8KLSAgICBjb25zdCB2b2lkICAgKmNvbnRleHQ7Ci0KLSAgICAvKiAtLS0g
MTYgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnktLS0gKi8KLQotICAgIC8qKgotICAgICAqIChwcm90
ZWN0ZWQpIFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3Zp
ZGVyLgotICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgotICAgICAqIEBzdGFi
bGUgSUNVIDMuNgotICAgICAqLwotICAgIGNvbnN0IHZvaWQgICAgICpwOyAKLSAgICAvKioKLSAg
ICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFpbGFibGUgZm9yIHVzZSBieSB0aGUg
dGV4dCBwcm92aWRlci4KLSAgICAgKiBOb3QgdXNlZCBieSBVVGV4dCBjb21tb24gY29kZS4KLSAg
ICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBjb25zdCB2b2lkICAgICAqcTsKLSAg
ICAgLyoqCi0gICAgICogKHByb3RlY3RlZCkgUG9pbnRlciBmaWVsZHMgYXZhaWxhYmxlIGZvciB1
c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCi0gICAgICogTm90IHVzZWQgYnkgVVRleHQgY29tbW9u
IGNvZGUuCi0gICAgICogQHN0YWJsZSBJQ1UgMy42Ci0gICAgICAqLwotICAgIGNvbnN0IHZvaWQg
ICAgICpyOwotCi0gICAgLyoqCi0gICAgICAqICBQcml2YXRlIGZpZWxkIHJlc2VydmVkIGZvciBm
dXR1cmUgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsKLSAgICAgICogICAgIGl0c2VsZi4gIFRo
aXMgaXMgbm90IHRvIGJlIHRvdWNoZWQgYnkgdGhlIHRleHQgcHJvdmlkZXJzLgotICAgICAgKiBA
aW50ZXJuYWwgSUNVIDMuNAotICAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAqcHJpdlA7Ci0K
LQotICAgIC8qIC0tLSAxNiBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tLSAqLwotICAgIAotCi0g
ICAgLyoqCi0gICAgICAqIChwcm90ZWN0ZWQpIEludGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVz
ZSBieSB0aGUgdGV4dCBwcm92aWRlci4KLSAgICAgICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZy
YW1ld29yaywgb3IgYnkgdGhlIGNsaWVudCAodXNlcikgb2YgdGhlIFVUZXh0LgotICAgICAgKiBA
c3RhYmxlIElDVSAzLjQKLSAgICAgICovCi0gICAgaW50NjRfdCAgICAgICAgIGE7Ci0KLSAgICAv
KioKLSAgICAgICogKHByb3RlY3RlZCkgSW50ZWdlciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5
IHRoZSB0ZXh0IHByb3ZpZGVyLgotICAgICAgKiBOb3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3
b3JrLCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBvZiB0aGUgVVRleHQuCi0gICAgICAqIEBzdGFi
bGUgSUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgYjsKLQotICAgIC8qKgot
ICAgICAgKiAocHJvdGVjdGVkKSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhl
IHRleHQgcHJvdmlkZXIuCi0gICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmss
IG9yIGJ5IHRoZSBjbGllbnQgKHVzZXIpIG9mIHRoZSBVVGV4dC4KLSAgICAgICogQHN0YWJsZSBJ
Q1UgMy40Ci0gICAgICAqLwotICAgIGludDMyX3QgICAgICAgICBjOwotCi0gICAgLyogIC0tLS0g
MTYgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnktLS0tICovCi0KLQotICAgIC8qKgotICAgICAgKiAg
UHJpdmF0ZSBmaWVsZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3
b3JrCi0gICAgICAqICAgICBpdHNlbGYuICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5IHRo
ZSB0ZXh0IHByb3ZpZGVycy4KLSAgICAgICogQGludGVybmFsIElDVSAzLjQKLSAgICAgICovCi0g
ICAgaW50NjRfdCAgICAgICAgIHByaXZBOwotICAgIC8qKgotICAgICAgKiAgUHJpdmF0ZSBmaWVs
ZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrCi0gICAgICAq
ICAgICBpdHNlbGYuICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5IHRoZSB0ZXh0IHByb3Zp
ZGVycy4KLSAgICAgICogQGludGVybmFsIElDVSAzLjQKLSAgICAgICovCi0gICAgaW50MzJfdCAg
ICAgICAgIHByaXZCOwotICAgIC8qKgotICAgICAgKiAgUHJpdmF0ZSBmaWVsZCByZXNlcnZlZCBm
b3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrCi0gICAgICAqICAgICBpdHNlbGYu
ICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5IHRoZSB0ZXh0IHByb3ZpZGVycy4KLSAgICAg
ICogQGludGVybmFsIElDVSAzLjQKLSAgICAgICovCi0gICAgaW50MzJfdCAgICAgICAgIHByaXZD
OwotfTsKLQotCi0vKioKLSAqICBDb21tb24gZnVuY3Rpb24gZm9yIHVzZSBieSBUZXh0IFByb3Zp
ZGVyIGltcGxlbWVudGF0aW9ucyB0byBhbGxvY2F0ZSBhbmQvb3IgaW5pdGlhbGl6ZQotICogIGEg
bmV3IFVUZXh0IHN0cnVjdC4gIFRvIGJlIGNhbGxlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg
dXRleHRfb3BlbigpIGZ1bmN0aW9ucy4KLSAqICBJZiB0aGUgc3VwcGxpZWQgVVRleHQgcGFyYW1l
dGVyIGlzIG51bGwsIGEgbmV3IFVUZXh0IHN0cnVjdCB3aWxsIGJlIGFsbG9jYXRlZCBvbiB0aGUg
aGVhcC4KLSAqICBJZiB0aGUgc3VwcGxpZWQgVVRleHQgaXMgYWxyZWFkeSBvcGVuLCB0aGUgcHJv
dmlkZXIncyBjbG9zZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAotICogIHNvIHRoYXQgdGhlIHN0
cnVjdCBjYW4gYmUgcmV1c2VkIGJ5IHRoZSBvcGVuIHRoYXQgaXMgaW4gcHJvZ3Jlc3MuCi0gKgot
ICogQHBhcmFtIHV0ICAgcG9pbnRlciB0byBhIFVUZXh0IHN0cnVjdCB0byBiZSByZS11c2VkLCBv
ciBudWxsIGlmIGEgbmV3IFVUZXh0Ci0gKiAgICAgICAgICAgICBzaG91bGQgYmUgYWxsb2NhdGVk
LgotICogQHBhcmFtIGV4dHJhU3BhY2UgVGhlIGFtb3VudCBvZiBhZGRpdGlvbmFsIHNwYWNlIHRv
IGJlIGFsbG9jYXRlZCBhcyBwYXJ0Ci0gKiAgICAgICAgICAgICBvZiB0aGlzIFVUZXh0LCBmb3Ig
dXNlIGJ5IHR5cGVzIG9mIHByb3ZpZGVycyB0aGF0IHJlcXVpcmUKLSAqICAgICAgICAgICAgIGFk
ZGl0aW9uYWwgc3RvcmFnZS4KLSAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBo
ZXJlLgotICogQHJldHVybiBwb2ludGVyIHRvIHRoZSBVVGV4dCwgYWxsb2NhdGVkIGlmIG5lY2Vz
c2FyeSwgd2l0aCBleHRyYSBzcGFjZSBzZXQgdXAgaWYgcmVxdWVzdGVkLgotICogQHN0YWJsZSBJ
Q1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCi11dGV4dF9zZXR1cChVVGV4
dCAqdXQsIGludDMyX3QgZXh0cmFTcGFjZSwgVUVycm9yQ29kZSAqc3RhdHVzKTsKLQotI2lmbmRl
ZiBVX0hJREVfSU5URVJOQUxfQVBJCi0vKioKLSAgKiBAaW50ZXJuYWwKLSAgKiAgVmFsdWUgdXNl
ZCB0byBoZWxwIGlkZW50aWZ5IGNvcnJlY3RseSBpbml0aWFsaXplZCBVVGV4dCBzdHJ1Y3RzLgot
ICAqICBOb3RlOiAgbXVzdCBiZSBwdWJsaWNseSB2aXNpYmxlIHNvIHRoYXQgVVRFWFRfSU5JVElB
TElaRVIgY2FuIGFjY2VzcyBpdC4KLSAgKi8KLWVudW0gewotICAgIFVURVhUX01BR0lDID0gMHgz
NDVhZDgyYwotfTsKLSNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwotCi0vKioKLSAq
IGluaXRpYWxpemVyIHRvIGJlIHVzZWQgd2l0aCBsb2NhbCAoc3RhY2spIGluc3RhbmNlcyBvZiBh
IFVUZXh0Ci0gKiAgc3RydWN0LiAgVVRleHQgc3RydWN0cyBtdXN0IGJlIGluaXRpYWxpemVkIGJl
Zm9yZSBwYXNzaW5nCi0gKiAgdGhlbSB0byBvbmUgb2YgdGhlIHV0ZXh0X29wZW4gZnVuY3Rpb25z
LgotICoKLSAqIEBzdGFibGUgSUNVIDMuNgotICovCi0jZGVmaW5lIFVURVhUX0lOSVRJQUxJWkVS
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAg
ICAgICAgVVRFWFRfTUFHSUMsICAgICAgICAgIC8qIG1hZ2ljICAgICAgICAgICAgICAgICovIFwK
LSAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiBmbGFncyAgICAgICAg
ICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyog
cHJvdmlkZXJQcm9wcyAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgc2l6ZW9mKFVUZXh0
KSwgICAgICAgIC8qIHNpemVPZlN0cnVjdCAgICAgICAgICovIFwKLSAgICAgICAgICAgICAgICAg
IDAsICAgICAgICAgICAgICAgICAgICAvKiBjaHVua05hdGl2ZUxpbWl0ICAgICAqLyBcCi0gICAg
ICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogZXh0cmFTaXplICAgICAgICAg
ICAgKi8gXAotICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIG5hdGl2
ZUluZGV4aW5nTGltaXQgICovIFwKLSAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAvKiBjaHVua05hdGl2ZVN0YXJ0ICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICAwLCAg
ICAgICAgICAgICAgICAgICAgLyogY2h1bmtPZmZzZXQgICAgICAgICAgKi8gXAotICAgICAgICAg
ICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGNodW5rTGVuZ3RoICAgICAgICAgICov
IFwKLSAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBjaHVua0NvbnRl
bnRzICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAg
LyogcEZ1bmNzICAgICAgICAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgTlVMTCwgICAg
ICAgICAgICAgICAgIC8qIHBFeHRyYSAgICAgICAgICAgICAgICovIFwKLSAgICAgICAgICAgICAg
ICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBjb250ZXh0ICAgICAgICAgICAgICAqLyBcCi0g
ICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCAgICAgLyogcCwgcSwgciAgICAgICAg
ICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIHBy
aXZQICAgICAgICAgICAgICAgICovIFwKLSAgICAgICAgICAgICAgICAgIDAsIDAsIDAsICAgICAg
ICAgICAgICAvKiBhLCBiLCBjICAgICAgICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICAw
LCAwLCAwICAgICAgICAgICAgICAgLyogcHJpdkEsQixDLCAgICAgICAgICAgKi8gXAotICAgICAg
ICAgICAgICAgICAgfQotCi0KLVVfQ0RFQ0xfRU5ECi0KLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggZmU1ZWJmZWFmZjY4Y2Q3
MTU3YTU1NTFmNDUxZjU5MTVlMTcwMTUwZi4uNWIxODk0ZTkxMmU4NGZjNzk3M2U4OTQxZWZmNDg0
MDZlNDg1YmIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBjZWRl
ZDczMGY0NTdmYWRmMGU4MjIwNDgyZTJkZGU3Mjg3MmY4ZDQ2Li5hZmE4ZTEyZDgxYmQ4NWJkOTYz
ZjhkY2IyYzhiZWM1NDc5NzRjMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5j
bHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggYjNkZGQ4YzNkZjgwNzhkZGNjNzdhYjYz
ZDQ0MjE4YTYyNmJjYTQxOC4uNmQ4OGM4OGRkNGFhNmQyZDBhYzM0ZDMxNGFmNmRmMmJhZTI3ZDU5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAKQEAgLTQwLDYgKzQwLDIwIEBACiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3Im
KTsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4KK1JldGFpblB0cjxDR0NvbG9y
UmVmPiBUaW55TFJVQ2FjaGVQb2xpY3k8V2ViQ29yZTo6Q29sb3IsIFJldGFpblB0cjxDR0NvbG9y
UmVmPj46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sK
KyAgICByZXR1cm4gYWRvcHRDRihXZWJDb3JlOjpsZWFrQ0dDb2xvcihjb2xvcikpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0o
SU9TKQogc3RhdGljIENHQ29sb3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VSR0JBKENHQ29s
b3JSZWYgc291cmNlQ29sb3IpCkBAIC0xMDgsMTIgKzEyMiw2IEBAIHN0YXRpYyBDR0NvbG9yUmVm
IGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICByZXR1cm4gQ0dDb2xvckNyZWF0
ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25lbnRzKTsKIH0KIAotdGVtcGxhdGU8PgotUmV0
YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNoZVBvbGljeTxDb2xvciwgUmV0YWluUHRyPENH
Q29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAg
IHJldHVybiBhZG9wdENGKGxlYWtDR0NvbG9yKGNvbG9yKSk7Ci19Ci0KIENHQ29sb3JSZWYgY2Fj
aGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgc3dpdGNoIChjb2xvci5yZ2Io
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCBmZjBiZjgxOTc1MDgxN2NiZTJj
N2JmY2JlYjgxZmI0MWE5MWE3YTgzLi4xNzc3OTllYWFjN2MxZjdiMjI2ZDhlZDBlNGFjZDA3MDA0
Yjg5ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNs
dWRlICJSZW5kZXJUZXh0LmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIK
ICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNmNTBhNWQ2NTg2
NWEzNDFiZmVjZjM3Y2I1Y2JkYzk2NmYzODE4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVV9oCi0jZGVmaW5lIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCi0K
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1UuaCIKLSNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KLSNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBMaW5lQnJlYWtJdGVyYXRv
clBvb2wgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExpbmVCcmVha0l0ZXJhdG9yUG9vbCk7
Ci1wdWJsaWM6Ci0gICAgTGluZUJyZWFrSXRlcmF0b3JQb29sKCkgeyB9Ci0KLSAgICBzdGF0aWMg
TGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQb29sKCkKLSAgICB7Ci0gICAgICAgIHN0YXRp
YyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4qIHBvb2wgPSBuZXcg
V1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+OwotICAgICAgICByZXR1
cm4gKipwb29sOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJpbmcgbWFrZUxvY2FsZVdpdGhCcmVh
a0tleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9k
ZSBtb2RlKQotICAgIHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBsb2NhbGVXaXRoS2V5d29yZDsK
LSAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kKGxvY2FsZSk7Ci0gICAgICAgIGxvY2Fs
ZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIkBicmVhaz0iKTsKLSAgICAgICAgc3dpdGNoICht
b2RlKSB7Ci0gICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2U6Ci0gICAgICAgICAgICBsb2NhbGVX
aXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJsb29zZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTROb3JtYWw6Ci0gICAgICAgICAg
ICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJub3JtYWwiKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0U3RyaWN0Ogot
ICAgICAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgic3RyaWN0Iik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbG9jYWxlV2l0aEtl
eXdvcmQudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBUZXh0QnJlYWtJdGVyYXRvciogdGFrZShj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJv
b2wgaXNDSkspCi0gICAgewotICAgICAgICBBdG9taWNTdHJpbmcgbG9jYWxlV2l0aE9wdGlvbmFs
QnJlYWtLZXl3b3JkOwotICAgICAgICBpZiAobW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGVV
QVgxNCkKLSAgICAgICAgICAgIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCA9IGxvY2Fs
ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3
b3JkID0gbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKLQotICAgICAg
ICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSAwOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG1fcG9vbFtp
XS5maXJzdCA9PSBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQpIHsKLSAgICAgICAgICAg
ICAgICBpdGVyYXRvciA9IG1fcG9vbFtpXS5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgbV9wb29s
LnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICghaXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yID0g
b3BlbkxpbmVCcmVha0l0ZXJhdG9yKGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCwgbW9k
ZSwgaXNDSkspOwotICAgICAgICAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVCghbV92ZW5kZWRJdGVyYXRvcnMu
Y29udGFpbnMoaXRlcmF0b3IpKTsKLSAgICAgICAgbV92ZW5kZWRJdGVyYXRvcnMuc2V0KGl0ZXJh
dG9yLCBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQpOwotICAgICAgICByZXR1cm4gaXRl
cmF0b3I7Ci0gICAgfQotCi0gICAgdm9pZCBwdXQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9y
KQotICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyhpdGVyYXRvciwgbV92ZW5kZWRJdGVyYXRvcnMu
Y29udGFpbnMoaXRlcmF0b3IpKTsKLQotICAgICAgICBpZiAobV9wb29sLnNpemUoKSA9PSBjYXBh
Y2l0eSkgewotICAgICAgICAgICAgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihtX3Bvb2xbMF0uc2Vj
b25kKTsKLSAgICAgICAgICAgIG1fcG9vbC5yZW1vdmUoMCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBtX3Bvb2wuYXBwZW5kKEVudHJ5KG1fdmVuZGVkSXRlcmF0b3JzLnRha2UoaXRlcmF0b3IpLCBp
dGVyYXRvcikpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNh
cGFjaXR5ID0gNDsKLQotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJy
ZWFrSXRlcmF0b3IqPiBFbnRyeTsKLSAgICB0eXBlZGVmIFZlY3RvcjxFbnRyeSwgY2FwYWNpdHk+
IFBvb2w7Ci0gICAgUG9vbCBtX3Bvb2w7Ci0gICAgSGFzaE1hcDxUZXh0QnJlYWtJdGVyYXRvcios
IEF0b21pY1N0cmluZz4gbV92ZW5kZWRJdGVyYXRvcnM7Ci0KLSAgICBmcmllbmQgV1RGOjpUaHJl
YWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+OjpvcGVyYXRvciBMaW5lQnJlYWtJdGVy
YXRvclBvb2wqKCk7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAppbmRleCBkZmNmOWEzNDYyZDViMWIyODRkMTk1
OThhZmUwMzJiM2U0Y2RjZTFiLi40N2QyNDQ3NWFjMDk4OTRlMDM4ODUxYTQ4YmI5YzA1ZWRkZWYz
N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFy
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVz
LmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRl
eHRCb3VuZGFyaWVzLmgiCiAKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGEwYTY2Y2UwYjdlZDE0N2FlN2M2YjNkN2I5NzA5ODIzZTdmZTMyNWYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw5MjkgKzAsMCBAQAotLyoKLSAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkg
VG9yY2ggTW9iaWxlLCBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJl
YWtJdGVyYXRvci5oIgotCi0jaW5jbHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCi0j
aW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgotI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJV
VEYxNi5oIgotI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotCi0vLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJl
dHRlciBuYW1lCi0jZGVmaW5lIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9T
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTEwMCkpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gSXRlcmF0b3IgaW5pdGlhbGl6
YXRpb24KLQotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3IoVUJy
ZWFrSXRlcmF0b3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIGxvY2FsZSA9IGN1cnJlbnRUZXh0QnJl
YWtMb2NhbGVJRCgpKQotewotICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSByZWludGVycHJldF9jYXN0PFRl
eHRCcmVha0l0ZXJhdG9yKj4odWJya19vcGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0
dXMpKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklD
VSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUo
b3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOwotICAgIHJldHVybiBpdGVyYXRvcjsKLX0KLQotI2lm
ICFQTEFURk9STShJT1MpCi0KLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0
ZXJhdG9yV2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJyZWFrUnVsZXMpCi17Ci0gICAgVVBhcnNlRXJy
b3IgcGFyc2VTdGF0dXM7Ci0gICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihicmVha1J1bGVzKTsKLSAgICBhdXRvIHVw
Y29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFr
SXRlcmF0b3IqPih1YnJrX29wZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJhY3RlcnMsIGxlbmd0aCwg
MCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cykpOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRl
cmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yOwotfQotCi0jZW5kaWYKLQotCi0vLyBJdGVyYXRvciB0ZXh0IHNl
dHRpbmcKLQotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4
dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBpZiAo
c3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7Ci0g
ICAgICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7Ci0gICAgICAgIHRleHRM
b2NhbC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKLSAgICAgICAg
dGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKLQotICAgICAgICBVRXJy
b3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVUZXh0KiB0ZXh0ID0g
b3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnM4KCks
IHN0cmluZy5sZW5ndGgoKSwgJm9wZW5TdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKG9w
ZW5TdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoInVUZXh0T3BlbkxhdGluMSBmYWls
ZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFr
SXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlm
IChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidWJy
a19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgdXRleHRfY2xvc2Uo
dGV4dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0
YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
Jml0ZXJhdG9yOwotfQotCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2Fy
ZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcg
c3RyaW5nLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRM
ZW5ndGgpCi17Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkgewotICAgICAgICBVVGV4dFdpdGhC
dWZmZXIgdGV4dExvY2FsOwotICAgICAgICB0ZXh0TG9jYWwudGV4dCA9IFVURVhUX0lOSVRJQUxJ
WkVSOwotICAgICAgICB0ZXh0TG9jYWwudGV4dC5leHRyYVNpemUgPSBzaXplb2YodGV4dExvY2Fs
LmJ1ZmZlcik7Ci0gICAgICAgIHRleHRMb2NhbC50ZXh0LnBFeHRyYSA9IHRleHRMb2NhbC5idWZm
ZXI7Ci0KLSAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAg
ICAgICBVVGV4dCogdGV4dCA9IG9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKCZ0
ZXh0TG9jYWwsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHByaW9yQ29u
dGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZB
SUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigib3BlbkxhdGluMUNv
bnRleHRBd2FyZVVUZXh0UHJvdmlkZXIgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1
cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFVF
cnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRV
VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwg
JnNldFRleHRTdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7
Ci0gICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVz
ICVkIiwgc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHV0ZXh0X2Nsb3NlKHRleHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IFVUZXh0IHRleHRMb2NhbCA9IFVURVhUX0lOSVRJQUxJWkVSOwotCi0gICAgICAgIFVFcnJvckNv
ZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVVRleHQqIHRleHQgPSBvcGVu
VVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKCZ0ZXh0TG9jYWwsIHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0
aCwgJm9wZW5TdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0g
ICAgICAgICAgICBMT0dfRVJST1IoIm9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIg
ZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgfQotCi0gICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwotICAgICAgICBpZiAo
VV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoInVicmtf
c2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIHV0ZXh0X2Nsb3NlKHRl
eHQpOwotICAgIH0KLQotICAgIHJldHVybiAmaXRlcmF0b3I7Ci19Ci0KLQotLy8gU3RhdGljIGl0
ZXJhdG9ycwotCi1UZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpbmcpCi17Ci0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJl
YWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1dPUkQpOwotICAgIGlmICghc3Rh
dGljV29yZEJyZWFrSXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0
dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7
Ci19Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpbmcpCi17Ci0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNTZW50ZW5j
ZUJyZWFrSXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19TRU5URU5DRSk7Ci0gICAg
aWYgKCFzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljU2VudGVuY2VCcmVha0l0
ZXJhdG9yLCBzdHJpbmcpOwotfQotCi1UZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJ
dGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIC8v
IFRoaXMgcnVsZSBzZXQgaXMgYmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1bGVz
IG9mIElDVSA0LjAKLSAgICAvLyA8aHR0cDovL3NvdXJjZS5pY3UtcHJvamVjdC5vcmcvcmVwb3Mv
aWN1L2ljdS90YWdzL3JlbGVhc2UtNC0wL3NvdXJjZS9kYXRhL2Jya2l0ci9jaGFyLnR4dD4uCi0g
ICAgLy8gVGhlIG1ham9yIGRpZmZlcmVuY2VzIGZyb20gdGhlIG9yaWdpbmFsIG9uZXMgYXJlIGxp
c3RlZCBiZWxvdzoKLSAgICAvLyAqIFJlcGxhY2VkICdbXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVh
ayA9IFNwYWNpbmdNYXJrfV0nIHdpdGggJ1tccHtHZW5lcmFsX0NhdGVnb3J5ID0gU3BhY2luZyBN
YXJrfSAtICRFeHRlbmRdJyBmb3IgSUNVIDMuOCBvciBlYXJsaWVyOwotICAgIC8vICogUmVtb3Zl
ZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3ZpbmcgYWZ0ZXIgcHJlcGVuZCBj
aGFyYWN0ZXJzIChCdWcgMjQzNDIpOwotICAgIC8vICogQWRkZWQgcnVsZXMgdGhhdCBwcmV2ZW50
IGEgY3Vyc29yIGZyb20gbW92aW5nIGFmdGVyIHZpcmFtYSBzaWducyBvZiBJbmRpYyBsYW5ndWFn
ZXMgZXhjZXB0IFRhbWlsIChCdWcgMTU3OTApLCBhbmQ7Ci0gICAgLy8gKiBBZGRlZCBydWxlcyB0
aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3ZpbmcgYmVmb3JlIEphcGFuZXNlIGhhbGYtd2lk
dGgga2F0YWthcmEgdm9pY2VkIG1hcmtzLgotICAgIC8vICogQWRkZWQgcnVsZXMgZm9yIHJlZ2lv
bmFsIGluZGljYXRvciBzeW1ib2xzLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrUnVsZXMgPQot
ICAgICAgICAiJENSICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBDUn1dOyIK
LSAgICAgICAgIiRMRiAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTEZ9XTsi
Ci0gICAgICAgICIkQ29udHJvbCA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENvbnRy
b2x9XTsiCi0gICAgICAgICIkVm9pY2VNYXJrcyA9IFtcXHVGRjlFXFx1RkY5Rl07IiAgLy8gSmFw
YW5lc2UgaGFsZi13aWR0aCBrYXRha2FuYSB2b2ljZWQgbWFya3MKLSAgICAgICAgIiRFeHRlbmQg
ID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gRXh0ZW5kfSAkVm9pY2VNYXJrcyAtIFtc
XHUwRTMwIFxcdTBFMzIgXFx1MEU0NSBcXHUwRUIwIFxcdTBFQjJdXTsiCi0gICAgICAgICIkU3Bh
Y2luZ01hcmsgPSBbW1xccHtHZW5lcmFsX0NhdGVnb3J5ID0gU3BhY2luZyBNYXJrfV0gLSAkRXh0
ZW5kXTsiCi0gICAgICAgICIkTCAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9
IEx9XTsiCi0gICAgICAgICIkViAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9
IFZ9XTsiCi0gICAgICAgICIkVCAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9
IFR9XTsiCi0gICAgICAgICIkTFYgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9
IExWfV07IgotICAgICAgICAiJExWVCAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsg
PSBMVlR9XTsiCi0gICAgICAgICIkSGluMCAgICA9IFtcXHUwOTA1LVxcdTA5MzldOyIgICAgLy8g
RGV2YW5hZ2FyaSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRIaW5WICAgID0gXFx1MDk0RDsi
ICAgICAgICAgICAgICAvLyBEZXZhbmFnYXJpIFNpZ24gVmlyYW1hCi0gICAgICAgICIkSGluMSAg
ICA9IFtcXHUwOTE1LVxcdTA5MzldOyIgICAgLy8gRGV2YW5hZ2FyaSBMZXR0ZXIgS2EsLi4uLEhh
Ci0gICAgICAgICIkQmVuMCAgICA9IFtcXHUwOTg1LVxcdTA5QjldOyIgICAgLy8gQmVuZ2FsaSBM
ZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRCZW5WICAgID0gXFx1MDlDRDsiICAgICAgICAgICAg
ICAvLyBCZW5nYWxpIFNpZ24gVmlyYW1hCi0gICAgICAgICIkQmVuMSAgICA9IFtcXHUwOTk1LVxc
dTA5QjldOyIgICAgLy8gQmVuZ2FsaSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkUGFuMCAg
ICA9IFtcXHUwQTA1LVxcdTBBMzldOyIgICAgLy8gR3VybXVraGkgTGV0dGVyIEEsLi4uLEhhCi0g
ICAgICAgICIkUGFuViAgICA9IFxcdTBBNEQ7IiAgICAgICAgICAgICAgLy8gR3VybXVraGkgU2ln
biBWaXJhbWEKLSAgICAgICAgIiRQYW4xICAgID0gW1xcdTBBMTUtXFx1MEEzOV07IiAgICAvLyBH
dXJtdWtoaSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkR3VqMCAgICA9IFtcXHUwQTg1LVxc
dTBBQjldOyIgICAgLy8gR3VqYXJhdGkgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkR3VqViAg
ICA9IFxcdTBBQ0Q7IiAgICAgICAgICAgICAgLy8gR3VqYXJhdGkgU2lnbiBWaXJhbWEKLSAgICAg
ICAgIiRHdWoxICAgID0gW1xcdTBBOTUtXFx1MEFCOV07IiAgICAvLyBHdWphcmF0aSBMZXR0ZXIg
S2EsLi4uLEhhCi0gICAgICAgICIkT3JpMCAgICA9IFtcXHUwQjA1LVxcdTBCMzldOyIgICAgLy8g
T3JpeWEgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkT3JpViAgICA9IFxcdTBCNEQ7IiAgICAg
ICAgICAgICAgLy8gT3JpeWEgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRPcmkxICAgID0gW1xcdTBC
MTUtXFx1MEIzOV07IiAgICAvLyBPcml5YSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkVGVs
MCAgICA9IFtcXHUwQzA1LVxcdTBDMzldOyIgICAgLy8gVGVsdWd1IExldHRlciBBLC4uLixIYQot
ICAgICAgICAiJFRlbFYgICAgPSBcXHUwQzREOyIgICAgICAgICAgICAgIC8vIFRlbHVndSBTaWdu
IFZpcmFtYQotICAgICAgICAiJFRlbDEgICAgPSBbXFx1MEMxNC1cXHUwQzM5XTsiICAgIC8vIFRl
bHVndSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkS2FuMCAgICA9IFtcXHUwQzg1LVxcdTBD
QjldOyIgICAgLy8gS2FubmFkYSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRLYW5WICAgID0g
XFx1MENDRDsiICAgICAgICAgICAgICAvLyBLYW5uYWRhIFNpZ24gVmlyYW1hCi0gICAgICAgICIk
S2FuMSAgICA9IFtcXHUwQzk1LVxcdTBDQjldOyIgICAgLy8gS2FubmFkYSBMZXR0ZXIgQSwuLi4s
SGEKLSAgICAgICAgIiRNYWwwICAgID0gW1xcdTBEMDUtXFx1MEQzOV07IiAgICAvLyBNYWxheWFs
YW0gTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkTWFsViAgICA9IFxcdTBENEQ7IiAgICAgICAg
ICAgICAgLy8gTWFsYXlhbGFtIFNpZ24gVmlyYW1hCi0gICAgICAgICIkTWFsMSAgICA9IFtcXHUw
RDE1LVxcdTBEMzldOyIgICAgLy8gTWFsYXlhbGFtIExldHRlciBBLC4uLixIYQotICAgICAgICAi
JFJJICAgICAgPSBbXFxVMDAwMUYxRTYtXFxVMDAwMUYxRkZdOyIgLy8gRW1vamkgcmVnaW9uYWwg
aW5kaWNhdG9ycwotICAgICAgICAiJFpXSiAgICAgPSBcXHUyMDBEOyIgICAgICAgICAgICAgICAv
LyBaZXJvIHdpZHRoIGpvaW5lcgotICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgICAg
ICAgICAgICAvLyBFbW9qaS1zdHlsZSB2YXJpYXRpb24gc2VsZWN0b3IKLSNpZiBBRERJVElPTkFM
X0VNT0pJX1NVUFBPUlQKLSAgICAgICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAx
RjQ0MSBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4QiBcXFUwMDAxRjVFOF07IiAv
LyBFbW9qaSB0aGF0IHBhcnRpY2lwYXRlIGluIFpXSiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9q
aUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNkY5IFxcdTI3MEEtXFx1MjcwRCBcXFUwMDAxRjM4NSBc
XFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDQSBcXFUwMDAxRjNDQiBcXFUwMDAxRjQ0
Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAx
RjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUw
MDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU3NSBc
XFUwMDAxRjU5MCBcXFUwMDAxRjU5NSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0
NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAx
RjZCNiBcXFUwMDAxRjZDMCBcXFUwMDAxRjkxOF0gOyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpw
YXRyaWNrIG1vZGlmaWVycwotI2Vsc2UKLSAgICAgICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2
NCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4Ql07IiAvLyBFbW9qaSB0aGF0IHBh
cnRpY2lwYXRlIGluIFpXSiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1
MjYxRCBcXHUyNzBBLVxcdTI3MEMgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQg
XFxVMDAwMUYzQzcgXFxVMDAwMUYzQ0EgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0
NDYtXFxVMDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAw
MUY0NzggXFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxV
MDAwMUY0ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcg
XFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2
QjYgXFxVMDAwMUY2QzBdIDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmll
cnMKLSNlbmRpZgotICAgICAgICAiJEVtb2ppTW9kcyA9IFtcXFUwMDAxRjNGQi1cXFUwMDAxRjNG
Rl07IiAvLyBGaXR6cGF0cmljayBtb2RpZmllcnMKLSAgICAgICAgIiEhY2hhaW47IgotI2lmIEFE
RElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICAgICAiISFSSU5vQ2hhaW47IgotI2VuZGlmCi0g
ICAgICAgICIhIWZvcndhcmQ7IgotICAgICAgICAiJENSICRMRjsiCi0gICAgICAgICIkTCAoJEwg
fCAkViB8ICRMViB8ICRMVlQpOyIKLSAgICAgICAgIigkTFYgfCAkVikgKCRWIHwgJFQpOyIKLSAg
ICAgICAgIigkTFZUIHwgJFQpICRUOyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAg
ICAgICAgIiRSSSAkUkkgJEV4dGVuZCogLyAkUkk7IgotICAgICAgICAiJFJJICRSSSAkRXh0ZW5k
KjsiCi0gICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRFeHRlbmQ7IgotICAgICAgICAiW14k
Q29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7IgotI2Vsc2UKLSAgICAgICAgIlteJENvbnRy
b2wgJENSICRMRl0gJEV4dGVuZDsiCi0gICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRTcGFj
aW5nTWFyazsiCi0gICAgICAgICIkUkkgJFJJIC8gJFJJOyIKLSAgICAgICAgIiRSSSAkUkk7Igot
I2VuZGlmCi0gICAgICAgICIkSGluMCAkSGluViAkSGluMTsiICAgICAgICAgICAgICAgLy8gRGV2
YW5hZ2FyaSBWaXJhbWEgKGZvcndhcmQpCi0gICAgICAgICIkQmVuMCAkQmVuViAkQmVuMTsiICAg
ICAgICAgICAgICAgLy8gQmVuZ2FsaSBWaXJhbWEgKGZvcndhcmQpCi0gICAgICAgICIkUGFuMCAk
UGFuViAkUGFuMTsiICAgICAgICAgICAgICAgLy8gR3VybXVraGkgVmlyYW1hIChmb3J3YXJkKQot
ICAgICAgICAiJEd1ajAgJEd1alYgJEd1ajE7IiAgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZp
cmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRPcmkwICRPcmlWICRPcmkxOyIgICAgICAgICAgICAg
ICAvLyBPcml5YSBWaXJhbWEgKGZvcndhcmQpCi0gICAgICAgICIkVGVsMCAkVGVsViAkVGVsMTsi
ICAgICAgICAgICAgICAgLy8gVGVsdWd1IFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRLYW4w
ICRLYW5WICRLYW4xOyIgICAgICAgICAgICAgICAvLyBLYW5uYWRhIFZpcmFtYSAoZm9yd2FyZCkK
LSAgICAgICAgIiRNYWwwICRNYWxWICRNYWwxOyIgICAgICAgICAgICAgICAvLyBNYWxheWFsYW0g
VmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJFpXSiAkRW1vamlGb3JTZXFzOyIgICAgICAgICAg
ICAgIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9q
aUZvck1vZHMgJEVtb2ppVmFyPyAkRW1vamlNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2VlbiBy
ZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBGaXR6
cGF0cmljayBtb2RpZmllcgotICAgICAgICAiISFyZXZlcnNlOyIKLSAgICAgICAgIiRMRiAkQ1I7
IgotICAgICAgICAiKCRMIHwgJFYgfCAkTFYgfCAkTFZUKSAkTDsiCi0gICAgICAgICIoJFYgfCAk
VCkgKCRMViB8ICRWKTsiCi0gICAgICAgICIkVCAoJExWVCB8ICRUKTsiCi0jaWYgQURESVRJT05B
TF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIkRXh0ZW5kKiAkUkkgJFJJIC8gJEV4dGVuZCogJFJJ
ICRSSTsiCi0gICAgICAgICIkRXh0ZW5kKiAkUkkgJFJJOyIKLSAgICAgICAgIiRFeHRlbmQgICAg
ICBbXiRDb250cm9sICRDUiAkTEZdOyIKLSAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9s
ICRDUiAkTEZdOyIKLSNlbHNlCi0gICAgICAgICIkRXh0ZW5kICAgICAgW14kQ29udHJvbCAkQ1Ig
JExGXTsiCi0gICAgICAgICIkU3BhY2luZ01hcmsgW14kQ29udHJvbCAkQ1IgJExGXTsiCi0gICAg
ICAgICIkUkkgJFJJIC8gJFJJICRSSTsiCi0gICAgICAgICIkUkkgJFJJOyIKLSNlbmRpZgotICAg
ICAgICAiJEhpbjEgJEhpblYgJEhpbjA7IiAgICAgICAgICAgICAgIC8vIERldmFuYWdhcmkgVmly
YW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRCZW4xICRCZW5WICRCZW4wOyIgICAgICAgICAgICAg
ICAvLyBCZW5nYWxpIFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAgICIkUGFuMSAkUGFuViAkUGFu
MDsiICAgICAgICAgICAgICAgLy8gR3VybXVraGkgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAg
IiRHdWoxICRHdWpWICRHdWowOyIgICAgICAgICAgICAgICAvLyBHdWphcmF0aSBWaXJhbWEgKGJh
Y2t3YXJkKQotICAgICAgICAiJE9yaTEgJE9yaVYgJE9yaTA7IiAgICAgICAgICAgICAgIC8vIEd1
amFyYXRpIFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAgICIkVGVsMSAkVGVsViAkVGVsMDsiICAg
ICAgICAgICAgICAgLy8gVGVsdWd1IFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAgICIkS2FuMSAk
S2FuViAkS2FuMDsiICAgICAgICAgICAgICAgLy8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQot
ICAgICAgICAiJE1hbDEgJE1hbFYgJE1hbDA7IiAgICAgICAgICAgICAgIC8vIE1hbGF5YWxhbSBW
aXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJEVtb2ppRm9yU2VxcyAkWldKOyIgICAgICAgICAg
ICAgIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9q
aU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2VlbiBy
ZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBGaXR6
cGF0cmljayBtb2RpZmllcgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICAgICAi
ISFzYWZlX3JldmVyc2U7IgotICAgICAgICAiJFJJICRSSSs7IgotICAgICAgICAiWyRFbW9qaVZh
ciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCi0gICAgICAgICIhIXNhZmVfZm9yd2FyZDsi
Ci0gICAgICAgICIkUkkgJFJJKzsiCi0gICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIg
JEVtb2ppTW9kc10rOyI7Ci0jZWxzZQotICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlNb2RzXSsg
JEVtb2ppRm9yTW9kczsiCi0gICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIgJEVtb2pp
TW9kc10rOyIKLSAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKLSAgICAgICAgIiEhc2FmZV9mb3J3
YXJkOyI7Ci0jZW5kaWYKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY0N1cnNv
ck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoa1J1bGVzKTsK
LSNlbHNlIC8vIFBMQVRGT1JNKElPUykKLSAgICAvLyBVc2UgdGhlIHNwZWNpYWwgVGhhaSBjaGFy
YWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBsb2NhbGVzCi0gICAgc3RhdGljIFRleHRCcmVh
a0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJh
dG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCi0g
ICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY0N1cnNvck1vdmVt
ZW50SXRlcmF0b3IsIHN0cmluZyk7Ci19Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGlu
ZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5n
dGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQotewotICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9v
bCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7Ci0gICAgaWYgKCFpdGVyYXRvcikKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0
ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0
aCk7Ci19Ci0KLXZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvcikKLXsKLSAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7Ci0KLSAg
ICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS5wdXQoaXRlcmF0b3IpOwotfQot
Ci1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9sb2d1ZSA9Ci0gICAgIiEhY2hhaW47IgotICAg
ICIhIUxCQ01Ob0NoYWluOyIKLSAgICAiISFsb29rQWhlYWRIYXJkQnJlYWs7IjsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNCZWZvcmUgPQotICAgIC8vIGV4cGxpY2l0bHkg
ZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lvbnMgcHJpb3IgdG8gNDkgZG9uJ3Qgc3VwcG9y
dCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6Ci0gICAgIiRDSiA9IFsi
Ci0jaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJTSU9OX01J
Tk9SX05VTSA+PSA5KQotICAgICI6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0
ZXI6IgotI2Vsc2UKLSAgICAiXFx1MzA0MVxcdTMwNDNcXHUzMDQ1XFx1MzA0N1xcdTMwNDlcXHUz
MDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4RVxcdTMwOTVcXHUzMDk2XFx1MzBBMVxcdTMw
QTNcXHUzMEE1XFx1MzBBNyIKLSAgICAiXFx1MzBBOVxcdTMwQzNcXHUzMEUzXFx1MzBFNVxcdTMw
RTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZDIgotICAgICJcXHUzMUYwXFx1MzFGMVxcdTMx
RjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2XFx1MzFGN1xcdTMxRjhcXHUzMUY5XFx1MzFG
QVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVcXHUzMUZGIgotICAgICJcXHVGRjY3XFx1RkY2
OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNcXHVGRjZEXFx1RkY2RVxcdUZGNkZcXHVGRjcw
IgotI2VuZGlmCi0gICAgIl07IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVu
dHNDdXN0b21Mb29zZUNKSyA9Ci0gICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNdOyIKLSAg
ICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxcdUZGMDFcXHVGRjFGXTsiCi0gICAgIiRJRF9T
VUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSBbXFx1MjAyNVxcdTIwMjZdOyIKLSAgICAiJElTX1NV
QiA9IFtcXHUwMDNBXFx1MDAzQl07IgotICAgICIkTlNfU1VCID0gW1xcdTIwM0NcXHUyMDQ3XFx1
MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMwQTBcXHUz
MEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYxQlxcdUZGNjVdOyIKLSAgICAiJFBPX1NVQiA9
IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMwXFx1MjAzMlxcdTIwMzNcXHUyMTAzXFx1RkYw
NVxcdUZGRTBdOyIKLSAgICAiJFBSX1NVQiA9IFtcXHUwMDI0XFx1MDBBM1xcdTAwQTVcXHUyMEFD
XFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07IgotICAgICIkSURfQUREID0gWyRDSiAkQkFf
U1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICROU19TVUIgJFBPX1NVQiAkUFJfU1VCXTsiCi0g
ICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50
c0N1c3RvbUxvb3NlTm9uQ0pLID0KLSAgICAiJEJBX1NVQiA9ICcnOyIKLSAgICAiJEVYX1NVQiA9
ICcnOyIKLSAgICAiJElEX1NVQiA9ICcnOyIKLSAgICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1MjAy
Nl07IgotICAgICIkSVNfU1VCID0gJyc7IgotICAgICIkTlNfU1VCID0gW1xcdTMwMDVcXHUzMDNC
XFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07IgotICAgICIkUE9fU1VCID0gJyc7IgotICAg
ICIkUFJfU1VCID0gJyc7IgotICAgICIkSURfQUREID0gWyRDSiAkSU5fU1VCICROU19TVUJdOyIK
LSAgICAiJE5TX0FERCA9ICcnOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tTm9ybWFsQ0pLID0KLSAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAxM107Igot
ICAgICIkRVhfU1VCID0gJyc7IgotICAgICIkSU5fU1VCID0gJyc7IgotICAgICIkSURfU1VCID0g
Jyc7IgotICAgICIkSVNfU1VCID0gJyc7IgotICAgICIkTlNfU1VCID0gW1xcdTMwMUNcXHUzMEEw
XTsiCi0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9B
REQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07IgotICAgICIkTlNfQUREID0gJyc7IjsKLQotc3Rh
dGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksgPQotICAg
ICIkQkFfU1VCID0gJyc7IgotICAgICIkRVhfU1VCID0gJyc7IgotICAgICIkSURfU1VCID0gJyc7
IgotICAgICIkSU5fU1VCID0gJyc7IgotICAgICIkSVNfU1VCID0gJyc7IgotICAgICIkTlNfU1VC
ID0gJyc7IgotICAgICIkUE9fU1VCID0gJyc7IgotICAgICIkUFJfU1VCID0gJyc7IgotICAgICIk
SURfQUREID0gWyRDSl07IgotICAgICIkTlNfQUREID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNo
YXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgPQotICAgICIkQkFfU1VCID0gJyc7
IgotICAgICIkRVhfU1VCID0gJyc7IgotICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSU5fU1VC
ID0gJyc7IgotICAgICIkSVNfU1VCID0gJyc7IgotICAgICIkTlNfU1VCID0gJyc7IgotICAgICIk
UE9fU1VCID0gJyc7IgotICAgICIkUFJfU1VCID0gJyc7IgotICAgICIkSURfQUREID0gJyc7Igot
ICAgICIkTlNfQUREID0gWyRDSl07IjsKLQotI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9t
U3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSwotI2RlZmlu
ZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyAgICAgICAgdWF4MTRBc3NpZ25tZW50
c0N1c3RvbU5vcm1hbENKSwotI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdE5v
bkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdE5vbkNKSwotCi1zdGF0aWMgY29u
c3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVyID0KLSAgICAiJEFJID0gWzpMaW5lQnJlYWsg
PSBBbWJpZ3VvdXM6XTsiCi0gICAgIiRBTCA9IFs6TGluZUJyZWFrID0gQWxwaGFiZXRpYzpdOyIK
LSAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJlYWtfQWZ0ZXI6XSAtICRCQV9TVUJdOyIKLSAg
ICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19CZWZvcmU6XTsiCi0gICAgIiRCSyA9IFs6TGlu
ZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07IgotICAgICIkQjIgPSBbOkxpbmVCcmVhayA9IEJy
ZWFrX0JvdGg6XTsiCi0gICAgIiRDQiA9IFs6TGluZUJyZWFrID0gQ29udGluZ2VudF9CcmVhazpd
OyIKLSAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QdW5jdHVhdGlvbjpdOyIKLSAgICAi
JENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdfTWFyazpdOyIKLSAgICAiJENQID0gWzpMaW5l
QnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIKLSAgICAiJENSID0gWzpMaW5lQnJlYWsgPSBD
YXJyaWFnZV9SZXR1cm46XTsiCi0gICAgIiRFWCA9IFtbOkxpbmVCcmVhayA9IEV4Y2xhbWF0aW9u
Ol0gLSAkRVhfU1VCXTsiCi0gICAgIiRHTCA9IFs6TGluZUJyZWFrID0gR2x1ZTpdOyIKLSNpZiAo
VV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVN
ID49IDkpCi0gICAgIiRITCA9IFs6TGluZUJyZWFrID0gSGVicmV3X0xldHRlcjpdOyIKLSNlbHNl
Ci0gICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpMZXR0ZXI6XV07IgotI2VuZGlmCi0gICAgIiRI
WSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07IgotICAgICIkSDIgPSBbOkxpbmVCcmVhayA9IEgy
Ol07IgotICAgICIkSDMgPSBbOkxpbmVCcmVhayA9IEgzOl07IgotICAgICIkSUQgPSBbW1tbOkxp
bmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pdICRJRF9BRERdIC0gJElEX1NVQl07IgotICAg
ICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFyYWJsZTpdIC0gJElOX1NVQl07IgotICAgICIk
SVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1lcmljOl0gLSAkSVNfU1VCXTsiCi0gICAgIiRK
TCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCi0gICAgIiRKViA9IFs6TGluZUJyZWFrID0gSlY6XTsi
Ci0gICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6XTsiCi0gICAgIiRMRiA9IFs6TGluZUJyZWFr
ID0gTGluZV9GZWVkOl07IgotICAgICIkTkwgPSBbOkxpbmVCcmVhayA9IE5leHRfTGluZTpdOyIK
LSAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBOb25zdGFydGVyOl0gLSAkQ0pdICROU19BRERd
IC0gJE5TX1NVQl07IgotICAgICIkTlUgPSBbOkxpbmVCcmVhayA9IE51bWVyaWM6XTsiCi0gICAg
IiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5jdHVhdGlvbjpdOyIKLSAgICAiJFBPID0gW1s6
TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0gLSAkUE9fU1VCXTsiCi0gICAgIiRQUiA9IFtb
OkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0gLSAkUFJfU1VCXTsiCi0gICAgIiRRVSA9IFs6
TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgotICAgICIkUkkgPSBbXFxVMDAwMUYxRTYtXFxVMDAw
MUYxRkZdOyIKLSAgICAiJFNBID0gWzpMaW5lQnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6XTsiCi0g
ICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9nYXRlOl07IgotICAgICIkU1AgPSBbOkxpbmVC
cmVhayA9IFNwYWNlOl07IgotICAgICIkU1kgPSBbOkxpbmVCcmVhayA9IEJyZWFrX1N5bWJvbHM6
XTsiCi0gICAgIiRXSiA9IFs6TGluZUJyZWFrID0gV29yZF9Kb2luZXI6XTsiCi0gICAgIiRYWCA9
IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKLSAgICAiJFpXID0gWzpMaW5lQnJlYWsgPSBaV1Nw
YWNlOl07IgotICAgICIkWldKID0gXFx1MjAwRDsiCi0gICAgIiRFbW9qaVZhciA9IFxcdUZFMEY7
IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkRW1vamlGb3JTZXFzID0gW1xc
dTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEIgXFxV
MDAwMUY1RThdOyIKLSAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI2RjkgXFx1Mjcw
QS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0NB
IFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFG
NDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAw
MDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxc
VTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAwMDFGNTk2
IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFG
NkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4XSA7IiAv
LyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCi0jZWxzZQotICAgICIkRW1v
amlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEJd
OyIKLSAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1MjcwQyBcXFUwMDAx
RjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAxRjNDQSBcXFUw
MDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAxRjQ2Ni1c
XFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUwMDAxRjQ4
MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBcXFUwMDAx
RjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUw
MDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIgLy8gRW1vamkg
dGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycwotI2VuZGlmCi0gICAgIiRFbW9qaU1vZHMg
PSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIKLSAgICAiJGRpY3Rpb25hcnkgPSBbOkxpbmVC
cmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKLSAgICAiJEFMUGx1cyA9IFskQUwgJEFJICRTQSAk
U0cgJFhYXTsiCi0gICAgIiRBTGNtID0gJEFMUGx1cyAkQ00qOyIKLSAgICAiJEJBY20gPSAkQkEg
JENNKjsiCi0gICAgIiRCQmNtID0gJEJCICRDTSo7IgotICAgICIkQjJjbSA9ICRCMiAkQ00qOyIK
LSAgICAiJENMY20gPSAkQ0wgJENNKjsiCi0gICAgIiRDUGNtID0gJENQICRDTSo7IgotICAgICIk
RVhjbSA9ICRFWCAkQ00qOyIKLSAgICAiJEdMY20gPSAkR0wgJENNKjsiCi0gICAgIiRITGNtID0g
JEhMICRDTSo7IgotICAgICIkSFljbSA9ICRIWSAkQ00qOyIKLSAgICAiJEgyY20gPSAkSDIgJENN
KjsiCi0gICAgIiRIM2NtID0gJEgzICRDTSo7IgotICAgICIkSURjbSA9ICRJRCAkQ00qOyIKLSAg
ICAiJElOY20gPSAkSU4gJENNKjsiCi0gICAgIiRJU2NtID0gJElTICRDTSo7IgotICAgICIkSkxj
bSA9ICRKTCAkQ00qOyIKLSAgICAiJEpWY20gPSAkSlYgJENNKjsiCi0gICAgIiRKVGNtID0gJEpU
ICRDTSo7IgotICAgICIkTlNjbSA9ICROUyAkQ00qOyIKLSAgICAiJE5VY20gPSAkTlUgJENNKjsi
Ci0gICAgIiRPUGNtID0gJE9QICRDTSo7IgotICAgICIkUE9jbSA9ICRQTyAkQ00qOyIKLSAgICAi
JFBSY20gPSAkUFIgJENNKjsiCi0gICAgIiRRVWNtID0gJFFVICRDTSo7IgotICAgICIkUkljbSA9
ICRRVSAkQ00qOyIKLSAgICAiJFNZY20gPSAkU1kgJENNKjsiCi0gICAgIiRXSmNtID0gJFdKICRD
TSo7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0Rm9yd2FyZCA9Ci0gICAgIiEhZm9yd2Fy
ZDsiCi0gICAgIiRDQU5fQ00gPSBbXiRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07IgotICAg
ICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKLSAgICAiJEFMX0ZP
TExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCi0gICAgIiRBTF9GT0xMT1df
Q00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kgJFdKICRHTCAkT1AgJFFVICRCQSAkSFkgJE5T
ICRJTiAkTlUgJEFMUGx1c107IgotICAgICIkQUxfRk9MTE9XID0gWyRBTF9GT0xMT1dfTk9DTSAk
QUxfRk9MTE9XX0NNXTsiCi0gICAgIiRMQjRCcmVha3MgPSBbJEJLICRDUiAkTEYgJE5MXTsiCi0g
ICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1IgJExGICROTF07IgotICAgICIkTEI4QnJlYWtz
ID0gWyRMQjRCcmVha3MgJFpXXTsiCi0gICAgIiRMQjhOb25CcmVha3MgPSBbWyRMQjROb25CcmVh
a3NdIC0gWyRaV11dOyIKLSAgICAiJExCMThOb25CcmVha3MgPSBbJExCOE5vbkJyZWFrcyAtIFsk
U1BdXTsiCi0gICAgIiRMQjE4QnJlYWtzID0gWyRMQjhCcmVha3MgJFNQXTsiCi0gICAgIiRMQjIw
Tm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0gJENCXTsiCi0gICAgIiRBTFBsdXMgJENNKzsi
Ci0gICAgIiRCQSAkQ00rOyIKLSAgICAiJEJCICRDTSs7IgotICAgICIkQjIgJENNKzsiCi0gICAg
IiRDTCAkQ00rOyIKLSAgICAiJENQICRDTSs7IgotICAgICIkRVggJENNKzsiCi0gICAgIiRHTCAk
Q00rOyIKLSAgICAiJEhMICRDTSs7IgotICAgICIkSFkgJENNKzsiCi0gICAgIiRIMiAkQ00rOyIK
LSAgICAiJEgzICRDTSs7IgotICAgICIkSUQgJENNKzsiCi0gICAgIiRJTiAkQ00rOyIKLSAgICAi
JElTICRDTSs7IgotICAgICIkSkwgJENNKzsiCi0gICAgIiRKViAkQ00rOyIKLSAgICAiJEpUICRD
TSs7IgotICAgICIkTlMgJENNKzsiCi0gICAgIiROVSAkQ00rOyIKLSAgICAiJE9QICRDTSs7Igot
ICAgICIkUE8gJENNKzsiCi0gICAgIiRQUiAkQ00rOyIKLSAgICAiJFFVICRDTSs7IgotICAgICIk
U1kgJENNKzsiCi0gICAgIiRXSiAkQ00rOyIKLSAgICAiJENSICRMRiB7MTAwfTsiCi0gICAgIiRM
QjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07IgotICAgICIkQ0FOX0NNICRDTSogJExCNEJy
ZWFrcyB7MTAwfTsiCi0gICAgIiRDTSsgJExCNEJyZWFrcyB7MTAwfTsiCi0gICAgIiRMQjROb25C
cmVha3MgWyRTUCAkWlddOyIKLSAgICAiJENBTl9DTSAkQ00qIFskU1AgJFpXXTsiCi0gICAgIiRD
TSsgWyRTUCAkWlddOyIKLSAgICAiJEVtb2ppRm9yU2VxcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM/
ICRaV0ogJEVtb2ppRm9yU2VxczsiCi0gICAgIiRDQU5fQ00gJENNKzsiCi0gICAgIiRDTSs7Igot
ICAgICIkQ0FOX0NNICRDTSogJFdKY207IgotICAgICIkTEI4Tm9uQnJlYWtzICRXSmNtOyIKLSAg
ICAiJENNKyAkV0pjbTsiCi0gICAgIiRXSmNtICRDQU5UX0NNOyIKLSAgICAiJFdKY20gJENBTl9D
TSAkQ00qOyIKLSAgICAiJEdMY20gJENBTl9DTSAkQ00qOyIKLSAgICAiJEdMY20gJENBTlRfQ007
IgotICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRTUCAkQkEgJEhZXV0gJENNKiAkR0xjbTsiCi0g
ICAgIiRDTSsgR0xjbTsiCi0gICAgIiRMQjhOb25CcmVha3MgJENMOyIKLSAgICAiJENBTl9DTSAk
Q00qICRDTDsiCi0gICAgIiRDTSsgJENMOyIKLSAgICAiJExCOE5vbkJyZWFrcyAkQ1A7IgotICAg
ICIkQ0FOX0NNICRDTSogJENQOyIKLSAgICAiJENNKyAkQ1A7IgotICAgICIkTEI4Tm9uQnJlYWtz
ICRFWDsiCi0gICAgIiRDQU5fQ00gJENNKiAkRVg7IgotICAgICIkQ00rICRFWDsiCi0gICAgIiRM
QjhOb25CcmVha3MgJElTOyIKLSAgICAiJENBTl9DTSAkQ00qICRJUzsiCi0gICAgIiRDTSsgJElT
OyIKLSAgICAiJExCOE5vbkJyZWFrcyAkU1k7IgotICAgICIkQ0FOX0NNICRDTSogJFNZOyIKLSAg
ICAiJENNKyAkU1k7IgotICAgICIkT1BjbSAkU1AqICRDQU5fQ00gJENNKjsiCi0gICAgIiRPUGNt
ICRTUCogJENBTlRfQ007IgotICAgICIkT1BjbSAkU1ArICRDTSsgJEFMX0ZPTExPVz87IgotICAg
ICIkUVVjbSAkU1AqICRPUGNtOyIKLSAgICAiKCRDTGNtIHwgJENQY20pICRTUCogJE5TY207Igot
ICAgICIkQjJjbSAkU1AqICRCMmNtOyIKLSAgICAiJExCMThOb25CcmVha3MgJENNKiAkUVVjbTsi
Ci0gICAgIiRDTSsgJFFVY207IgotICAgICIkUVVjbSAuPzsiCi0gICAgIiRRVWNtICRMQjE4Tm9u
QnJlYWtzICRDTSo7IgotICAgICIkTEIyME5vbkJyZWFrcyAkQ00qICgkQkFjbSB8ICRIWWNtIHwg
JE5TY20pOyAiCi0gICAgIiRCQmNtIFteJENCXTsiCi0gICAgIiRCQmNtICRMQjIwTm9uQnJlYWtz
ICRDTSo7IgotICAgICIkSExjbSAoJEhZY20gfCAkQkFjbSkgW14kQ0JdPzsiCi0gICAgIigkQUxj
bSB8ICRITGNtKSAkSU5jbTsiCi0gICAgIiRDTSsgJElOY207IgotICAgICIkSURjbSAkSU5jbTsi
Ci0gICAgIiRJTmNtICRJTmNtOyIKLSAgICAiJE5VY20gJElOY207IgotICAgICIkSURjbSAkUE9j
bTsiCi0gICAgIiRBTGNtICROVWNtOyIKLSAgICAiJEhMY20gJE5VY207IgotICAgICIkQ00rICRO
VWNtOyIKLSAgICAiJE5VY20gJEFMY207IgotICAgICIkTlVjbSAkSExjbTsiCi0gICAgIiRQUmNt
ICRJRGNtOyIKLSAgICAiJFBSY20gKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiJFBPY20gKCRBTGNt
IHwgJEhMY20pOyIKLSAgICAiKCRQUmNtIHwgJFBPY20pPyAoJE9QY20gfCAkSFljbSk/ICROVWNt
ICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENMY20gfCAkQ1BjbSk/ICgkUFJjbSB8ICRQT2Nt
KT87IgotICAgICIkSkxjbSAoJEpMY20gfCAkSlZjbSB8ICRIMmNtIHwgJEgzY20pOyIKLSAgICAi
KCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNtKTsiCi0gICAgIigkSlRjbSB8ICRIM2NtKSAk
SlRjbTsiCi0gICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAkSU5j
bTsiCi0gICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAkUE9jbTsi
Ci0gICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKTsiCi0g
ICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAkSExjbSk7IgotICAgICIkQ00rICgkQUxjbSB8
ICRITGNtKTsiCi0gICAgIiRJU2NtICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIigkQUxjbSB8ICRI
TGNtIHwgJE5VY20pICRPUGNtOyIKLSAgICAiJENNKyAkT1BjbTsiCi0gICAgIiRDUGNtICgkQUxj
bSB8ICRITGNtIHwgJE5VY20pOyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAi
JFJJY20gJFJJY207IgotI2VuZGlmCi0gICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFyPyAkRW1v
amlNb2RzOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFJldmVyc2UgPQotICAgICIhIXJl
dmVyc2U7IgotICAgICIkQ00rICRBTFBsdXM7IgotICAgICIkQ00rICRCQTsiCi0gICAgIiRDTSsg
JEJCOyIKLSAgICAiJENNKyAkQjI7IgotICAgICIkQ00rICRDTDsiCi0gICAgIiRDTSsgJENQOyIK
LSAgICAiJENNKyAkRVg7IgotICAgICIkQ00rICRHTDsiCi0gICAgIiRDTSsgJEhMOyIKLSAgICAi
JENNKyAkSFk7IgotICAgICIkQ00rICRIMjsiCi0gICAgIiRDTSsgJEgzOyIKLSAgICAiJENNKyAk
SUQ7IgotICAgICIkQ00rICRJTjsiCi0gICAgIiRDTSsgJElTOyIKLSAgICAiJENNKyAkSkw7Igot
ICAgICIkQ00rICRKVjsiCi0gICAgIiRDTSsgJEpUOyIKLSAgICAiJENNKyAkTlM7IgotICAgICIk
Q00rICROVTsiCi0gICAgIiRDTSsgJE9QOyIKLSAgICAiJENNKyAkUE87IgotICAgICIkQ00rICRQ
UjsiCi0gICAgIiRDTSsgJFFVOyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAi
JENNKyAkUkk7IgotI2VuZGlmCi0gICAgIiRDTSsgJFNZOyIKLSAgICAiJENNKyAkV0o7IgotICAg
ICIkQ00rOyIKLSAgICAiJEFMX0ZPTExPVyAkQ00rIC8gKFskQksgJENSICRMRiAkTkwgJFpXIHtl
b2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRDTSogKFteJE9QICRDTSAkU1BdIHwgWyRBTCB7
ZW9mfV0pKTsiCi0gICAgIlskUFJdIC8gJENNKyBbJEJLICRDUiAkTEYgJE5MICRaVyAkU1Age2Vv
Zn1dOyIKLSAgICAiJExCNEJyZWFrcyBbJExCNE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiJExCNEJy
ZWFrcyAkQ00rICRDQU5fQ007IgotICAgICIkTEYgJENSOyIKLSAgICAiWyRTUCAkWlddIFskTEI0
Tm9uQnJlYWtzLSRDTV07IgotICAgICJbJFNQICRaV10gJENNKyAkQ0FOX0NNOyIKLSAgICAiJEVt
b2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRFbW9qaVZhcj8gJEVtb2ppRm9yU2VxczsiCi0g
ICAgIiRDTSsgJENBTl9DTTsiCi0gICAgIiRDTSogJFdKICRDTSogJENBTl9DTTsiCi0gICAgIiRD
TSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIkQ0FOVF9DTSAkQ00qICRXSjsiCi0g
ICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCi0gICAgIiRDTSogJEdMICRDTSogWyRMQjhOb25C
cmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKLSAgICAiJENBTlRfQ00gJENNKiAkR0w7IgotICAg
ICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgotICAgICIkQ0wgJENNKyAkQ0FOX0NNOyIKLSAgICAi
JENQICRDTSsgJENBTl9DTTsiCi0gICAgIiRFWCAkQ00rICRDQU5fQ007IgotICAgICIkSVMgJENN
KyAkQ0FOX0NNOyIKLSAgICAiJFNZICRDTSsgJENBTl9DTTsiCi0gICAgIiRDTCBbJExCOE5vbkJy
ZWFrcy0kQ01dOyIKLSAgICAiJENQIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIkRVggWyRM
QjhOb25CcmVha3MtJENNXTsiCi0gICAgIiRJUyBbJExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAi
JFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICJbJENMICRDUCAkRVggJElTICRTWV0gJENN
KyAkU1ArICRDTSogJE9QOyAiCi0gICAgIiRDTSogJENBTl9DTSAkU1AqICRDTSogJE9QOyIKLSAg
ICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCi0gICAgIiRBTF9GT0xMT1c/ICRDTSsgJFNQICRT
UCogJENNKiAkT1A7IgotICAgICIkQUxfRk9MTE9XX05PQ00gJENNKyAkU1ArICRDTSogJE9QOyIK
LSAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsgJFNQKyAkQ00qICRPUDsiCi0gICAgIiRTWSAk
Q00gJFNQKyAkT1A7IgotICAgICIkQ00qICRPUCAkU1AqICRDTSogJFFVOyIKLSAgICAiJENNKiAk
TlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKLSAgICAiJENNKiAkQjIgJFNQKiAkQ00qICRCMjsi
Ci0gICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsiCi0gICAgIiRDTSogJFFVICRMQjE4Tm9uQnJl
YWtzOyIKLSAgICAiJENNKiAkQ0FOX0NNICRDTSogJFFVOyIKLSAgICAiJENBTlRfQ00gJENNKiAk
UVU7IgotICAgICIkQ00qICgkQkEgfCAkSFkgfCAkTlMpICRDTSogWyRMQjIwTm9uQnJlYWtzLSRD
TV07IgotICAgICIkQ00qIFskTEIyME5vbkJyZWFrcy0kQ01dICRDTSogJEJCOyIKLSAgICAiW14k
Q0JdICRDTSogJEJCOyIKLSAgICAiW14kQ0JdICRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7Igot
ICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCi0gICAgIiRDTSogJElOICRDTSog
JElEOyIKLSAgICAiJENNKiAkSU4gJENNKiAkSU47IgotICAgICIkQ00qICRJTiAkQ00qICROVTsi
Ci0gICAgIiRDTSogJFBPICRDTSogJElEOyIKLSAgICAiJENNKiAkTlUgJENNKiAoJEFMUGx1cyB8
ICRITCk7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICROVTsiCi0gICAgIiRDTSog
JElEICRDTSogJFBSOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUFI7IgotICAg
ICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQTzsiCi0gICAgIigkQ00qICgkUFIgfCAkUE8p
KT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAoJE5VIHwgJElTIHwgJFNZKSkqICRDTSogJE5V
ICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQUiB8ICRQTykpPzsiCi0gICAgIiRDTSogKCRI
MyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7IgotICAgICIkQ00qICgkSlQgfCAkSlYpICRD
TSogKCRIMiB8ICRKVik7IgotICAgICIkQ00qICRKVCAkQ00qICgkSDMgfCAkSlQpOyIKLSAgICAi
JENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCi0gICAgIiRDTSog
JFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCk7IgotICAgICIkQ00qICgkSDMg
fCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSogJFBSOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8
ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAk
Q00qICRJUzsiCi0gICAgIiRDTSogJE9QICRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUpOyIKLSAg
ICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkgJENNKiAkQ1A7IgotI2lmIEFERElUSU9OQUxf
RU1PSklfU1VQUE9SVAotICAgICIkQ00qICRSSSAkQ00qICRSSTsiCi0jZW5kaWYKLSAgICAiJEVt
b2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIq
IHVheDE0U2FmZUZvcndhcmQgPQotICAgICIhIXNhZmVfZm9yd2FyZDsiCi0gICAgIlskQ00gJE9Q
ICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAkU1AgJGRpY3Rpb25hcnldKyBbXiRDTSAkT1Ag
JFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRkaWN0aW9uYXJ5XTsiCi0gICAgIiRkaWN0aW9u
YXJ5ICRkaWN0aW9uYXJ5OyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFNhZmVSZXZlcnNl
ID0KLSAgICAiISFzYWZlX3JldmVyc2U7IgotICAgICIkQ00rIFteJENNICRCSyAkQ1IgJExGICRO
TCAkWlcgJFNQXTsiCi0gICAgIiRDTSsgJFNQIC8gLjsiCi0gICAgIiRTUCsgJENNKiAkT1A7Igot
ICAgICIkU1ArICRDTSogJFFVOyIKLSAgICAiJFNQKyAkQ00qICgkQ0wgfCAkQ1ApOyIKLSAgICAi
JFNQKyAkQ00qICRCMjsiCi0gICAgIiRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7IgotICAgICIo
JENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIKLSAgICAiKCRDTCB8ICRDUCkgJENNKiAoJE5V
IHwgJElTIHwgJFNZKTsiCi0gICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7Ci0KLXN0YXRp
YyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMoTGluZUJyZWFrSXRlcmF0b3JNb2Rl
IG1vZGUsIGJvb2wgaXNDSkspCi17Ci0gICAgU3RyaW5nQnVpbGRlciBydWxlc0J1aWxkZXI7Ci0g
ICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFByb2xvZ3VlKTsKLSAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUpOwotICAgIHN3aXRjaCAobW9kZSkgewotICAg
IGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5h
cHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyA6IHVheDE0QXNz
aWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgotICAgICAgICBydWxlc0J1aWxkZXIuYXBw
ZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLIDogdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJl
YWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChp
c0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxDSksgOiB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tTm9ybWFsTm9uQ0pLKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJlYWtJ
dGVyYXRvck1vZGVVQVgxNFN0cmljdDoKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NK
SyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3Vz
dG9tU3RyaWN0Tm9uQ0pLKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJ1bGVzQnVpbGRl
ci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVyKTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5k
KHVheDE0Rm9yd2FyZCk7Ci0gICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFJldmVyc2UpOwot
ICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRTYWZlRm9yd2FyZCk7Ci0gICAgcnVsZXNCdWls
ZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsKLSAgICByZXR1cm4gcnVsZXNCdWlsZGVyLnRv
U3RyaW5nKCk7Ci19Ci0KLS8vIFJlY29nbml6ZSBCQ1A0NyBjb21wbGlhbnQgcHJpbWFyeSBsYW5n
dWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tvJwotLy8gKGluIGFueSBjb21iaW5hdGlvbiBv
ZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBzdWJ0YWdzLiBEb24ndAotLy8gcmVjb2du
aXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6aG8nLCAnanBuJywgb3IgJ2tvcicgc2luY2Ug
QkNQNDcKLS8vIHJlcXVpcmVzIHVzZSBvZiBzaG9ydGVzdCBsYW5ndWFnZSB0YWcuCi1ib29sIGlz
Q0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQotewotICAgIHNpemVfdCBsZW5n
dGggPSBsb2NhbGUubGVuZ3RoKCk7Ci0gICAgaWYgKGxlbmd0aCA8IDIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBhdXRvIGMxID0gbG9jYWxlWzBdOwotICAgIGF1dG8gYzIgPSBsb2NhbGVb
MV07Ci0gICAgYXV0byBjMyA9IGxlbmd0aCA9PSAyID8gMCA6IGxvY2FsZVsyXTsKLSAgICBpZiAo
IWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycgfHwgYzMgPT0gJ0AnKSB7Ci0gICAgICAgIGlm
IChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQotICAgICAgICAgICAgcmV0dXJuIGMyID09ICdoJyB8
fCBjMiA9PSAnSCc7Ci0gICAgICAgIGlmIChjMSA9PSAnaicgfHwgYzEgPT0gJ0onKQotICAgICAg
ICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9PSAnQSc7Ci0gICAgICAgIGlmIChjMSA9PSAn
aycgfHwgYzEgPT0gJ0snKQotICAgICAgICAgICAgcmV0dXJuIGMyID09ICdvJyB8fCBjMiA9PSAn
Tyc7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotVGV4dEJyZWFrSXRlcmF0b3IqIG9w
ZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFr
SXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCi17Ci0gICAgVUJyZWFrSXRlcmF0b3IqIHVi
cmtJdGVyOwotICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBi
b29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNFbXB0eSgpOwotICAgIGlmIChtb2RlID09IExp
bmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQotICAgICAgICB1YnJrSXRlciA9IHVicmtfb3BlbihV
QlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSA6IGxv
Y2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAmb3BlblN0YXR1cyk7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIFVQYXJzZUVycm9yIHBhcnNlU3RhdHVzOwotICAgICAgICBhdXRvIHJ1bGVz
ID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMobW9kZSwgaXNDSkspOwotICAgICAgICB1YnJr
SXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1ZpZXcocnVsZXMpLnVwY29udmVydGVkQ2hhcmFj
dGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cyk7
Ci0gICAgfQotICAgIC8vIGxvY2FsZSBjb21lcyBmcm9tIGEgd2ViIHBhZ2UgYW5kIGl0IGNhbiBi
ZSBpbnZhbGlkLCBsZWFkaW5nIElDVQotICAgIC8vIHRvIGZhaWwsIGluIHdoaWNoIGNhc2Ugd2Ug
ZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2FsZS4KLSAgICBpZiAoIWxvY2FsZUlzRW1wdHkg
JiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAgICAgIG9wZW5TdGF0dXMgPSBVX1pFUk9f
RVJST1I7Ci0gICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgY3VycmVudFRl
eHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKLSAgICB9Ci0KLSAgICBpZiAo
VV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAgICAgIExPR19FUlJPUigidWJya19vcGVuIGZh
aWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRv
cio+KHVicmtJdGVyKTsKLX0KLQotdm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVh
a0l0ZXJhdG9yKiYgaXRlcmF0b3IpCi17Ci0gICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0g
cmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKLSAgICBBU1NFUlQo
dWJya0l0ZXIpOwotICAgIHVicmtfY2xvc2UodWJya0l0ZXIpOwotICAgIGl0ZXJhdG9yID0gbnVs
bHB0cjsKLX0KLQotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFyYWN0ZXJC
cmVha0l0ZXJhdG9yOwotCi1zdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3YXBOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBlY3RlZCwgVGV4
dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQotewotICAgIHJldHVybiBXVEY6OndlYWtDb21wYXJl
QW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciwgZXhwZWN0ZWQsIG5ld1Zh
bHVlKTsKLX0KLQotTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBtX2l0ZXJhdG9y
ID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKLQotICAgIGJvb2wgY3JlYXRlZEl0
ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7Ci0gICAgaWYgKCFjcmVhdGVkSXRlcmF0b3IpCi0g
ICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwot
ICAgIGlmICghbV9pdGVyYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pdGVyYXRvciA9
IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRvciwgc3RyaW5nKTsKLX0KLQotTm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Io
KQotewotICAgIGlmICghY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKDAsIG1faXRlcmF0b3IpKQotICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7Ci19Ci0KLQotLy8gSXRlcmF0b3IgaW1wbGVt
ZW5hdGlvbi4KLQotaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKLXsKLSAgICByZXR1cm4gdWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJh
dG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFrSXRlcmF0
b3IqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiB1YnJrX2xhc3QocmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtOZXh0KFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19uZXh0KHJlaW50ZXJw
cmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFr
UHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiB1YnJr
X3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwot
fQotCi1pbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwg
aW50IHBvcykKLXsKLSAgICByZXR1cm4gdWJya19wcmVjZWRpbmcocmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zKTsKLX0KLQotaW50IHRleHRCcmVha0ZvbGxv
d2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJu
IHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
ciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19jdXJyZW50KHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1ib29sIGlzVGV4dEJyZWFrKFRleHRCcmVh
a0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0aW9uKQotewotICAgIHJldHVybiB1YnJrX2lz
Qm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9z
aXRpb24pOwotfQotCi1ib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRl
cmF0b3IpCi17Ci0gICAgaW50IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMocmVpbnRl
cnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci0gICAgcmV0dXJuIHJ1bGVT
dGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Ci19Ci0KLXVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3Rl
cnMoY29uc3QgU3RyaW5nJiBzKQotewotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IHMubGVu
Z3RoKCk7Ci0gICAgCi0gICAgaWYgKCFzdHJpbmdMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENS
IExGCi0gICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCi0gICAgICAgIHJl
dHVybiBzdHJpbmdMZW5ndGg7Ci0KLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
IGl0KHMpOwotICAgIGlmICghaXQpCi0gICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7Ci0KLSAg
ICB1bnNpZ25lZCBudW0gPSAwOwotICAgIHdoaWxlICh0ZXh0QnJlYWtOZXh0KGl0KSAhPSBUZXh0
QnJlYWtEb25lKQotICAgICAgICArK251bTsKLSAgICByZXR1cm4gbnVtOwotfQotCi11bnNpZ25l
ZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHMsIHVu
c2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCi17Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3Ro
ID0gcy5sZW5ndGgoKTsKLQotICAgIGlmICghc3RyaW5nTGVuZ3RoKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlciBp
cyBDUiBMRgotICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQotICAgICAg
ICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsKLQot
ICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7Ci0gICAgaWYgKCFpdCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVDbHVzdGVy
cyk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR3JhcGhlbWVDbHVzdGVyczsg
KytpKSB7Ci0gICAgICAgIGlmICh0ZXh0QnJlYWtOZXh0KGl0KSA9PSBUZXh0QnJlYWtEb25lKQot
ICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKLSAgICB9Ci0gICAgcmV0dXJuIHRleHRC
cmVha0N1cnJlbnQoaXQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZhMWMyMzUwYjQ3NjdkNmNlMWMzNGRlMmMzNGMyMmQ0MzUyMmM1
OGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTGFycyBLbm9sbCA8
bGFyc0B0cm9sbHRlY2guY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgVGV4dEJyZWFrSXRlcmF0
b3JfaAotI2RlZmluZSBUZXh0QnJlYWtJdGVyYXRvcl9oCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGV4dEJyZWFrSXRlcmF0b3I7Ci0KLS8vIE5vdGU6IFRo
ZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0
ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgot
Ci1lbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7Ci0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTQsCi0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZSwKLSAgICBMaW5lQnJl
YWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgx
NFN0cmljdCwKLX07Ci0KLS8vIFRoaXMgaXMgc2ltaWxhciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRl
cmF0b3IgaW4gbW9zdCBjYXNlcywgYnV0IGlzIHN1YmplY3QgdG8KLS8vIHBsYXRmb3JtIFVJIGNv
bnZlbnRpb25zLiBPbmUgbm90YWJsZSBleGFtcGxlIHdoZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVu
dAotLy8gZnJvbSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJh
Y3RlcnMsIHNlZSBidWcgMjQzNDIuCi0vLyBVc2UgdGhpcyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFu
ZCBzZWxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KLVRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3Zl
bWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcpOwotCi1UZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFr
SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci1UZXh0QnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0
ZXJhdG9yKFN0cmluZ1ZpZXcpOwotCi1XRUJDT1JFX0VYUE9SVCBUZXh0QnJlYWtJdGVyYXRvciog
YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcsIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRM
ZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSwgYm9vbCBpc0NKSyk7Ci1XRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4
dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VM
aW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciomKTsKLQotaW50IHRleHRCcmVha0Zp
cnN0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1pbnQgdGV4dEJyZWFrTGFzdChUZXh0QnJlYWtJdGVy
YXRvciopOwotaW50IHRleHRCcmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0
QnJlYWtQcmV2aW91cyhUZXh0QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha0N1cnJlbnQo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRl
cmF0b3IqLCBpbnQpOwotV0VCQ09SRV9FWFBPUlQgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0
QnJlYWtJdGVyYXRvciosIGludCk7Ci1ib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9y
KiwgaW50KTsKLWJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7Ci0KLWNv
bnN0IGludCBUZXh0QnJlYWtEb25lID0gLTE7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDSktM
b2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0KLWNsYXNzIExhenlMaW5lQnJlYWtJdGVyYXRv
ciB7Ci1wdWJsaWM6Ci0gICAgTGF6eUxpbmVCcmVha0l0ZXJhdG9yKCkKLSAgICAgICAgOiBtX2l0
ZXJhdG9yKG51bGxwdHIpCi0gICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHQobnVsbHB0cikK
LSAgICAgICAgLCBtX21vZGUoTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQpCi0gICAgICAgICwg
bV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKLSAgICAgICAgLCBtX2lzQ0pLKGZhbHNlKQot
ICAgIHsKLSAgICAgICAgcmVzZXRQcmlvckNvbnRleHQoKTsKLSAgICB9Ci0KLSAgICBMYXp5TGlu
ZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUg
PSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUgPSBMaW5lQnJlYWtJ
dGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCi0gICAgICAgICwg
bV9sb2NhbGUobG9jYWxlKQotICAgICAgICAsIG1faXRlcmF0b3IobnVsbHB0cikKLSAgICAgICAg
LCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQotICAgICAgICAsIG1fbW9kZShtb2RlKQot
ICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoKDApCi0gICAgewotICAgICAgICBy
ZXNldFByaW9yQ29udGV4dCgpOwotICAgICAgICBtX2lzQ0pLID0gaXNDSktMb2NhbGUobG9jYWxl
KTsKLSAgICB9Ci0KLSAgICB+TGF6eUxpbmVCcmVha0l0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAg
IGlmIChtX2l0ZXJhdG9yKQotICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1f
aXRlcmF0b3IpOwotICAgIH0KLQotICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZzsgfQotICAgIGJvb2wgaXNMb29zZUNKS01vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
Q0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOyB9Ci0KLSAg
ICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNT
RVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJh
dG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICByZXR1cm4gbV9w
cmlvckNvbnRleHRbMV07Ci0gICAgfQotCi0gICAgVUNoYXIgc2Vjb25kVG9MYXN0Q2hhcmFjdGVy
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgo
bV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3Jf
Y29udGV4dF9sZW5ndGgpOwotICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9M
YXN0KQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzBdID0gc2Vjb25kVG9MYXN0Owot
ICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7Ci0gICAgfQotCi0gICAgdm9pZCB1cGRh
dGVQcmlvckNvbnRleHQoVUNoYXIgbGFzdCkKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJU
KFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9y
X3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICBtX3ByaW9yQ29udGV4
dFswXSA9IG1fcHJpb3JDb250ZXh0WzFdOwotICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxh
c3Q7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldFByaW9yQ29udGV4dCgpCi0gICAgewotICAgICAg
ICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBU
ZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKLSAgICAg
ICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOwotICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7
Ci0gICAgfQotCi0gICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCA9IDA7Ci0gICAgICAgIENPTVBJ
TEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVh
a0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICBpZiAo
bV9wcmlvckNvbnRleHRbMV0pIHsKLSAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOwot
ICAgICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzBdKQotICAgICAgICAgICAgICAgICsrcHJp
b3JDb250ZXh0TGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwcmlvckNvbnRleHRM
ZW5ndGg7Ci0gICAgfQotCi0gICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3Np
Ymx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVl
bikKLSAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmlu
ZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFuZCB1c2luZwotICAgIC8vIHByZXZp
b3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAgIFRleHRCcmVha0l0
ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0eSk7Ci0gICAg
ICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9w
cmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDog
MDsKLSAgICAgICAgaWYgKCFtX2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yID0g
YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKG1fc3RyaW5nLCBtX2xvY2FsZSwgcHJpb3JDb250ZXh0
LCBwcmlvckNvbnRleHRMZW5ndGgsIG1fbW9kZSwgbV9pc0NKSyk7Ci0gICAgICAgICAgICBtX2Nh
Y2hlZFByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dDsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJp
b3JDb250ZXh0TGVuZ3RoID0gcHJpb3JDb250ZXh0TGVuZ3RoOwotICAgICAgICB9IGVsc2UgaWYg
KHByaW9yQ29udGV4dCAhPSBtX2NhY2hlZFByaW9yQ29udGV4dCB8fCBwcmlvckNvbnRleHRMZW5n
dGggIT0gbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgpIHsKLSAgICAgICAgICAgIHJlc2V0U3Ry
aW5nQW5kUmVsZWFzZUl0ZXJhdG9yKG1fc3RyaW5nLCBtX2xvY2FsZSwgbV9tb2RlKTsKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0U3RyaW5n
QW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX2l0
ZXJhdG9yKQotICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3Ip
OwotICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsKLSAgICAgICAgbV9sb2NhbGUgPSBsb2NhbGU7
Ci0gICAgICAgIG1faXRlcmF0b3IgPSBudWxscHRyOwotICAgICAgICBtX2NhY2hlZFByaW9yQ29u
dGV4dCA9IG51bGxwdHI7Ci0gICAgICAgIG1fbW9kZSA9IG1vZGU7Ci0gICAgICAgIG1faXNDSksg
PSBpc0NKS0xvY2FsZShsb2NhbGUpOwotICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0
aCA9IDA7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmlv
ckNvbnRleHRDYXBhY2l0eSA9IDI7Ci0gICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0b21pY1N0
cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKLSAgICBj
b25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQ7Ci0gICAgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1fbW9kZTsKLSAgICB1bnNpZ25lZCBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aDsKLSAg
ICBVQ2hhciBtX3ByaW9yQ29udGV4dFtwcmlvckNvbnRleHRDYXBhY2l0eV07Ci0gICAgYm9vbCBt
X2lzQ0pLOwotfTsKLQotLy8gSXRlcmF0ZXMgb3ZlciAiZXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3Rl
cnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCi0vLyBOb3RlIHRoYXQgcGxhdGZvcm0gaW1wbGVt
ZW50YXRpb25zIG1heSBiZSBsZXNzIHNvcGhpc3RpY2F0ZWQgLSBlLmcuIElDVSBwcmlvciB0bwot
Ly8gdmVyc2lvbiA0LjAgb25seSBzdXBwb3J0cyAibGVnYWN5IGdyYXBoZW1lIGNsdXN0ZXJzIi4K
LS8vIFVzZSB0aGlzIGZvciBnZW5lcmFsIHRleHQgcHJvY2Vzc2luZywgZS5nLiBzdHJpbmcgdHJ1
bmNhdGlvbi4KLQotY2xhc3MgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik7Ci1w
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcigpOwotCi0gICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVyYXRvcjsgfQotCi1wcml2YXRlOgotICAgIFRleHRCcmVha0l0ZXJhdG9y
KiBtX2l0ZXJhdG9yOwotfTsKLQotLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgZ3JhcGhlbWUgY2x1
c3RlcnMuIEEgc3Vycm9nYXRlIHBhaXIgb3IgYSBzZXF1ZW5jZQotLy8gb2YgYSBub24tY29tYmlu
aW5nIGNoYXJhY3RlciBhbmQgZm9sbG93aW5nIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGlzCi0vLyBj
b3VudGVkIGFzIDEgZ3JhcGhlbWUgY2x1c3Rlci4KLXVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3Rl
cnMoY29uc3QgU3RyaW5nJik7Ci0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3
aGljaCB3aWxsIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bwotLy8gdGhlIHNwZWNpZmllZCBncmFw
aGVtZSBjbHVzdGVyIGxlbmd0aC4KLXVuc2lnbmVkIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1
c3RlcnMoY29uc3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkKTsKLQotfQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YjcwMDNjMzVm
ZDIxZWE2YWEyMTk5MzVlN2EyODk5YTI2NWFkN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICov
Ci0KLSNpZm5kZWYgVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVV9oCi0jZGVmaW5lIFRleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VfaAotCi0vLyBGSVhNRTogTm93IHRoYXQgdGhpcyBoYW5k
bGVzIGxvY2FsZXMgZm9yIElDVSwgbm90IGp1c3QgZm9yIHRleHQgYnJlYWtpbmcsCi0vLyB0aGlz
IGZpbGUgYW5kIHRoZSB2YXJpb3VzIGltcGxlbWVudGF0aW9uIGZpbGVzIHNob3VsZCBiZSByZW5h
bWVkLgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjb25zdCBjaGFyKiBjdXJyZW50U2Vh
cmNoTG9jYWxlSUQoKTsKLSAgICBjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQo
KTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Nm
L0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDllMzQzYzAyOTE3NWRlZTU0YTM1NGQ3ZDUyODI2M2I5
NDBlNDdiZDEuLmM0MGU2MjI3M2UwMzQ4MmM1MWRlM2RkMTllMTI0NjgyMjE3MjUxNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApA
QCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKIAogI2luY2x1ZGUg
Ikxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Vmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1Uu
aD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPD4K
IGNsYXNzIFRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNTdHJpbmcsIFJldGFpblB0cjxDRkxvY2Fs
ZVJlZj4+CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIENGIGh5
cGhlbmF0aW9uIGZ1bmN0aW9ucyB1c2UgbG9jYWxlIChyZWdpb25hbCBmb3JtYXRzKSBsYW5ndWFn
ZSwgd2hpY2ggZG9lc24ndCBuZWNlc3NhcmlseSBtYXRjaCBwcmltYXJ5IFVJIGxhbmd1YWdlLAog
ICAgICAgICAvLyBzbyB3ZSBjYW4ndCB1c2UgZGVmYXVsdCBsb2NhbGUgaGVyZS4gU2VlIDxyZGFy
Oi8vcHJvYmxlbS8xNDg5NzY2ND4uCi0gICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9j
YWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZWZhdWx0
TGFuZ3VhZ2UoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgICAgIFJldGFpblB0cjxD
RkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBXZWJDb3JlOjpkZWZhdWx0TGFuZ3VhZ2UoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAgICAgICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFibGVGb3JMb2Nh
bGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IG51bGxwdHI7CiAgICAgfQogCkBAIC02NSw2ICs2
NSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWls
YWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CiB9
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgY2FuSHlwaGVuYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVUVmbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNTY4NjlmMTQ1
ZGQ3NjgxZGZlYmI2ODg4OTViYzE5NTUxZTEzYmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lZmwvVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVt
cwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJ
RCgpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2FsZS4KLSAgICByZXR1
cm4gIiI7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0g
ICAgcmV0dXJuICJlbl91cyI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKaW5kZXggNDdm
NTZmMDhiMzU0ODJjYWUwNjRkNGZiMTk0MmNhZTVjOGFiMDcyMC4uNDExYzgwNjE0ZTI2N2NmYzUx
MWZmYWRiMGE5NTM2MWM4MWI1NDkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKQEAgLTI0LDcg
KzI0LDcgQEAKIAogI2luY2x1ZGUgPExhbmd1YWdlLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgotI2lu
Y2x1ZGUgPHRleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1
ZTVhMDVmYTQ5MTk1ZmIzMGJmNjlkZWQ1NjJkNTQzYjhiNjEwMTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxw
QGF0b2tlci5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciog
Y3VycmVudFNlYXJjaExvY2FsZUlEKCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0
ZW0gbG9jYWxlLgotICAgIHJldHVybiAiIjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRC
cmVha0xvY2FsZUlEKCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxl
LgotICAgIHJldHVybiAiZW5fdXMiOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZGFlZTgxZTYwN2U2NzU0M2JmNjdmZTg2NTMyYWI1MzViZjdiMmMwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJVVGV4
dFByb3ZpZGVyLmgiCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBSZWxvY2F0ZSBwb2ludGVyIGZyb20gc291cmNlIGludG8gZGVzdGluYXRpb24gYXMg
cmVxdWlyZWQuCi1zdGF0aWMgaW5saW5lIHZvaWQgZml4UG9pbnRlcihjb25zdCBVVGV4dCogc291
cmNlLCBVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqJiBwb2ludGVyKQotewotICAgIGlm
IChwb2ludGVyID49IHNvdXJjZS0+cEV4dHJhICYmIHBvaW50ZXIgPCBzdGF0aWNfY2FzdDxjaGFy
Kj4oc291cmNlLT5wRXh0cmEpICsgc291cmNlLT5leHRyYVNpemUpIHsKLSAgICAgICAgLy8gUG9p
bnRlciByZWZlcmVuY2VzIHNvdXJjZSBleHRyYSBidWZmZXIuCi0gICAgICAgIHBvaW50ZXIgPSBz
dGF0aWNfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24tPnBFeHRyYSkgKyAoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KHBvaW50ZXIpIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZS0+cEV4
dHJhKSk7Ci0gICAgfSBlbHNlIGlmIChwb2ludGVyID49IHNvdXJjZSAmJiBwb2ludGVyIDwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlKSArIHNvdXJjZS0+c2l6ZU9mU3RydWN0
KSB7Ci0gICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgdGV4dCBzdHJ1Y3R1cmUs
IGJ1dCBub3Qgc291cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uKSArIChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
cG9pbnRlcikgLSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpKTsKLSAgICB9
Ci19Ci0KLVVUZXh0KiB1VGV4dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVU
ZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGRlZXAsICFkZWVwKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbnQzMl90IGV4dHJhU2l6ZSA9IHNvdXJjZS0+ZXh0
cmFTaXplOwotICAgIGRlc3RpbmF0aW9uID0gdXRleHRfc2V0dXAoZGVzdGluYXRpb24sIGV4dHJh
U2l6ZSwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQotICAgICAgICByZXR1
cm4gZGVzdGluYXRpb247Ci0gICAgdm9pZCogZXh0cmFOZXcgPSBkZXN0aW5hdGlvbi0+cEV4dHJh
OwotICAgIGludDMyX3QgZmxhZ3MgPSBkZXN0aW5hdGlvbi0+ZmxhZ3M7Ci0gICAgaW50IHNpemVU
b0NvcHkgPSBzdGQ6Om1pbihzb3VyY2UtPnNpemVPZlN0cnVjdCwgZGVzdGluYXRpb24tPnNpemVP
ZlN0cnVjdCk7Ci0gICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHNpemVUb0NvcHkpOwot
ICAgIGRlc3RpbmF0aW9uLT5wRXh0cmEgPSBleHRyYU5ldzsKLSAgICBkZXN0aW5hdGlvbi0+Zmxh
Z3MgPSBmbGFnczsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24tPnBFeHRyYSwgc291cmNlLT5wRXh0
cmEsIGV4dHJhU2l6ZSk7Ci0gICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0
aW5hdGlvbi0+Y29udGV4dCk7Ci0gICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBk
ZXN0aW5hdGlvbi0+cCk7Ci0gICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0
aW5hdGlvbi0+cSk7Ci0gICAgQVNTRVJUKCFkZXN0aW5hdGlvbi0+cik7Ci0gICAgY29uc3Qgdm9p
ZCogY2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihkZXN0aW5hdGlvbi0+
Y2h1bmtDb250ZW50cyk7Ci0gICAgZml4UG9pbnRlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjaHVu
a0NvbnRlbnRzKTsKLSAgICBkZXN0aW5hdGlvbi0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0
PGNvbnN0IFVDaGFyKj4oY2h1bmtDb250ZW50cyk7Ci0gICAgcmV0dXJuIGRlc3RpbmF0aW9uOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGMyNTRmYzRjN2NlMjM1OTQ0MmM2N2ZhYmYxOGI1ZWY2YWIxYzQzYTcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9pY3UvVVRleHRQcm92aWRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFVUZXh0UHJvdmlkZXJfaAotI2RlZmluZSBVVGV4dFByb3Zp
ZGVyX2gKLQotI2luY2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1lbnVtIGNsYXNzIFVUZXh0UHJvdmlkZXJDb250ZXh0IHsKLSAgICBOb0NvbnRleHQsCi0g
ICAgUHJpb3JDb250ZXh0LAotICAgIFByaW1hcnlDb250ZXh0Ci19OwotCi1pbmxpbmUgVVRleHRQ
cm92aWRlckNvbnRleHQgdVRleHRQcm92aWRlckNvbnRleHQoY29uc3QgVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgaWYgKCF0ZXh0LT5iIHx8
IG5hdGl2ZUluZGV4ID4gdGV4dC0+YikKLSAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250
ZXh0OjpQcmltYXJ5Q29udGV4dDsKLSAgICBpZiAobmF0aXZlSW5kZXggPT0gdGV4dC0+YikKLSAg
ICAgICAgcmV0dXJuIGZvcndhcmQgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRl
eHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OwotICAgIHJldHVybiBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OwotfQotCi1pbmxpbmUgdm9pZCBpbml0aWFs
aXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVVRleHRGdW5j
cyogZnVuY3MsIGNvbnN0IHZvaWQqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hh
ciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoKQotewotICAgIHRleHQtPnBG
dW5jcyA9IGZ1bmNzOwotICAgIHRleHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IDEgPDwgVVRFWFRf
UFJPVklERVJfU1RBQkxFX0NIVU5LUzsKLSAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOwotICAg
IHRleHQtPnAgPSBzdHJpbmc7Ci0gICAgdGV4dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5xID0g
cHJpb3JDb250ZXh0OwotICAgIHRleHQtPmIgPSBwcmlvckNvbnRleHRMZW5ndGg7Ci19Ci0KLS8v
IFNoYXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFVUZXh0Q2xvbmUgZnVuY3Rpb24gb24gVVRl
eHRGdW5jcy4KLQotVVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29u
c3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKTsKLQotCi0v
LyBIZWxwZXJzIGZvciB0aGUgVVRleHRBY2Nlc3MgZnVuY3Rpb24gb24gVVRleHRGdW5jcy4KLQot
aW5saW5lIGludDY0X3QgdVRleHRBY2Nlc3NQaW5JbmRleChpbnQ2NF90JiBpbmRleCwgaW50NjRf
dCBsaW1pdCkKLXsKLSAgICBpZiAoaW5kZXggPCAwKQotICAgICAgICBpbmRleCA9IDA7Ci0gICAg
ZWxzZSBpZiAoaW5kZXggPiBsaW1pdCkKLSAgICAgICAgaW5kZXggPSBsaW1pdDsKLSAgICByZXR1
cm4gaW5kZXg7Ci19Ci0KLWlubGluZSBib29sIHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5n
ZShVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQsIFVCb29sJiBpc0FjY2Vzc2libGUpCi17Ci0gICAgaWYgKGZvcndhcmQp
IHsKLSAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYg
bmF0aXZlSW5kZXggPCB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0KSB7Ci0gICAgICAgICAgICBpbnQ2
NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAg
ICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQg
b2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAgICAgICAgICAgIEFTU0VSVChvZmZzZXQg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgICAgICAgICB0ZXh0
LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDA7Ci0gICAgICAgICAgICBpc0Fj
Y2Vzc2libGUgPSBUUlVFOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IG5hdGl2ZUxlbmd0aCAmJiB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID09IG5hdGl2ZUxlbmd0aCkgewotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAobmF0aXZlSW5kZXggPiB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4
IDw9IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0
ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgICAgICAgICAgLy8g
RW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhj
ZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAgICAgICAgIHRleHQtPmNodW5rT2Zm
c2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0
aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9
IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
bmF0aXZlSW5kZXggPD0gMCAmJiAhdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgewotICAgICAgICAg
ICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFM
U0U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVUZXh0
UHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3Uv
VVRleHRQcm92aWRlckxhdGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Y2Q2ODUyYzcxZTU1ZWY5N2NhMGIwYmExY2ZmODgwYjk5NzBmNzNjNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVUZXh0
UHJvdmlkZXJMYXRpbjEuaCIKLQotI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIuaCIKLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gTGF0
aW4xIHByb3ZpZGVyCi0KLXN0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFDbG9uZShVVGV4dCosIGNv
bnN0IFVUZXh0KiwgVUJvb2wsIFVFcnJvckNvZGUqKTsKLXN0YXRpYyBpbnQ2NF90IHVUZXh0TGF0
aW4xTmF0aXZlTGVuZ3RoKFVUZXh0Kik7Ci1zdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFBY2Nlc3Mo
VVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7Ci1zdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUV4dHJh
Y3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUq
KTsKLXN0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRl
eHQqKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNv
bnN0IFVUZXh0KiwgaW50NjRfdCk7Ci1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNsb3NlKFVUZXh0
Kik7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB1VGV4dExhdGluMUZ1bmNzID0g
ewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLAotICAgIDAsCi0gICAgMCwKLSAgICB1
VGV4dExhdGluMUNsb25lLAotICAgIHVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoLAotICAgIHVUZXh0
TGF0aW4xQWNjZXNzLAotICAgIHVUZXh0TGF0aW4xRXh0cmFjdCwKLSAgICBudWxscHRyLAotICAg
IG51bGxwdHIsCi0gICAgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZSwKLSAgICB1VGV4dExh
dGluMU1hcE5hdGl2ZUluZGV4VG9VVEYxNiwKLSAgICB1VGV4dExhdGluMUNsb3NlLAotICAgIG51
bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyCi19OwotCi1zdGF0aWMgVVRleHQqIHVU
ZXh0TGF0aW4xQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBV
Qm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChkZWVw
LCAhZGVlcCk7Ci0KLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIFVUZXh0KiByZXN1bHQgPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgc2l6ZW9m
KFVDaGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5LCBzdGF0dXMpOwotICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKLSAgICAK
LSAgICByZXN1bHQtPnByb3ZpZGVyUHJvcGVydGllcyA9IHNvdXJjZS0+cHJvdmlkZXJQcm9wZXJ0
aWVzOwotICAgIAotICAgIC8vIFBvaW50IGF0IHRoZSBzYW1lIHBvc2l0aW9uLCBidXQgd2l0aCBh
biBlbXB0eSBidWZmZXIuCi0gICAgcmVzdWx0LT5jaHVua05hdGl2ZVN0YXJ0ID0gc291cmNlLT5j
aHVua05hdGl2ZVN0YXJ0OwotICAgIHJlc3VsdC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHNvdXJjZS0+
Y2h1bmtOYXRpdmVTdGFydDsKLSAgICByZXN1bHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSBzdGF0
aWNfY2FzdDxpbnQzMl90Pihzb3VyY2UtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgIHJlc3VsdC0+
Y2h1bmtPZmZzZXQgPSAwOwotICAgIHJlc3VsdC0+Y29udGV4dCA9IHNvdXJjZS0+Y29udGV4dDsK
LSAgICByZXN1bHQtPmEgPSBzb3VyY2UtPmE7Ci0gICAgcmVzdWx0LT5wRnVuY3MgPSAmdVRleHRM
YXRpbjFGdW5jczsKLSAgICByZXN1bHQtPmNodW5rQ29udGVudHMgPSAoVUNoYXIqKXJlc3VsdC0+
cEV4dHJhOwotICAgIG1lbXNldChjb25zdF9jYXN0PFVDaGFyKj4ocmVzdWx0LT5jaHVua0NvbnRl
bnRzKSwgMCwgc2l6ZW9mKFVDaGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsK
LQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xTmF0
aXZlTGVuZ3RoKFVUZXh0KiB1VGV4dCkKLXsKLSAgICByZXR1cm4gdVRleHQtPmE7Ci19Ci0KLXN0
YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCogdVRleHQsIGludDY0X3QgaW5kZXgs
IFVCb29sIGZvcndhcmQpCi17Ci0gICAgaW50NjRfdCBsZW5ndGggPSB1VGV4dC0+YTsKLQotICAg
IGlmIChmb3J3YXJkKSB7Ci0gICAgICAgIGlmIChpbmRleCA8IHVUZXh0LT5jaHVua05hdGl2ZUxp
bWl0ICYmIGluZGV4ID49IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAv
LyBBbHJlYWR5IGluc2lkZSB0aGUgYnVmZmVyLiBTZXQgdGhlIG5ldyBvZmZzZXQuCi0gICAgICAg
ICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVU
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpbmRleCA+PSBsZW5ndGggJiYgdVRleHQtPmNodW5rTmF0aXZlTGlt
aXQgPT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAvLyBPZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVy
LCBidXQgd2UgY2FuJ3QgZ2V0IGl0LgotICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7Ci0g
ICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAoaW5kZXggPD0gdVRleHQtPmNodW5rTmF0aXZlTGltaXQgJiYgaW5kZXggPiB1VGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCkgewotICAgICAgICAgICAgLy8gQWxyZWFkeSBpbnNpZGUgdGhlIGJ1
ZmZlci4gU2V0IHRoZSBuZXcgb2Zmc2V0LgotICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0
ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7
Ci0gICAgICAgICAgICByZXR1cm4gVFJVRTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWluZGV4
ICYmICF1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgewotICAgICAgICAgICAgLy8gQWxyZWFkeSBh
dCB0aGUgYmVnaW5uaW5nOyBjYW4ndCBnbyBhbnkgZmFydGhlci4KLSAgICAgICAgICAgIHVUZXh0
LT5jaHVua09mZnNldCA9IDA7Ci0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgdVRleHQtPmNodW5rTmF0
aXZlU3RhcnQgPSBpbmRleDsKLSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCArIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5OwotICAg
ICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBsZW5ndGgpCi0gICAgICAgICAgICB1
VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IGxlbmd0aDsKLQotICAgICAgICB1VGV4dC0+Y2h1bmtP
ZmZzZXQgPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID0gaW5kZXg7Ci0gICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkK
LSAgICAgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOwotCi0gICAgICAg
IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdVRleHQtPmNodW5rTmF0aXZlTGltaXQgLSBVVGV4
dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eTsKLSAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2
ZVN0YXJ0IDwgMCkKLSAgICAgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLQot
ICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAt
IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAgICB9Ci0gICAgdVRleHQtPmNodW5rTGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odVRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB1VGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCk7Ci0KLSAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoY29uc3RfY2Fz
dDxVQ2hhcio+KHVUZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGljX2Nhc3Q8Y29uc3QgTENoYXIq
Pih1VGV4dC0+Y29udGV4dCkgKyB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHVUZXh0LT5jaHVua0xlbmd0aCkpOwotCi0gICAgdVRleHQtPm5hdGl2ZUluZGV4
aW5nTGltaXQgPSB1VGV4dC0+Y2h1bmtMZW5ndGg7Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQot
c3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0KFVUZXh0KiB1VGV4dCwgaW50NjRfdCBz
dGFydCwgaW50NjRfdCBsaW1pdCwgVUNoYXIqIGRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5LCBV
RXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaW50NjRfdCBsZW5ndGggPSB1VGV4dC0+YTsKLSAg
ICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChk
ZXN0Q2FwYWNpdHkgPCAwIHx8ICghZGVzdCAmJiBkZXN0Q2FwYWNpdHkgPiAwKSkgewotICAgICAg
ICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KLSAgICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID4gbGltaXQgfHwgKGxpbWl0IC0g
c3RhcnQpID4gSU5UMzJfTUFYKSB7Ci0gICAgICAgICpzdGF0dXMgPSBVX0lOREVYX09VVE9GQk9V
TkRTX0VSUk9SOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoc3RhcnQgPiBs
ZW5ndGgpCi0gICAgICAgIHN0YXJ0ID0gbGVuZ3RoOwotICAgIGlmIChsaW1pdCA+IGxlbmd0aCkK
LSAgICAgICAgbGltaXQgPSBsZW5ndGg7Ci0KLSAgICBsZW5ndGggPSBsaW1pdCAtIHN0YXJ0Owot
ICAgIAotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChkZXN0
Q2FwYWNpdHkgPiAwICYmICFkZXN0KSB7Ci0gICAgICAgIGludDMyX3QgdHJpbW1lZExlbmd0aCA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCk7Ci0gICAgICAgIGlmICh0cmltbWVkTGVuZ3Ro
ID4gZGVzdENhcGFjaXR5KQotICAgICAgICAgICAgdHJpbW1lZExlbmd0aCA9IGRlc3RDYXBhY2l0
eTsKLQotICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoZGVzdCwgc3RhdGljX2Nhc3Q8Y29u
c3QgTENoYXIqPih1VGV4dC0+Y29udGV4dCkgKyBzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHRyaW1tZWRMZW5ndGgpKTsKLSAgICB9Ci0KLSAgICBpZiAobGVuZ3RoIDwgZGVzdENhcGFjaXR5
KSB7Ci0gICAgICAgIGRlc3RbbGVuZ3RoXSA9IDA7Ci0gICAgICAgIGlmICgqc3RhdHVzID09IFVf
U1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkcpCi0gICAgICAgICAgICAqc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgIH0gZWxzZSBpZiAobGVuZ3RoID09IGRlc3RDYXBhY2l0eSkKLSAgICAg
ICAgKnN0YXR1cyA9IFVfU1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkc7Ci0gICAgZWxzZQot
ICAgICAgICAqc3RhdHVzID0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I7Ci0KLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKLX0KLQotc3RhdGljIGludDY0X3QgdVRleHRM
YXRpbjFNYXBPZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4dCogdVRleHQpCi17Ci0gICAgcmV0dXJu
IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICsgdVRleHQtPmNodW5rT2Zmc2V0OwotfQotCi1zdGF0
aWMgaW50MzJfdCB1VGV4dExhdGluMU1hcE5hdGl2ZUluZGV4VG9VVEYxNihjb25zdCBVVGV4dCog
dVRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh1VGV4dCwg
dVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPj0gbmF0aXZlSW5kZXgpOwotICAgIEFTU0VSVF9VTlVT
RUQodVRleHQsIG5hdGl2ZUluZGV4IDwgdVRleHQtPmNodW5rTmF0aXZlTGltaXQpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihuYXRpdmVJbmRleCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHVUZXh0TGF0aW4xQ2xvc2UoVVRleHQqIHVUZXh0KQotewotICAgIHVUZXh0LT5jb250ZXh0ID0g
bnVsbHB0cjsKLX0KLQotVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1
ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7Ci0g
ICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLSAgICBVVGV4dCogdGV4dCA9IHV0ZXh0X3NldHVwKCZ1dFdpdGhC
dWZmZXItPnRleHQsIHNpemVvZih1dFdpdGhCdWZmZXItPmJ1ZmZlciksIHN0YXR1cyk7Ci0gICAg
aWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB0ZXh0LT5jb250ZXh0ID0gc3RyaW5nOwot
ICAgIHRleHQtPmEgPSBsZW5ndGg7Ci0gICAgdGV4dC0+cEZ1bmNzID0gJnVUZXh0TGF0aW4xRnVu
Y3M7Ci0gICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciopdGV4dC0+cEV4dHJhOwotICAg
IG1lbXNldChjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIDAsIHNpemVv
ZihVQ2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSk7Ci0KLSAgICByZXR1cm4g
dGV4dDsKLX0KLQotCi0vLyBMYXRpbjFDb250ZXh0QXdhcmUgcHJvdmlkZXIKLQotc3RhdGljIFVU
ZXh0KiB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBV
Qm9vbCwgVUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVOYXRpdmVMZW5ndGgoVVRleHQqKTsKLXN0YXRpYyBVQm9vbCB1VGV4dExhdGluMUNvbnRleHRB
d2FyZUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFy
KiwgaW50MzJfdCwgVUVycm9yQ29kZSopOwotc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDb250ZXh0
QXdhcmVDbG9zZShVVGV4dCopOwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdGV4
dExhdGluMUNvbnRleHRBd2FyZUZ1bmNzID0gewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAg
ICAwLAotICAgIDAsCi0gICAgMCwKLSAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lLAot
ICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoLAotICAgIHVUZXh0TGF0aW4x
Q29udGV4dEF3YXJlQWNjZXNzLAotICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCwK
LSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAot
ICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UsCi0gICAgbnVsbHB0ciwKLSAgICBudWxs
cHRyLAotICAgIG51bGxwdHIKLX07Ci0KLXN0YXRpYyBpbmxpbmUgVVRleHRQcm92aWRlckNvbnRl
eHQgdGV4dExhdGluMUNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0
ZXh0KQotewotICAgIGlmICghdGV4dC0+Y2h1bmtDb250ZW50cykKLSAgICAgICAgcmV0dXJuIFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7Ci0gICAgcmV0dXJuIHRleHQtPmNodW5rQ29u
dGVudHMgPT0gdGV4dC0+cEV4dHJhID8gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250
ZXh0IDogVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dDsKLX0KLQotc3RhdGljIHZv
aWQgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2Fy
ZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOwot
ICAgIGlmIChmb3J3YXJkKSB7Ci0gICAgICAgIEFTU0VSVChuYXRpdmVJbmRleCA+PSB0ZXh0LT5i
ICYmIG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoKTsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCA9IG5hdGl2ZUluZGV4OwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0g
bmF0aXZlSW5kZXggKyB0ZXh0LT5leHRyYVNpemUgLyBzaXplb2YoVUNoYXIpOwotICAgICAgICBp
ZiAodGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IG5hdGl2ZUxlbmd0aCkKLSAgICAgICAgICAgIHRl
eHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKG5hdGl2ZUluZGV4ID4gdGV4dC0+YiAmJiBuYXRpdmVJbmRleCA8PSBuYXRpdmVM
ZW5ndGgpOwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlSW5kZXg7Ci0g
ICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmV4dHJh
U2l6ZSAvIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
IDwgdGV4dC0+YikKLSAgICAgICAgICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5i
OwotICAgIH0KLSAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2Vs
bCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAg
QVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAg
ICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIHRleHQtPmNodW5r
T2Zmc2V0ID0gZm9yd2FyZCA/IDAgOiB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICBTdHJpbmdJbXBs
Ojpjb3B5Q2hhcnMoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KHRleHQtPnApICsgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
LSB0ZXh0LT5iKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRleHQtPmNodW5rTGVuZ3RoKSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250
ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0
aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwg
dGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRz
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wRXh0cmEpOwotICAgIHRleHRMYXRp
bjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0
aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRB
d2FyZU1vdmVJblByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwg
aW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKHRleHQt
PmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7Ci0gICAgQVNTRVJUKGZvcndhcmQgPyBuYXRpdmVJ
bmRleCA8IHRleHQtPmIgOiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5V
U0VEKG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDog
bmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQs
IGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5h
dGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7Ci0gICAgdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+Y2h1bmtMZW5ndGggPSB0ZXh0
LT5iOwotICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsK
LSAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dDsKLSAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRl
ZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KLSAgICBBU1NF
UlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRl
eHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+
Y2h1bmtMZW5ndGgpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dp
dGNoVG9QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0
X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1
bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7Ci0gICAg
dGV4dC0+Y2h1bmtDb250ZW50cyA9IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cSk7
Ci0gICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRp
dmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQotc3RhdGljIFVUZXh0KiB1VGV4
dExhdGluMUNvbnRleHRBd2FyZUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQq
IHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIHJldHVybiB1
VGV4dENsb25lSW1wbChkZXN0aW5hdGlvbiwgc291cmNlLCBkZWVwLCBzdGF0dXMpOwotfQotCi1z
dGF0aWMgaW50NjRfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCog
dGV4dCkKLXsKLSAgICByZXR1cm4gdGV4dC0+YSArIHRleHQtPmI7Ci19Ci0KLXN0YXRpYyBVQm9v
bCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRp
dmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmNvbnRleHQpCi0gICAg
ICAgIHJldHVybiBGQUxTRTsKLSAgICBpbnQ2NF90IG5hdGl2ZUxlbmd0aCA9IHVUZXh0TGF0aW4x
Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKHRleHQpOwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsK
LSAgICBpZiAodVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBp
c0FjY2Vzc2libGU7Ci0gICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRD
b250ZXh0ID0gdGV4dExhdGluMUNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KHRleHQpOwot
ICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IG5ld0NvbnRleHQgPSB1VGV4dFByb3ZpZGVyQ29udGV4
dCh0ZXh0LCBuYXRpdmVJbmRleCwgZm9yd2FyZCk7Ci0gICAgQVNTRVJUKG5ld0NvbnRleHQgIT0g
VVRleHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dCk7Ci0gICAgaWYgKG5ld0NvbnRleHQgPT0g
Y3VycmVudENvbnRleHQpIHsKLSAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFVUZXh0UHJv
dmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCkKLSAgICAgICAgICAgIHRleHRMYXRpbjFDb250
ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVu
Z3RoLCBmb3J3YXJkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGV4dExhdGluMUNvbnRl
eHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3Ro
LCBmb3J3YXJkKTsKLSAgICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNv
bnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dp
dGNoVG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG5ld0NvbnRleHQgPT0gVVRleHRQcm92
aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dCk7Ci0gICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdh
cmVTd2l0Y2hUb1ByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBm
b3J3YXJkKTsKLSAgICB9Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBpbnQzMl90IHVU
ZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVD
aGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JDb2RlKQotewotICAgIC8vIEluIHRoZSBw
cmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1Ug
ZnVuY3Rpb25zCi0gICAgLy8gdGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlv
bi4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBP
UlRFRF9FUlJPUjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgdVRleHRMYXRpbjFD
b250ZXh0QXdhcmVDbG9zZShVVGV4dCogdGV4dCkKLXsKLSAgICB0ZXh0LT5jb250ZXh0ID0gbnVs
bHB0cjsKLX0KLQotVVRleHQqIG9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVU
ZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5n
dGgsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAg
ICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLSAgICBVVGV4dCogdGV4dCA9IHV0ZXh0X3NldHVwKCZ1dFdpdGhCdWZmZXItPnRl
eHQsIHNpemVvZih1dFdpdGhCdWZmZXItPmJ1ZmZlciksIHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJ
TFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcih0ZXh0
LCAmdGV4dExhdGluMUNvbnRleHRBd2FyZUZ1bmNzLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250
ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgpOwotICAgIHJldHVybiB0ZXh0OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM5ZDVkMjg0YmVjMGE4MWIzZjg3YWFjNjgzYjQ4ZTM0ODBlNTI0ZTkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVVRleHRQcm92aWRlckxhdGluMV9oCi0jZGVmaW5l
IFVUZXh0UHJvdmlkZXJMYXRpbjFfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3Qg
aW50IFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5ID0gMTY7Ci0KLXN0cnVjdCBVVGV4dFdp
dGhCdWZmZXIgewotICAgIFVUZXh0IHRleHQ7Ci0gICAgVUNoYXIgYnVmZmVyW1VUZXh0V2l0aEJ1
ZmZlcklubGluZUNhcGFjaXR5XTsKLX07Ci0KLVVUZXh0KiBvcGVuTGF0aW4xVVRleHRQcm92aWRl
cihVVGV4dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwotVVRleHQqIG9wZW5MYXRpbjFDb250
ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25z
dCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRl
eHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJMYXRpbjFfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVU
RjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJV
VEYxNi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYWFjNDhjODE1MWNlMDEy
NTM2YThjNGIxNWFhZWRiODQ4NmIwYzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgot
Ci0jaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8v
IFVURjE2Q29udGV4dEF3YXJlIHByb3ZpZGVyCi0KLXN0YXRpYyBVVGV4dCogdVRleHRVVEYxNkNv
bnRleHRBd2FyZUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSop
Owotc3RhdGljIGludDY0X3QgdVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4
dCopOwotc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqLCBp
bnQ2NF90LCBVQm9vbCk7Ci1zdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0
cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29k
ZSopOwotc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0Kik7Ci0K
LXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0VVRGMTZDb250ZXh0QXdhcmVGdW5j
cyA9IHsKLSAgICBzaXplb2YoVVRleHRGdW5jcyksCi0gICAgMCwKLSAgICAwLAotICAgIDAsCi0g
ICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb25lLAotICAgIHVUZXh0VVRGMTZDb250ZXh0QXdh
cmVOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcywKLSAgICB1
VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIs
Ci0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVD
bG9zZSwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0cgotfTsKLQotc3Rh
dGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVHZXRD
dXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCkKLXsKLSAgICBpZiAoIXRleHQtPmNodW5r
Q29udGVudHMpCi0gICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0
OwotICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnAgPyBVVGV4dFByb3Zp
ZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JD
b250ZXh0OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5Qcmlt
YXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRp
dmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVu
dHMgPT0gdGV4dC0+cCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0
aXZlSW5kZXggPj0gdGV4dC0+YiA6IG5hdGl2ZUluZGV4ID4gdGV4dC0+Yik7Ci0gICAgQVNTRVJU
X1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBu
YXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
PSB0ZXh0LT5iOwotICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7Ci0g
ICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1bmtO
YXRpdmVTdGFydDsKLSAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5lZCBp
ZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgIEFTU0VSVChsZW5n
dGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1
bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/
IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOwotICAgIHRleHQtPm5hdGl2ZUluZGV4
aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKLSAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2
ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKLSAgICAvLyBFbnN1cmUgY2h1bmsgb2Zm
c2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJh
bmdlIG9yIGNodW5rIGxlbmd0aC4KLSAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4o
b2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2Fz
dDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOwotfQotCi1zdGF0aWMg
dm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0
ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9y
d2FyZCkKLXsKLSAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtD
b250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nh
c3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wKTsKLSAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3Zl
SW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250
ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0
aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0
ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6IG5h
dGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3RoLCBm
b3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRp
dmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUlu
ZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0g
dGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0
ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBj
aHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBz
dGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0
YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KFVU
ZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJv
b2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+
Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKLSAgICB0ZXh0VVRGMTZDb250ZXh0QXdh
cmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9y
d2FyZCk7Ci19Ci0KLXN0YXRpYyBVVGV4dCogdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb25lKFVU
ZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9y
Q29kZSogc3RhdHVzKQotewotICAgIHJldHVybiB1VGV4dENsb25lSW1wbChkZXN0aW5hdGlvbiwg
c291cmNlLCBkZWVwLCBzdGF0dXMpOwotfQotCi1zdGF0aWMgaW5saW5lIGludDY0X3QgdVRleHRV
VEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCogdGV4dCkKLXsKLSAgICByZXR1cm4g
dGV4dC0+YSArIHRleHQtPmI7Ci19Ci0KLXN0YXRpYyBVQm9vbCB1VGV4dFVURjE2Q29udGV4dEF3
YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJk
KQotewotICAgIGlmICghdGV4dC0+Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAg
IGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0
aCh0ZXh0KTsKLSAgICBVQm9vbCBpc0FjY2Vzc2libGU7Ci0gICAgaWYgKHVUZXh0QWNjZXNzSW5D
aHVua09yT3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
LCBpc0FjY2Vzc2libGUpKQotICAgICAgICByZXR1cm4gaXNBY2Nlc3NpYmxlOwotICAgIG5hdGl2
ZUluZGV4ID0gdVRleHRBY2Nlc3NQaW5JbmRleChuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoKTsK
LSAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBjdXJyZW50Q29udGV4dCA9IHRleHRVVEYxNkNvbnRl
eHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KHRleHQpOwotICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0
IG5ld0NvbnRleHQgPSB1VGV4dFByb3ZpZGVyQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgZm9y
d2FyZCk7Ci0gICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5v
Q29udGV4dCk7Ci0gICAgaWYgKG5ld0NvbnRleHQgPT0gY3VycmVudENvbnRleHQpIHsKLSAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29u
dGV4dCkKLSAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250
ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfSBlbHNlIGlm
IChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCkKLSAg
ICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBu
YXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
QVNTRVJUKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dCk7
Ci0gICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQs
IG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0KLSAgICByZXR1cm4g
VFJVRTsKLX0KLQotc3RhdGljIGludDMyX3QgdVRleHRVVEYxNkNvbnRleHRBd2FyZUV4dHJhY3Qo
VVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUqIGVy
cm9yQ29kZSkKLXsKLSAgICAvLyBJbiB0aGUgcHJlc2VudCBjb250ZXh0LCB0aGlzIHRleHQgcHJv
dmlkZXIgaXMgdXNlZCBvbmx5IHdpdGggSUNVIGZ1bmN0aW9ucwotICAgIC8vIHRoYXQgZG8gbm90
IHBlcmZvcm0gYW4gZXh0cmFjdCBvcGVyYXRpb24uCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgKmVycm9yQ29kZSA9IFVfVU5TVVBQT1JURURfRVJST1I7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLXN0YXRpYyB2b2lkIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9zZShVVGV4dCogdGV4dCkK
LXsKLSAgICB0ZXh0LT5jb250ZXh0ID0gbnVsbHB0cjsKLX0KLQotVVRleHQqIG9wZW5VVEYxNkNv
bnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHQqIHRleHQsIGNvbnN0IFVDaGFyKiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29u
dGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
IHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICAgIHRleHQgPSB1dGV4dF9zZXR1cCh0ZXh0LCAwLCBzdGF0dXMp
OwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKLSAgICAgICAgQVNTRVJUKCF0ZXh0KTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVU
ZXh0UHJvdmlkZXIodGV4dCwgJnRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNzLCBzdHJpbmcsIGxl
bmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgpOwotICAgIHJldHVybiB0ZXh0
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhN2I0N2RkNzM0YmFhNzMwODAzNDNlMDU4MDVkNzJlMDIzYTdhOWU4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCisrKyAvZGV2L251bGwK
QEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVVRleHRQcm92aWRlclVURjE2
X2gKLSNkZWZpbmUgVVRleHRQcm92aWRlclVURjE2X2gKLQotI2luY2x1ZGUgPHVuaWNvZGUvdXRl
eHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1VVGV4dCogb3BlblVURjE2Q29udGV4dEF3
YXJlVVRleHRQcm92aWRlcihVVGV4dCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JD
b2RlKik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVUZXh0UHJvdmlk
ZXJVVEYxNl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9U
ZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRC
b3VuZGFyaWVzLm1tCmluZGV4IGI4NjBhMzUyOTJjMzUxYjQzYjY5NDc4ODE1ZmRkYTFjMWIyNmQy
YjguLmQ4ZWU1OThjNzQzOGI1NzIwY2VlZTk4MTdkZWYzZWFiYTk1NWY5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tCkBAIC0y
Niw4ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRleHRCb3VuZGFyaWVz
LmgiCiAKLSNpbXBvcnQgIlRleHRCcmVha0l0ZXJhdG9yLmgiCi0jaW1wb3J0ICJUZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVLmgiCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRlN0cmluZ1Rv
a2VuaXplci5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx1
bmljb2RlL3VicmsuaD4KQEAgLTM2LDYgKzM0LDggQEAKICNpbXBvcnQgPHVuaWNvZGUvdXR5cGVz
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgorI2ltcG9ydCA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oPgogI2ltcG9ydCA8d3RmL3Vu
aWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCcmVh
a0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFlNTM5NzZmYjFkNWQ3MmJjYTc0NjczNmI2ODM3MTUwNmFhOGQ2NDYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgaW50IG1heExv
Y2FsZVN0cmluZ0xlbmd0aCA9IDMyOwotCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSgpCi17Ci0gICAgUmV0YWluUHRyPENGUHJv
cGVydHlMaXN0UmVmPiBsb2NhbGUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5VmFsdWUoQ0ZT
VFIoIkFwcGxlVGV4dEJyZWFrTG9jYWxlIiksCi0gICAgICAgIGtDRlByZWZlcmVuY2VzQW55QXBw
bGljYXRpb24sIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9z
dCkpOwotICAgIGlmICghbG9jYWxlIHx8IENGR2V0VHlwZUlEKGxvY2FsZS5nZXQoKSkgIT0gQ0ZT
dHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PENGU3RyaW5nUmVmPihsb2NhbGUuZ2V0KCkpOwotfQotCi1zdGF0aWMgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB0b3BMYW5ndWFnZVByZWZlcmVuY2UoKQotewotICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBsYW5ndWFnZXNBcnJheSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5UHJlZmVy
cmVkTGFuZ3VhZ2VzKCkpOwotICAgIGlmICghbGFuZ3VhZ2VzQXJyYXkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGlmICghQ0ZBcnJheUdldENvdW50KGxhbmd1YWdlc0FycmF5LmdldCgp
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlc0FycmF5LmdldCgpLCAwKSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGdldExvY2FsZShDRlN0cmluZ1JlZiBsb2NhbGUsIGNoYXIgbG9j
YWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0pCi17Ci0gICAgLy8gRW1wdHkg
c3RyaW5nIG1lYW5zICJyb290IGxvY2FsZSIsIGFuZCB0aGF0IGlzIHdoYXQgd2UgdXNlIGlmIHdl
IGNhbid0IGdldCBhIHByZWZlcmVuY2UuCi0gICAgbG9jYWxlU3RyaW5nQnVmZmVyWzBdID0gMDsK
LSAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIENGU3RyaW5nR2V0Q1N0cmlu
Zyhsb2NhbGUsIGxvY2FsZVN0cmluZ0J1ZmZlciwgbWF4TG9jYWxlU3RyaW5nTGVuZ3RoLCBrQ0ZT
dHJpbmdFbmNvZGluZ0FTQ0lJKTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0U2VhcmNoTG9jYWxlKGNo
YXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0pCi17Ci0gICAgZ2V0
TG9jYWxlKHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpLmdldCgpLCBsb2NhbGVTdHJpbmdCdWZmZXIp
OwotfQotCi1jb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQotewotICAgIHN0YXRp
YyBjaGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdOwotICAgIHN0
YXRpYyBib29sIGdvdFNlYXJjaExvY2FsZSA9IGZhbHNlOwotICAgIGlmICghZ290U2VhcmNoTG9j
YWxlKSB7Ci0gICAgICAgIGdldFNlYXJjaExvY2FsZShsb2NhbGVTdHJpbmdCdWZmZXIpOwotICAg
ICAgICBnb3RTZWFyY2hMb2NhbGUgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gbG9jYWxlU3Ry
aW5nQnVmZmVyOwotfQotCi1zdGF0aWMgdm9pZCBnZXRUZXh0QnJlYWtMb2NhbGUoY2hhciBsb2Nh
bGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICAvLyBJZiB0aGVy
ZSBpcyBubyB0ZXh0IGJyZWFrIGxvY2FsZSwgdXNlIHRoZSB0b3AgbGFuZ3VhZ2UgcHJlZmVyZW5j
ZS4KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsZSA9IHRleHRCcmVha0xvY2FsZVBy
ZWZlcmVuY2UoKTsKLSAgICBpZiAobG9jYWxlKSB7Ci0gICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNhbm9uaWNhbExvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5vbmlj
YWxMYW5ndWFnZUlkZW50aWZpZXJGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2Fs
ZS5nZXQoKSkpKQotICAgICAgICAgICAgbG9jYWxlID0gY2Fub25pY2FsTG9jYWxlOwotICAgIH0g
ZWxzZQotICAgICAgICBsb2NhbGUgPSB0b3BMYW5ndWFnZVByZWZlcmVuY2UoKTsKLSAgICBnZXRM
b2NhbGUobG9jYWxlLmdldCgpLCBsb2NhbGVTdHJpbmdCdWZmZXIpOwotfQotCi1jb25zdCBjaGFy
KiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQotewotICAgIHN0YXRpYyBjaGFyIGxvY2FsZVN0
cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdOwotICAgIHN0YXRpYyBib29sIGdvdFRl
eHRCcmVha0xvY2FsZSA9IGZhbHNlOwotICAgIGlmICghZ290VGV4dEJyZWFrTG9jYWxlKSB7Ci0g
ICAgICAgIGdldFRleHRCcmVha0xvY2FsZShsb2NhbGVTdHJpbmdCdWZmZXIpOwotICAgICAgICBn
b3RUZXh0QnJlYWtMb2NhbGUgPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gbG9jYWxlU3RyaW5n
QnVmZmVyOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDE3ZTE3MDVlZjU0YjkzOTIxNGRhMTg0ODBk
YjdhMzJjMzJjOTI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2Nh
bGVJRCgpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2FsZS4KLSAgICBy
ZXR1cm4gIiI7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17
Ci0gICAgLy8gVXNpbmcgZW5fVVNfUE9TSVggbm93IHNvIHdvcmQgc2VsZWN0aW9uIGluIGFkZHJl
c3MgZmllbGQgd29ya3MgYXMgZXhwZWN0ZWQgYXMgYmVmb3JlIChkb3VibGUtY2xpY2tpbmcKLSAg
ICAvLyBpbiBhIFVSTCBzZWxlY3RzIGEgd29yZCBkZWxpbWl0ZWQgYnkgcGVyaW9kcyByYXRoZXIg
dGhhbiBzZWxlY3RpbmcgdGhlIGVudGlyZSBVUkwpLgotICAgIC8vIEhvd2V2ZXIsIHRoaXMgaXMg
bm90IGVudGlyZWx5IGNvcnJlY3QgLSB3ZSBzaG91bGQgaG9ub3IgdGhlIHN5c3RlbSBsb2NhbGUg
aW4gdGhlIG5vcm1hbCBjYXNlLgotICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNjc4Njcw
Mz4gU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlIGZvciB0ZXh0IGJyZWFraW5nCi0gICAgcmV0dXJu
ICJlbl9VU19QT1NJWCI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IGUzNTQ2MDMxOTUwMzI1OGNmMjlmNzQzYTViODQxMGZmMjRlOWVlYjcuLjJl
ZDViNWE5NWVlYzNjMDUwY2UxYmQ0OWRmYTA0NWI2MDY3MTMxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNjgsNyArNjgsNyBAQAogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCmluZGV4IDhiNGVjM2Y4ZWViOTMyYzFjN2RjNWRlMTY2OWYwOGM0MGJhMDZlY2IuLjJh
NWFkNWQ0NTA5NDI1Nzc2YjlhYzA0MDAwMzZmYzc2MDFiNmUwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJicmVha19saW5lcy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggYmFjYzVjMjUzYWMzZTdj
OTVkNWM2ZmE5ZjM2MTc1NTI0NDVhODk1Mi4uZDYzZTYwODljZGU0MDM3YzU1ZTVmMWM4YzYyMjgx
ZThhY2E2MmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0yNyw4
ICsyNyw4IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dExpbmVCb3hlcy5oIgogI2luY2x1ZGUgIlNp
bXBsZUxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJUZXh0LmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0
RnJhZ21lbnRJdGVyYXRvci5oCmluZGV4IGM3OTA2YzE3ZGM4ZTAxNGVkMDUwZjk1ZmNiMDFjYzg2
YjUxMDFkNjQuLjEwNzdiY2JiZjE2MDk1NTRiY2ViYjc3NDU4ZjI4MDg1ZmY2MjZhY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdt
ZW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IlJlbmRlckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVu
dHMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFr
X2xpbmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAKaW5k
ZXggMDc1NzZiYmM4YmQ0Y2ZmNmY1M2FiMzRiMGMxMzY1YTNmODQ0YThjYS4uZTRiOTUzNmZkMWJl
ZGYxY2UzNjNkNjYwMTFkNTEyMzU5MGVmODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
YnJlYWtfbGluZXMuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiYnJlYWtfbGluZXMuaCIKIAotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgi
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKaW5kZXggOWUwNGQxZTQyOGNhMjYwODM1YWJlYmY5NWVl
YzY0Mzg5YmZlZTRkNi4uYTI5NDYxMjljYmE2ZWI5MTZkYWI5ZTUxYTgwZWNiZTllMTdmYjJkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmgKQEAgLTIyLDkgKzIyLDkgQEAK
ICNpZm5kZWYgYnJlYWtfbGluZXNfaAogI2RlZmluZSBicmVha19saW5lc19oCiAKLSNpbmNsdWRl
ICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVh
a2VyLmgKaW5kZXggMjc3NGYyNjg1NjExOTgzZGY1YzM0ODM5ZWRlNzA0NmRlZDI2YTNmZC4uYzg5
ZmUxN2NjZDA2OWE2NWNlMTNkODFhYzdlMWEzYzg5ZjUxOGM3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIkxp
bmVJbmxpbmVIZWFkZXJzLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283249</attachid>
            <date>2016-07-09 00:28:24 -0700</date>
            <delta_ts>2016-07-09 00:50:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159594-20160709002746.patch</filename>
            <type>text/plain</type>
            <size>420627</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLmFmOTRjZDdkYWVlN2QzZmY4ZmRjYWQ0OWRjMGE1MThlOTBhNDJi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE2LTA3LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2luZyBpdGVyYXRvciBj
b2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1ZpZXcgYSBHcmFwaGVt
ZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRvciBuZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9yCisgICAgICAgIGNv
ZGUuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpY3UvdW5pY29kZS91YnJrLmg6IEFkZGVkLgorICAgICAgICAqIGljdS91bmljb2RlL3V0ZXh0
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGV4dC5oLgorICAg
ICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAg
ICogd3RmL1RpbnlMUlVDYWNoZS5oOgorICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaC4KKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0
b3JQb29sOjpMaW5lQnJlYWtJdGVyYXRvclBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJdGVyYXRv
clBvb2w6Om1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKToKKyAgICAgICAgKFdURjo6TGluZUJy
ZWFrSXRlcmF0b3JQb29sOjp0YWtlKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0b3JQ
b29sOjpwdXQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwLgorICAgICAgICAoV1RGOjppbml0aWFsaXplSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOgorICAgICAgICAoV1RGOjpzZXRUZXh0Rm9ySXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OnNlbnRlbmNl
QnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmN1cnNvck1vdmVtZW50SXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpy
ZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjptYXBMaW5lSXRlcmF0b3JN
b2RlVG9SdWxlcyk6CisgICAgICAgIChXVEY6OmlzQ0pLTG9jYWxlKToKKyAgICAgICAgKFdURjo6
b3BlbkxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OmNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZpcnN0KToKKyAgICAgICAgKFdURjo6dGV4
dEJyZWFrTGFzdCk6CisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOgorICAgICAgICAoV1RG
Ojp0ZXh0QnJlYWtQcmV2aW91cyk6CisgICAgICAgIChXVEY6OnRleHRCcmVha1ByZWNlZGluZyk6
CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXVEY6OnRleHRC
cmVha0N1cnJlbnQpOgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6CisgICAgICAgIChXVEY6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXVEY6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOgor
ICAgICAgICAoV1RGOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAgICAg
KiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oLgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6fkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c3RyaW5nKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjppc0xvb3NlQ0pLTW9kZSk6CisgICAgICAgIChXVEY6OkxhenlM
aW5lQnJlYWtJdGVyYXRvcjo6bGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OnVwZGF0ZVByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6Okxh
enlMaW5lQnJlYWtJdGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpyZXNldFN0cmluZ0FuZFJlbGVhc2VJdGVyYXRvcik6CisgICAgICAgIChXVEY6
Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJh
dG9yKik6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmguCisgICAgICAgICogd3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4dC9ndGsvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXIuY3BwLgorICAgICAgICAoV1RGOjpmaXhQb2ludGVyKToKKyAgICAg
ICAgKFdURjo6dVRleHRDbG9uZUltcGwpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmguCisgICAgICAgIChXVEY6OnVUZXh0UHJvdmlkZXJDb250ZXh0KToKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOgorICAgICAg
ICAoV1RGOjp1VGV4dEFjY2Vzc1BpbkluZGV4KToKKyAgICAgICAgKFdURjo6dVRleHRBY2Nlc3NJ
bkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcC4KKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDbG9u
ZSk6CisgICAgICAgIChXVEY6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdU
Rjo6dVRleHRMYXRpbjFBY2Nlc3MpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUV4dHJhY3Qp
OgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKToKKyAgICAgICAg
KFdURjo6dVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYpOgorICAgICAgICAoV1RGOjp1
VGV4dExhdGluMUNsb3NlKToKKyAgICAgICAgKFdURjo6b3BlbkxhdGluMVVUZXh0UHJvdmlkZXIp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRl
eHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5
Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5Qcmlv
ckNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9Q
cmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25l
KToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOgor
ICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2Vzcyk6CisgICAgICAgIChX
VEY6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6CisgICAgICAgIChXVEY6OnVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UpOgorICAgICAgICAoV1RGOjpvcGVuTGF0aW4xQ29udGV4
dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlk
ZXJMYXRpbjEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaC4KKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAuCisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2Q29udGV4
dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0VVRGMTZDb250
ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dFVU
RjE2Q29udGV4dEF3YXJlQ2xvbmUpOgorICAgICAgICAoV1RGOjp1VGV4dFVURjE2Q29udGV4dEF3
YXJlTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUFj
Y2Vzcyk6CisgICAgICAgIChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KToKKyAg
ICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKToKKyAgICAgICAgKFdURjo6
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmguCisgICAgICAgICogd3RmL3RleHQv
bWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
TWFjLm1tLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKToKKyAgICAg
ICAgKFdURjo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxl
KToKKyAgICAgICAgKFdURjo6Z2V0U2VhcmNoTG9jYWxlKToKKyAgICAgICAgKFdURjo6Y3VycmVu
dFNlYXJjaExvY2FsZUlEKToKKyAgICAgICAgKFdURjo6Z2V0VGV4dEJyZWFrTG9jYWxlKToKKyAg
ICAgICAgKFdURjo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4
dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVV2luLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorCiAyMDE2LTA3LTA4
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjAyNzk5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwOTRlNzRiMGM0NDRi
YTQ4MjBhYTJhM2FlNjAzNzFkZGY1MWZlMmEuLjFmMGE3MjQwOTFkZGMwODQyOGU3Mjk0ZDk1MzEw
OTdiZGFlODIxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTQgQEAKKzIwMTYtMDctMDkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGJy
ZWFraW5nIGl0ZXJhdG9yIGNvZGUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBnaXZpbmcgU3Ry
aW5nVmlldyBhIEdyYXBoZW1lQ2x1c3RlcnMgaXRlcmF0b3IuCisgICAgICAgIFN1Y2ggYW4gaW50
ZXJhdG9yIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBvdXIgYnJlYWtpbmcgaXRl
cmF0b3IKKyAgICAgICAgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVy
ZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFs
dWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3Jl
YXRlVmFsdWVGb3JLZXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVy
YXRvclBvb2w6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjptYWtlTG9jYWxlV2l0aEJyZWFrS2V5
d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6
OnRha2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29s
OjpwdXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzZXRUZXh0Rm9ySXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OndvcmRCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNlbnRl
bmNlQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JNb3Zl
bWVudEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFjcXVpcmVMaW5lQnJl
YWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTGluZUJyZWFr
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bWFwTGluZUl0ZXJhdG9yTW9k
ZVRvUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNDSktMb2NhbGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxpbmVCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4
dEJyZWFrRmlyc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFrTGFzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0QnJlYWtOZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnRleHRCcmVha1ByZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRleHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0
ZXh0QnJlYWtGb2xsb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFr
Q3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1RleHRCcmVhayk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJlYWspOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bnVtR3JhcGhlbWVDbHVzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6On5MYXp5TGluZUJyZWFrSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjppc0xvb3NlQ0pLTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I6Omxhc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjp1
cGRhdGVQcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OmdldCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnJlc2V0U3RyaW5nQW5k
UmVsZWFzZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yKik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaXhQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xv
bmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dFByb3ZpZGVyQ29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dEFjY2Vzc1BpbkluZGV4KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNsb25lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExh
dGluMU1hcE9mZnNldFRvTmF0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0
TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxhdGlu
MVVUZXh0UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMUNv
bnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29u
dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
TW92ZUluUHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRp
bjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFBy
b3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlR2V0
Q3VycmVudENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29u
dGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dp
dGNoVG9QcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRVVEYx
NkNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0VVRG
MTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
dVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmdldExvY2FsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRTZWFyY2hM
b2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldFRleHRCcmVha0xvY2FsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oOgorCiAyMDE2LTA3LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgYWRvcHROb2RlKCkgY2hhbmdlcyBjc3MgY2xhc3MgdG8gbG93ZXJjYXNlIGZvciBkb2N1
bWVudCBsb2FkZWQgd2l0aCBYSFIgcmVzcG9uc2VUeXBlID0gImRvY3VtZW50IgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDM0ZjY2ZTMzZTljY2Q4Yzk1Mzdm
NzU3MGVmMmE4MmIwN2VjM2QzMS4uNGJlNGZjMWRhNDRjYzlhMThmMjEyZTgyMGRiMzU4MGJjNmIy
OWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2
ICs4OSwxNSBAQAogCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJv
bHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2Vk
QnlTYWZhcmkubW0gKi87IH07CiAJCTFBRkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2Fz
dHNDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
REU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi87IH07CiAJCTFBRkRFNjUz
MTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGREU2NTIxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFs
LmggKi87IH07CisJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4
MUM3RDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OworCQkx
QzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTgxQzdFMUQzMDc4REEwMEY1
RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oICovOyB9OworCQkxQzE4MUM4RjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRl
ci5jcHAgKi87IH07CisJCTFDMTgxQzkwMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
QTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5oICovOyB9OworCQkxQzE4MUM5MTFE
MzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYg
LyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi87IH07CisJCTFDMTgxQzkyMUQzMDdBQjgwMEY1
RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92
aWRlckxhdGluMS5oICovOyB9OworCQkxQzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQ
cm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMTgxQzhEMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
ICovOyB9OworCQkxQzE4MUM5NDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggKi87IH07CisJCTFDMTgx
Qzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxODFDOTUx
RDMwODAwQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gKi87
IH07CiAJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg4MTUyNTAy
REEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCAqLzsgfTsKIAkJMUZBNDdDOEIxNTI1MDJE
QTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg5MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmggKi87IH07CiAJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5oICovOyB9OwpAQCAtNDE0LDYgKzQyMywxNyBAQAogCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3
MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0
c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkRFNjUyMTk1M0IyM0QwMEM0
OEZGQSAvKiBPcHRpb25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRp
b25hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM3RDFEMzA3OERBMDBG
NUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODIxRDMwNzlB
QzAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDOEExRDMwN0FCODAwRjVGQTE2IC8qIFVU
ZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92
aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4QjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMxODFDOEMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRp
bjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGlu
MS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4RDFEMzA3QUI4MDBGNUZB
MTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMTgxQzhFMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgcGF0
aCA9IG1hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRkE0N0M4ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVh
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4
RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29yZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODgsNiArNzA4LDE5IEBACiAJCQluYW1lID0gTGli
cmFyaWVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMxODFDODgxRDMw
N0FCODAwRjVGQTE2IC8qIGljdSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUMxODFDODkxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3Bw
ICovLAorCQkJCTFDMTgxQzhBMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggKi8s
CisJCQkJMUMxODFDOEIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
ICovLAorCQkJCTFDMTgxQzhDMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4x
LmggKi8sCisJCQkJMUMxODFDOEQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi8sCisJCQkJMUMxODFDOEUxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc1MSw2ICs3ODQsNyBAQAogCQlB
NUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBB
ODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSAqLywKIAkJCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJF
NjkgLyogU3RyaW5nTWFjLm1tICovLAogCQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBT
dHJpbmdWaWV3T2JqQy5tbSAqLywKQEAgLTEwNDMsNiArMTA3Nyw3IEBACiAJCUE4QTQ3MzFCMTUx
QTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzE4MUM4ODFEMzA3QUI4MDBGNUZBMTYgLyogaWN1ICovLAogCQkJCUE1
QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAvKiBjZiAqLywKIAkJCQlBNUJBMTVGMTE4MjQzMzlGMDBB
ODJFNjkgLyogbWFjICovLAogCQkJCUE4QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZh
c3RQYXRoLmggKi8sCkBAIC0xMDc5LDYgKzExMTQsMTAgQEAKIAkJCQk3MEVDQTYwQzFCMDI0MjY4
MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGU3RyaW5nLmggKi8sCisJCQkJMUMxODFDN0QxRDMwNzhEQTAwRjVGQTE2IC8qIFRl
eHRCcmVha0l0ZXJhdG9yLmNwcCAqLywKKwkJCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyog
VGV4dEJyZWFrSXRlcmF0b3IuaCAqLywKKwkJCQkxQzE4MUM4MTFEMzA3OTdDMDBGNUZBMTYgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8sCisJCQkJMUMxODFDODIxRDMwNzlBQzAwRjVG
QTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjQ3LDYgKzEyODYsNyBA
QAogCQkJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVk
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogSGFz
aGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4MUM5MDFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDQxNTFBODI1QjAwNDEyM0ZG
IC8qIEhhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Q1MTUxQTgyNUIw
MDQxMjNGRiAvKiBIYXNoSXRlcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNENjE1
MUE4MjVCMDA0MTIzRkYgLyogSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjYzLDYgKzEz
MDMsNyBAQAogCQkJCTdDREQ3RkZBMTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0FDOTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MERBMDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJv
dmlkZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZG
IC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUxNjQ2QjFCNkZGQzk2MDA0
MDBFN0MgLyogTG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEy
M0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjcyLDYgKzEzMTMsNyBAQAogCQkJ
CUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxQzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyog
TWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMyLDYgKzEzNzQsNyBA
QAogCQkJCUE3NDg3NDUzMTdBMEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyNjE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5k
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0
UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVC
MDA0MTIzRkYgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAg
LTE1MDIsNiArMTU0NSw3IEBACiAJCQkJQThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTU1NkY1
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDM5MTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTFDMTgxQzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAw
NDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUx
QTgyNUIwMDQxMjNGRiAvKiBEYXRhTG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Ew
MTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MTUs
NiArMTU1OSw3IEBACiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2Nr
T2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzhG
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTI5LDYgKzE1NzQsNyBAQAogCQkJCUE4
QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIzMzRFQjAw
ODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgy
NEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNTU4LDYgKzE2MDQsOCBAQAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcx
NTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzdG
MUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDgxNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NEExNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91YnJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljMGVmNjI3YjY3Mjc5Zjg2ZTQ2MDQ0YmYwZjI1
NzEwMmUwYzZjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJy
ay5oCkBAIC0wLDAgKzEsNTQxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHly
aWdodCAoQykgMTk5Ni0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuCisqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyovCisKKyNpZm5kZWYgVUJSS19ICisjZGVmaW5lIFVCUktfSAorCisjaW5jbHVk
ZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3Vsb2MuaCIKKyNpbmNsdWRl
ICJ1bmljb2RlL3V0ZXh0LmgiCisjaW5jbHVkZSAidW5pY29kZS9sb2NhbHBvaW50ZXIuaCIKKwor
LyoqCisgKiBBIHRleHQtYnJlYWsgaXRlcmF0b3IuCisgKiAgRm9yIHVzYWdlIGluIEMgcHJvZ3Jh
bXMuCisgKi8KKyNpZm5kZWYgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRPUgorIyAgIGRlZmlu
ZSBVQlJLX1RZUEVERUZfVUJSRUFLX0lURVJBVE9SCisgICAgLyoqCisgICAgICogIE9wYXF1ZSB0
eXBlIHJlcHJlc2VudGluZyBhbiBJQ1UgQnJlYWsgaXRlcmF0b3Igb2JqZWN0LgorICAgICAqICBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBVQnJlYWtJdGVyYXRv
ciBVQnJlYWtJdGVyYXRvcjsKKyNlbmRpZgorCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFU
SU9OCisKKyNpbmNsdWRlICJ1bmljb2RlL3BhcnNlZXJyLmgiCisKKy8qKgorICogXGZpbGUKKyAq
IFxicmllZiBDIEFQSTogQnJlYWtJdGVyYXRvcgorICoKKyAqIDxoMj4gQnJlYWtJdGVyYXRvciBD
IEFQSSA8L2gyPgorICoKKyAqIFRoZSBCcmVha0l0ZXJhdG9yIEMgQVBJIGRlZmluZXMgIG1ldGhv
ZHMgZm9yIGZpbmRpbmcgdGhlIGxvY2F0aW9uCisgKiBvZiBib3VuZGFyaWVzIGluIHRleHQuIFBv
aW50ZXIgdG8gYSBVQnJlYWtJdGVyYXRvciBtYWludGFpbiBhCisgKiBjdXJyZW50IHBvc2l0aW9u
IGFuZCBzY2FuIG92ZXIgdGV4dCByZXR1cm5pbmcgdGhlIGluZGV4IG9mIGNoYXJhY3RlcnMKKyAq
IHdoZXJlIGJvdW5kYXJpZXMgb2NjdXIuCisgKiA8cD4KKyAqIExpbmUgYm91bmRhcnkgYW5hbHlz
aXMgZGV0ZXJtaW5lcyB3aGVyZSBhIHRleHQgc3RyaW5nIGNhbiBiZSBicm9rZW4KKyAqIHdoZW4g
bGluZS13cmFwcGluZy4gVGhlIG1lY2hhbmlzbSBjb3JyZWN0bHkgaGFuZGxlcyBwdW5jdHVhdGlv
biBhbmQKKyAqIGh5cGhlbmF0ZWQgd29yZHMuCisgKiA8cD4KKyAqIFNlbnRlbmNlIGJvdW5kYXJ5
IGFuYWx5c2lzIGFsbG93cyBzZWxlY3Rpb24gd2l0aCBjb3JyZWN0CisgKiBpbnRlcnByZXRhdGlv
biBvZiBwZXJpb2RzIHdpdGhpbiBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb25zLCBhbmQKKyAqIHRy
YWlsaW5nIHB1bmN0dWF0aW9uIG1hcmtzIHN1Y2ggYXMgcXVvdGF0aW9uIG1hcmtzIGFuZCBwYXJl
bnRoZXNlcy4KKyAqIDxwPgorICogV29yZCBib3VuZGFyeSBhbmFseXNpcyBpcyB1c2VkIGJ5IHNl
YXJjaCBhbmQgcmVwbGFjZSBmdW5jdGlvbnMsIGFzCisgKiB3ZWxsIGFzIHdpdGhpbiB0ZXh0IGVk
aXRpbmcgYXBwbGljYXRpb25zIHRoYXQgYWxsb3cgdGhlIHVzZXIgdG8KKyAqIHNlbGVjdCB3b3Jk
cyB3aXRoIGEgZG91YmxlIGNsaWNrLiBXb3JkIHNlbGVjdGlvbiBwcm92aWRlcyBjb3JyZWN0Cisg
KiBpbnRlcnByZXRhdGlvbiBvZiBwdW5jdHVhdGlvbiBtYXJrcyB3aXRoaW4gYW5kIGZvbGxvd2lu
ZworICogd29yZHMuIENoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSB3b3JkLCBzdWNo
IGFzIHN5bWJvbHMgb3IKKyAqIHB1bmN0dWF0aW9uIG1hcmtzLCBoYXZlIHdvcmQtYnJlYWtzIG9u
IGJvdGggc2lkZXMuCisgKiA8cD4KKyAqIENoYXJhY3RlciBib3VuZGFyeSBhbmFseXNpcyBpZGVu
dGlmaWVzIHRoZSBib3VuZGFyaWVzIG9mCisgKiAiRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlcnMi
LCB3aGljaCBhcmUgZ3JvdXBpbmdzIG9mIGNvZGVwb2ludHMKKyAqIHRoYXQgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgY2hhcmFjdGVyLWxpa2UgdW5pdHMgZm9yIG1hbnkgdGV4dCBvcGVyYXRpb25zLgor
ICogUGxlYXNlIHNlZSBVbmljb2RlIFN0YW5kYXJkIEFubmV4ICMyOSwgVW5pY29kZSBUZXh0IFNl
Z21lbnRhdGlvbiwKKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjI5LyBmb3Ig
YWRkaXRpb25hbCBpbmZvcm1hdGlvbiAKKyAqIG9uIGdyYXBoZW1lIGNsdXN0ZXJzIGFuZCBndWlk
ZWxpbmVzIG9uIHRoZWlyIHVzZS4KKyAqIDxwPgorICogVGl0bGUgYm91bmRhcnkgYW5hbHlzaXMg
bG9jYXRlcyBhbGwgcG9zaXRpb25zLAorICogdHlwaWNhbGx5IHN0YXJ0cyBvZiB3b3JkcywgdGhh
dCBzaG91bGQgYmUgc2V0IHRvIFRpdGxlIENhc2UKKyAqIHdoZW4gdGl0bGUgY2FzaW5nIHRoZSB0
ZXh0LgorICogPHA+CisgKiBUaGUgdGV4dCBib3VuZGFyeSBwb3NpdGlvbnMgYXJlIGZvdW5kIGFj
Y29yZGluZyB0byB0aGUgcnVsZXMKKyAqIGRlc2NyaWJlZCBpbiBVbmljb2RlIFN0YW5kYXJkIEFu
bmV4ICMyOSwgVGV4dCBCb3VuZGFyaWVzLCBhbmQKKyAqIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXgg
IzE0LCBMaW5lIEJyZWFraW5nIFByb3BlcnRpZXMuICBUaGVzZQorICogYXJlIGF2YWlsYWJsZSBh
dCBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIxNC8gYW5kCisgKiBodHRwOi8vd3d3
LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8uCisgKiA8cD4KKyAqIEluIGFkZGl0aW9uIHRvIHRo
ZSBwbGFpbiBDIEFQSSBkZWZpbmVkIGluIHRoaXMgaGVhZGVyIGZpbGUsIGFuCisgKiBvYmplY3Qg
b3JpZW50ZWQgQysrIEFQSSB3aXRoIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyBkZWZpbmVk
IGluIHRoZQorICogZmlsZSBicmtpdGVyLmguCisgKiA8cD4KKyAqIENvZGUgc25pcHBldHMgaWxs
dXN0cmF0aW5nIHRoZSB1c2Ugb2YgdGhlIEJyZWFrIEl0ZXJhdG9yIEFQSXMKKyAqIGFyZSBhdmFp
bGFibGUgaW4gdGhlIElDVSBVc2VyIEd1aWRlLAorICogaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy91
c2VyZ3VpZGUvYm91bmRhcnlBbmFseXNpcy5odG1sCisgKiBhbmQgaW4gdGhlIHNhbXBsZSBwcm9n
cmFtIGljdS9zb3VyY2Uvc2FtcGxlcy9icmVhay9icmVhay5jcHAKKyAqLworCisvKiogVGhlIHBv
c3NpYmxlIHR5cGVzIG9mIHRleHQgYm91bmRhcmllcy4gIEBzdGFibGUgSUNVIDIuMCAqLwordHlw
ZWRlZiBlbnVtIFVCcmVha0l0ZXJhdG9yVHlwZSB7CisgIC8qKiBDaGFyYWN0ZXIgYnJlYWtzICBA
c3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19DSEFSQUNURVIgPSAwLAorICAvKiogV29yZCBicmVh
a3MgQHN0YWJsZSBJQ1UgMi4wICovCisgIFVCUktfV09SRCA9IDEsCisgIC8qKiBMaW5lIGJyZWFr
cyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19MSU5FID0gMiwKKyAgLyoqIFNlbnRlbmNlIGJy
ZWFrcyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19TRU5URU5DRSA9IDMsCisKKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgIC8qKgorICAgKiBUaXRsZSBDYXNlIGJyZWFrcworICAg
KiBUaGUgaXRlcmF0b3IgY3JlYXRlZCB1c2luZyB0aGlzIHR5cGUgbG9jYXRlcyB0aXRsZSBib3Vu
ZGFyaWVzIGFzIGRlc2NyaWJlZCBmb3IKKyAgICogVW5pY29kZSAzLjIgb25seS4gRm9yIFVuaWNv
ZGUgNC4wIGFuZCBhYm92ZSB0aXRsZSBib3VuZGFyeSBpdGVyYXRpb24sCisgICAqIHBsZWFzZSB1
c2UgV29yZCBCb3VuZGFyeSBpdGVyYXRvci4KKyAgICoKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDIu
OCBVc2UgdGhlIHdvcmQgYnJlYWsgaXRlcmF0b3IgZm9yIHRpdGxlY2FzaW5nIGZvciBVbmljb2Rl
IDQgYW5kIGxhdGVyLgorICAgKi8KKyAgVUJSS19USVRMRSA9IDQsCisjZW5kaWYgLyogVV9ISURF
X0RFUFJFQ0FURURfQVBJICovCisgIFVCUktfQ09VTlQgPSA1Cit9IFVCcmVha0l0ZXJhdG9yVHlw
ZTsKKworLyoqIFZhbHVlIGluZGljYXRpbmcgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4g
cmV0dXJuZWQuCisgKiAgQHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVUJSS19ET05FICgo
aW50MzJfdCkgLTEpCisKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRoZSB3b3JkIGJy
ZWFrIHRhZ3MgcmV0dXJuZWQgYnkKKyAqICBnZXRSdWxlU3RhdHVzKCkuICBBIHJhbmdlIG9mIHZh
bHVlcyBpcyBkZWZpbmVkIGZvciBlYWNoIGNhdGVnb3J5IG9mCisgKiAgd29yZCwgdG8gYWxsb3cg
Zm9yIGZ1cnRoZXIgc3ViZGl2aXNpb25zIG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2Vz
LgorICogIEFwcGxpY2F0aW9ucyBzaG91bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3
aXRoaW4gdGhlIHJhbmdlLCByYXRoZXIKKyAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2
YWx1ZXMuCisgKiAgQHN0YWJsZSBJQ1UgMi4yCisqLwordHlwZWRlZiBlbnVtIFVXb3JkQnJlYWsg
eworICAgIC8qKiBUYWcgdmFsdWUgZm9yICJ3b3JkcyIgdGhhdCBkbyBub3QgZml0IGludG8gYW55
IG9mIG90aGVyIGNhdGVnb3JpZXMuCisgICAgICogIEluY2x1ZGVzIHNwYWNlcyBhbmQgbW9zdCBw
dW5jdHVhdGlvbi4gKi8KKyAgICBVQlJLX1dPUkRfTk9ORSAgICAgICAgICAgPSAwLAorICAgIC8q
KiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3IgdW5jYXRlZ29yaXplZCB3b3Jkcy4gKi8KKyAgICBV
QlJLX1dPUkRfTk9ORV9MSU1JVCAgICAgPSAxMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29y
ZHMgdGhhdCBhcHBlYXIgdG8gYmUgbnVtYmVycywgbG93ZXIgbGltaXQuICAgICovCisgICAgVUJS
S19XT1JEX05VTUJFUiAgICAgICAgID0gMTAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRz
IHRoYXQgYXBwZWFyIHRvIGJlIG51bWJlcnMsIHVwcGVyIGxpbWl0LiAgICAqLworICAgIFVCUktf
V09SRF9OVU1CRVJfTElNSVQgICA9IDIwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyB0
aGF0IGNvbnRhaW4gbGV0dGVycywgZXhjbHVkaW5nCisgICAgICogIGhpcmFnYW5hLCBrYXRha2Fu
YSBvciBpZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzLCBsb3dlciBsaW1pdC4gICAgKi8KKyAgICBVQlJL
X1dPUkRfTEVUVEVSICAgICAgICAgPSAyMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMg
Y29udGFpbmluZyBsZXR0ZXJzLCB1cHBlciBsaW1pdCAgKi8KKyAgICBVQlJLX1dPUkRfTEVUVEVS
X0xJTUlUICAgPSAzMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMgY29udGFpbmluZyBr
YW5hIGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0tBTkEgICAgICAg
ICAgID0gMzAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcga2FuYSBj
aGFyYWN0ZXJzLCB1cHBlciBsaW1pdCAqLworICAgIFVCUktfV09SRF9LQU5BX0xJTUlUICAgICA9
IDQwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyBjb250YWluaW5nIGlkZW9ncmFwaGlj
IGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0lERU8gICAgICAgICAg
ID0gNDAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcgaWRlb2dyYXBo
aWMgY2hhcmFjdGVycywgdXBwZXIgbGltaXQgKi8KKyAgICBVQlJLX1dPUkRfSURFT19MSU1JVCAg
ICAgPSA1MDAKK30gVVdvcmRCcmVhazsKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRo
ZSBsaW5lIGJyZWFrIHRhZ3MgcmV0dXJuZWQgYnkgZ2V0UnVsZVN0YXR1cygpLgorICogIEEgcmFu
Z2Ugb2YgdmFsdWVzIGlzIGRlZmluZWQgZm9yIGVhY2ggY2F0ZWdvcnkgb2YKKyAqICB3b3JkLCB0
byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2YgYSBjYXRlZ29yeSBpbiBmdXR1cmUg
cmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBmb3IgdGFnIHZhbHVlcyBm
YWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICogIHRoYW4gZm9yIHNpbmdsZSBpbmRp
dmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgKKyovCit0eXBlZGVmIGVudW0gVUxp
bmVCcmVha1RhZyB7CisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igc29mdCBsaW5lIGJyZWFrcywgcG9z
aXRpb25zIGF0IHdoaWNoIGEgbGluZSBicmVhaworICAgICAgKiAgaXMgYWNjZXB0YWJsZSBidXQg
bm90IHJlcXVpcmVkICAgICAgICAgICAgICAgICovCisgICAgVUJSS19MSU5FX1NPRlQgICAgICAg
ICAgICA9IDAsCisgICAgLyoqIFVwcGVyIGJvdW5kIGZvciBzb2Z0IGxpbmUgYnJlYWtzLiAgICAg
ICAgICAgICAgKi8KKyAgICBVQlJLX0xJTkVfU09GVF9MSU1JVCAgICAgID0gMTAwLAorICAgIC8q
KiBUYWcgdmFsdWUgZm9yIGEgaGFyZCwgb3IgbWFuZGF0b3J5IGxpbmUgYnJlYWsgICovCisgICAg
VUJSS19MSU5FX0hBUkQgICAgICAgICAgICA9IDEwMCwKKyAgICAvKiogVXBwZXIgYm91bmQgZm9y
IGhhcmQgbGluZSBicmVha3MuICAgICAgICAgICAgICAqLworICAgIFVCUktfTElORV9IQVJEX0xJ
TUlUICAgICAgPSAyMDAKK30gVUxpbmVCcmVha1RhZzsKKworCisKKy8qKgorICogIEVudW0gY29u
c3RhbnRzIGZvciB0aGUgc2VudGVuY2UgYnJlYWsgdGFncyByZXR1cm5lZCBieSBnZXRSdWxlU3Rh
dHVzKCkuCisgKiAgQSByYW5nZSBvZiB2YWx1ZXMgaXMgZGVmaW5lZCBmb3IgZWFjaCBjYXRlZ29y
eSBvZgorICogIHNlbnRlbmNlLCB0byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2Yg
YSBjYXRlZ29yeSBpbiBmdXR1cmUgcmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBj
aGVjayBmb3IgdGFnIHZhbHVlcyBmYWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICog
IHRoYW4gZm9yIHNpbmdsZSBpbmRpdmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgK
KyovCit0eXBlZGVmIGVudW0gVVNlbnRlbmNlQnJlYWtUYWcgeworICAgIC8qKiBUYWcgdmFsdWUg
Zm9yIGZvciBzZW50ZW5jZXMgIGVuZGluZyB3aXRoIGEgc2VudGVuY2UgdGVybWluYXRvcgorICAg
ICAgKiAoJy4nLCAnPycsICchJywgZXRjLikgY2hhcmFjdGVyLCBwb3NzaWJseSBmb2xsb3dlZCBi
eSBhCisgICAgICAqIGhhcmQgc2VwYXJhdG9yIChDUiwgTEYsIFBTLCBldGMuKQorICAgICAgKi8K
KyAgICBVQlJLX1NFTlRFTkNFX1RFUk0gICAgICAgPSAwLAorICAgIC8qKiBVcHBlciBib3VuZCBm
b3IgdGFncyBmb3Igc2VudGVuY2VzIGVuZGVkIGJ5IHNlbnRlbmNlIHRlcm1pbmF0b3JzLiAgICAq
LworICAgIFVCUktfU0VOVEVOQ0VfVEVSTV9MSU1JVCA9IDEwMCwKKyAgICAvKiogVGFnIHZhbHVl
IGZvciBmb3Igc2VudGVuY2VzIHRoYXQgZG8gbm90IGNvbnRhaW4gYW4gZW5kaW5nCisgICAgICAq
IHNlbnRlbmNlIHRlcm1pbmF0b3IgKCcuJywgJz8nLCAnIScsIGV0Yy4pIGNoYXJhY3RlciwgYnV0
CisgICAgICAqIGFyZSBlbmRlZCBvbmx5IGJ5IGEgaGFyZCBzZXBhcmF0b3IgKENSLCBMRiwgUFMs
IGV0Yy4pIG9yIGVuZCBvZiBpbnB1dC4KKyAgICAgICovCisgICAgVUJSS19TRU5URU5DRV9TRVAg
ICAgICAgID0gMTAwLAorICAgIC8qKiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3Igc2VudGVuY2Vz
IGVuZGVkIGJ5IGEgc2VwYXJhdG9yLiAgICAgICAgICAgICAgKi8KKyAgICBVQlJLX1NFTlRFTkNF
X1NFUF9MSU1JVCAgPSAyMDAKKyAgICAvKiogVGFnIHZhbHVlIGZvciBhIGhhcmQsIG9yIG1hbmRh
dG9yeSBsaW5lIGJyZWFrICAqLworfSBVU2VudGVuY2VCcmVha1RhZzsKKworCisvKioKKyAqIE9w
ZW4gYSBuZXcgVUJyZWFrSXRlcmF0b3IgZm9yIGxvY2F0aW5nIHRleHQgYm91bmRhcmllcyBmb3Ig
YSBzcGVjaWZpZWQgbG9jYWxlLgorICogQSBVQnJlYWtJdGVyYXRvciBtYXkgYmUgdXNlZCBmb3Ig
ZGV0ZWN0aW5nIGNoYXJhY3RlciwgbGluZSwgd29yZCwKKyAqIGFuZCBzZW50ZW5jZSBicmVha3Mg
aW4gdGV4dC4KKyAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIFVCcmVha0l0ZXJhdG9yIHRvIG9w
ZW46IG9uZSBvZiBVQlJLX0NIQVJBQ1RFUiwgVUJSS19XT1JELAorICogVUJSS19MSU5FLCBVQlJL
X1NFTlRFTkNFCisgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgc3BlY2lmeWluZyB0aGUgdGV4
dC1icmVha2luZyBjb252ZW50aW9ucy4KKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIGl0
ZXJhdGVkIG92ZXIuCisgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBB
IFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgorICogQHJldHVybiBBIFVCcmVha0l0
ZXJhdG9yIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAqIEBzZWUgdWJya19vcGVuUnVsZXMK
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJdGVyYXRvciogVV9FWFBP
UlQyCit1YnJrX29wZW4oVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUsCisgICAgICBjb25zdCBjaGFy
ICpsb2NhbGUsCisgICAgICBjb25zdCBVQ2hhciAqdGV4dCwKKyAgICAgIGludDMyX3QgdGV4dExl
bmd0aCwKKyAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3BlbiBhIG5ldyBV
QnJlYWtJdGVyYXRvciBmb3IgbG9jYXRpbmcgdGV4dCBib3VuZGFyaWVzIHVzaW5nIHNwZWNpZmll
ZCBicmVha2luZyBydWxlcy4KKyAqIFRoZSBydWxlIHN5bnRheCBpcyAuLi4gKFRCRCkKKyAqIEBw
YXJhbSBydWxlcyBBIHNldCBvZiBydWxlcyBzcGVjaWZ5aW5nIHRoZSB0ZXh0IGJyZWFraW5nIGNv
bnZlbnRpb25zLgorICogQHBhcmFtIHJ1bGVzTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyBpbiBydWxlcywgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHRleHQgVGhl
IHRleHQgdG8gYmUgaXRlcmF0ZWQgb3Zlci4gIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIHVi
cmtfc2V0VGV4dCgpIGlzCisgKiAgICAgICAgdXNlZCB0byBzcGVjaWZ5IHRoZSB0ZXh0IHRvIGJl
IGl0ZXJhdGVkLgorICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IGluIHRleHQsIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KKyAqIEBwYXJhbSBwYXJzZUVyciAg
IFJlY2VpdmVzIHBvc2l0aW9uIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciBhbnkgc3ludGF4
IGVycm9ycworICogICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQgd2hpbGUgcGFyc2luZyB0aGUg
cnVsZXMuCisgKiBAcGFyYW0gc3RhdHVzIEEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJv
cnMuCisgKiBAcmV0dXJuIEEgVUJyZWFrSXRlcmF0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcnVsZXMu
CisgKiBAc2VlIHVicmtfb3BlbgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIFVC
cmVha0l0ZXJhdG9yKiBVX0VYUE9SVDIKK3Vicmtfb3BlblJ1bGVzKGNvbnN0IFVDaGFyICAgICAq
cnVsZXMsCisgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgcnVsZXNMZW5ndGgsCisgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAgICAgKnRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90
ICAgICAgICAgIHRleHRMZW5ndGgsCisgICAgICAgICAgICAgICBVUGFyc2VFcnJvciAgICAgKnBh
cnNlRXJyLAorICAgICAgICAgICAgICAgVUVycm9yQ29kZSAgICAgICpzdGF0dXMpOworCisvKioK
KyAqIFRocmVhZCBzYWZlIGNsb25pbmcgb3BlcmF0aW9uCisgKiBAcGFyYW0gYmkgaXRlcmF0b3Ig
dG8gYmUgY2xvbmVkCisgKiBAcGFyYW0gc3RhY2tCdWZmZXIgPGVtPkRlcHJlY2F0ZWQgZnVuY3Rp
b25hbGl0eSBhcyBvZiBJQ1UgNTIsIHVzZSBOVUxMLjwvZW0+PGJyPgorICogIHVzZXIgYWxsb2Nh
dGVkIHNwYWNlIGZvciB0aGUgbmV3IGNsb25lLiBJZiBOVUxMIG5ldyBtZW1vcnkgd2lsbCBiZSBh
bGxvY2F0ZWQuCisgKiAgSWYgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gsIG5ldyBtZW1vcnkg
d2lsbCBiZSBhbGxvY2F0ZWQuCisgKiAgQ2xpZW50cyBjYW4gdXNlIHRoZSBVX0JSS19TQUZFQ0xP
TkVfQlVGRkVSU0laRS4KKyAqIEBwYXJhbSBwQnVmZmVyU2l6ZSA8ZW0+RGVwcmVjYXRlZCBmdW5j
dGlvbmFsaXR5IGFzIG9mIElDVSA1MiwgdXNlIE5VTEwgb3IgMS48L2VtPjxicj4KKyAqICBwb2lu
dGVyIHRvIHNpemUgb2YgYWxsb2NhdGVkIHNwYWNlLgorICogIElmICpwQnVmZmVyU2l6ZSA9PSAw
LCBhIHN1ZmZpY2llbnQgc2l6ZSBmb3IgdXNlIGluIGNsb25pbmcgd2lsbAorICogIGJlIHJldHVy
bmVkICgncHJlLWZsaWdodGluZycpCisgKiAgSWYgKnBCdWZmZXJTaXplIGlzIG5vdCBlbm91Z2gg
Zm9yIGEgc3RhY2stYmFzZWQgc2FmZSBjbG9uZSwKKyAqICBuZXcgbWVtb3J5IHdpbGwgYmUgYWxs
b2NhdGVkLgorICogQHBhcmFtIHN0YXR1cyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBvcGVyYXRp
b24gd2VudCBvbiBzbW9vdGhseSBvciB0aGVyZSB3ZXJlIGVycm9ycworICogIEFuIGluZm9ybWF0
aW9uYWwgc3RhdHVzIHZhbHVlLCBVX1NBRkVDTE9ORV9BTExPQ0FURURfRVJST1IsIGlzIHVzZWQg
aWYgYW55IGFsbG9jYXRpb25zIHdlcmUgbmVjZXNzYXJ5LgorICogQHJldHVybiBwb2ludGVyIHRv
IHRoZSBuZXcgY2xvbmUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJ
dGVyYXRvciAqIFVfRVhQT1JUMgordWJya19zYWZlQ2xvbmUoCisgICAgICAgICAgY29uc3QgVUJy
ZWFrSXRlcmF0b3IgKmJpLAorICAgICAgICAgIHZvaWQgKnN0YWNrQnVmZmVyLAorICAgICAgICAg
IGludDMyX3QgKnBCdWZmZXJTaXplLAorICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisK
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisKKy8qKgorICAqIEEgcmVjb21tZW5kZWQg
c2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUgbWVtb3J5IGJ1ZmZlciB0byBiZSBwYXNzZWQgdG8gdWJy
a19zYXZlQ2xvbmUoKS4KKyAgKiBAZGVwcmVjYXRlZCBJQ1UgNTIuIERvIG5vdCByZWx5IG9uIHVi
cmtfc2FmZUNsb25lKCkgY2xvbmluZyBpbnRvIGFueSBwcm92aWRlZCBidWZmZXIuCisgICovCisj
ZGVmaW5lIFVfQlJLX1NBRkVDTE9ORV9CVUZGRVJTSVpFIDEKKworI2VuZGlmIC8qIFVfSElERV9E
RVBSRUNBVEVEX0FQSSAqLworCisvKioKKyogQ2xvc2UgYSBVQnJlYWtJdGVyYXRvci4KKyogT25j
ZSBjbG9zZWQsIGEgVUJyZWFrSXRlcmF0b3IgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFy
YW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIGNsb3NlLgorICogQHN0YWJsZSBJQ1UgMi4wCisq
LworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VicmtfY2xvc2UoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8q
KgorICogXGNsYXNzIExvY2FsVUJyZWFrSXRlcmF0b3JQb2ludGVyCisgKiAiU21hcnQgcG9pbnRl
ciIgY2xhc3MsIGNsb3NlcyBhIFVCcmVha0l0ZXJhdG9yIHZpYSB1YnJrX2Nsb3NlKCkuCisgKiBG
b3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoK
KyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFi
bGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVQnJlYWtJ
dGVyYXRvclBvaW50ZXIsIFVCcmVha0l0ZXJhdG9yLCB1YnJrX2Nsb3NlKTsKKworVV9OQU1FU1BB
Q0VfRU5ECisKKyNlbmRpZgorCisvKioKKyAqIFNldHMgYW4gZXhpc3RpbmcgaXRlcmF0b3IgdG8g
cG9pbnQgdG8gYSBuZXcgcGllY2Ugb2YgdGV4dAorICogQHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0
byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIHNldAorICogQHBhcmFtIHRleHRM
ZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgdGV4dAorICogQHBhcmFtIHN0YXR1cyBUaGUgZXJyb3Ig
Y29kZQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1
YnJrX3NldFRleHQoVUJyZWFrSXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiAgICB0ZXh0LAorICAgICAgICAgICAgIGludDMyX3QgICAgICAgICB0ZXh0TGVuZ3RoLAorICAg
ICAgICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKy8qKgorICogU2V0cyBhbiBl
eGlzdGluZyBpdGVyYXRvciB0byBwb2ludCB0byBhIG5ldyBwaWVjZSBvZiB0ZXh0LgorICoKKyAq
IEFsbCBpbmRleCBwb3NpdGlvbnMgcmV0dXJuZWQgYnkgYnJlYWsgaXRlcmF0b3IgZnVuY3Rpb25z
IGFyZQorICogbmF0aXZlIGluZGljZXMgZnJvbSB0aGUgVVRleHQuIEZvciBleGFtcGxlLCB3aGVu
IGJyZWFraW5nIFVURi04CisgKiBlbmNvZGVkIHRleHQsIHRoZSBicmVhayBwb3NpdGlvbnMgcmV0
dXJuZWQgYnkgXHJlZiB1YnJrX25leHQsIFxyZWYgdWJya19wcmV2aW91cywgZXRjLgorICogd2ls
bCBiZSBVVEYtOCBzdHJpbmcgaW5kaWNlcywgbm90IFVURi0xNiBwb3NpdGlvbnMuCisgKgorICog
QHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRv
IGJlIHNldC4KKyAqICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gbWFrZXMgYSBzaGFsbG93IGNs
b25lIG9mIHRoZSBzdXBwbGllZCBVVGV4dC4gIFRoaXMgbWVhbnMKKyAqICAgICAgICAgICAgIHRo
YXQgdGhlIGNhbGxlciBpcyBmcmVlIHRvIGltbWVkaWF0ZWx5IGNsb3NlIG9yIG90aGVyd2lzZSBy
ZXVzZSB0aGUKKyAqICAgICAgICAgICAgIFVUZXh0IHRoYXQgd2FzIHBhc3NlZCBhcyBhIHBhcmFt
ZXRlciwgYnV0IHRoYXQgdGhlIHVuZGVybHlpbmcgdGV4dCBpdHNlbGYKKyAqICAgICAgICAgICAg
IG11c3Qgbm90IGJlIGFsdGVyZWQgd2hpbGUgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGUgYnJlYWsg
aXRlcmF0b3IuCisgKiBAcGFyYW0gc3RhdHVzIFRoZSBlcnJvciBjb2RlCisgKiBAc3RhYmxlIElD
VSAzLjQKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3Vicmtfc2V0VVRleHQoVUJyZWFr
SXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIFVUZXh0KiAgICAgICAgICB0ZXh0LAorICAgICAg
ICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKworLyoqCisgKiBEZXRlcm1pbmUg
dGhlIG1vc3QgcmVjZW50bHktcmV0dXJuZWQgdGV4dCBib3VuZGFyeS4KKyAqCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBp
bmRleCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IFxyZWYgdWJya19uZXh0LCBccmVmIHVicmtf
cHJldmlvdXMsCisgKiBccmVmIHVicmtfZmlyc3QsIG9yIFxyZWYgdWJya19sYXN0LgorICogQHN0
YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2N1cnJl
bnQoY29uc3QgVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVy
YXRvciB0byB0aGUgYm91bmRhcnkgZm9sbG93aW5nIHRoZSBjdXJyZW50IGJvdW5kYXJ5LgorICoK
KyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUg
Y2hhcmFjdGVyIGluZGV4IG9mIHRoZSBuZXh0IHRleHQgYm91bmRhcnksIG9yIFVCUktfRE9ORQor
ICogaWYgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4gcmV0dXJuZWQuCisgKiBAc2VlIHVi
cmtfcHJldmlvdXMKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVf
RVhQT1JUMgordWJya19uZXh0KFVCcmVha0l0ZXJhdG9yICpiaSk7CisKKy8qKgorICogU2V0IHRo
ZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgYm91bmRhcnkgcHJlY2VkaW5nIHRoZSBjdXJyZW50
IGJvdW5kYXJ5LgorICoKKyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgor
ICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBwcmVjZWRpbmcgdGV4dCBib3Vu
ZGFyeSwgb3IgVUJSS19ET05FCisgKiBpZiBhbGwgdGV4dCBib3VuZGFyaWVzIGhhdmUgYmVlbiBy
ZXR1cm5lZC4KKyAqIEBzZWUgdWJya19uZXh0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9T
VEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VicmtfcHJldmlvdXMoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisgKiBUaGlzIGlz
IG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgaW5kZXggMCBvZiB0aGUgdGV4dC4KKyAqIEBwYXJhbSBi
aSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGlu
ZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAq
IEBzZWUgdWJya19sYXN0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3VicmtfZmlyc3QoVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBT
ZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBpbW1lZGlhdGVseSA8RU0+YmV5
b25kPC9FTT4gdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisg
KiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIuCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBv
ZmZzZXQgaW1tZWRpYXRlbHkgPEVNPmJleW9uZDwvRU0+IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0
aGUKKyAqIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAqIEBzZWUgdWJya19maXJzdAorICogQHN0YWJs
ZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2xhc3QoVUJy
ZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRv
IHRoZSBmaXJzdCBib3VuZGFyeSBwcmVjZWRpbmcgdGhlIHNwZWNpZmllZCBvZmZzZXQuCisgKiBU
aGUgbmV3IHBvc2l0aW9uIGlzIGFsd2F5cyBzbWFsbGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RP
TkUuCisgKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBv
ZmZzZXQgVGhlIG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQg
Ym91bmRhcnkgcHJlY2VkaW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX2Zv
bGxvd2luZworICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX3ByZWNlZGluZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMy
X3Qgb2Zmc2V0KTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byB0aGUgZmlyc3Qg
Ym91bmRhcnkgZm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgorICogVGhlIHZhbHVlIHJl
dHVybmVkIGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuCisgKiBA
cGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBvZmZzZXQgVGhl
IG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQgYm91bmRhcnkg
Zm9sbG93aW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX3ByZWNlZGluZwor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJr
X2ZvbGxvd2luZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0
KTsKKworLyoqCisqIEdldCBhIGxvY2FsZSBmb3Igd2hpY2ggdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBpcyBhdmFpbGFibGUuCisqIEEgVUJyZWFrSXRlcmF0b3IgaW4gYSBsb2NhbGUgcmV0dXJu
ZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhlIGNvcnJlY3QKKyogdGV4dCBicmVh
a2luZyBmb3IgdGhlIGxvY2FsZS4KKyogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZGVz
aXJlZCBsb2NhbGUuCisqIEByZXR1cm4gQSBsb2NhbGUgZm9yIHdoaWNoIG51bWJlciB0ZXh0IGJy
ZWFraW5nIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVi
cmtfY291bnRBdmFpbGFibGUKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3Qg
Y2hhciogVV9FWFBPUlQyCit1YnJrX2dldEF2YWlsYWJsZShpbnQzMl90IGluZGV4KTsKKworLyoq
CisqIERldGVybWluZSBob3cgbWFueSBsb2NhbGVzIGhhdmUgdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBhdmFpbGFibGUuCisqIFRoaXMgZnVuY3Rpb24gaXMgbW9zdCB1c2VmdWwgYXMgZGV0ZXJt
aW5pbmcgdGhlIGxvb3AgZW5kaW5nIGNvbmRpdGlvbiBmb3IKKyogY2FsbHMgdG8gXHJlZiB1YnJr
X2dldEF2YWlsYWJsZS4KKyogQHJldHVybiBUaGUgbnVtYmVyIG9mIGxvY2FsZXMgZm9yIHdoaWNo
IHRleHQgYnJlYWtpbmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgorKiBAc2VlIHVicmtfZ2V0
QXZhaWxhYmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX2NvdW50QXZhaWxhYmxlKHZvaWQpOworCisKKy8qKgorKiBSZXR1cm5zIHRydWUg
aWYgdGhlIHNwZWNmaWVkIHBvc2l0aW9uIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uICBBcyBhIHNp
ZGUKKyogZWZmZWN0LCBsZWF2ZXMgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBi
b3VuZGFyeSBwb3NpdGlvbiBhdAorKiBvciBhZnRlciAib2Zmc2V0Ii4KKyogQHBhcmFtIGJpIFRo
ZSBicmVhayBpdGVyYXRvciB0byB1c2UuCisqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCB0byBj
aGVjay4KKyogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24u
CisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFICBVQm9vbCBVX0VYUE9SVDIKK3Vicmtf
aXNCb3VuZGFyeShVQnJlYWtJdGVyYXRvciAqYmksIGludDMyX3Qgb2Zmc2V0KTsKKworLyoqCisg
KiBSZXR1cm4gdGhlIHN0YXR1cyBmcm9tIHRoZSBicmVhayBydWxlIHRoYXQgZGV0ZXJtaW5lZCB0
aGUgbW9zdCByZWNlbnRseQorICogcmV0dXJuZWQgYnJlYWsgcG9zaXRpb24uICBUaGUgdmFsdWVz
IGFwcGVhciBpbiB0aGUgcnVsZSBzb3VyY2UKKyAqIHdpdGhpbiBicmFja2V0cywgezEyM30sIGZv
ciBleGFtcGxlLiAgRm9yIHJ1bGVzIHRoYXQgZG8gbm90IHNwZWNpZnkgYQorICogc3RhdHVzLCBh
IGRlZmF1bHQgdmFsdWUgb2YgMCBpcyByZXR1cm5lZC4KKyAqIDxwPgorICogRm9yIHdvcmQgYnJl
YWsgaXRlcmF0b3JzLCB0aGUgcG9zc2libGUgdmFsdWVzIGFyZSBkZWZpbmVkIGluIGVudW0gVVdv
cmRCcmVhay4KKyAqIEBzdGFibGUgSUNVIDIuMgorICovCitVX1NUQUJMRSAgaW50MzJfdCBVX0VY
UE9SVDIKK3VicmtfZ2V0UnVsZVN0YXR1cyhVQnJlYWtJdGVyYXRvciAqYmkpOworCisvKioKKyAq
IEdldCB0aGUgc3RhdHVzZXMgZnJvbSB0aGUgYnJlYWsgcnVsZXMgdGhhdCBkZXRlcm1pbmVkIHRo
ZSBtb3N0IHJlY2VudGx5CisgKiByZXR1cm5lZCBicmVhayBwb3NpdGlvbi4gIFRoZSB2YWx1ZXMg
YXBwZWFyIGluIHRoZSBydWxlIHNvdXJjZQorICogd2l0aGluIGJyYWNrZXRzLCB7MTIzfSwgZm9y
IGV4YW1wbGUuICBUaGUgZGVmYXVsdCBzdGF0dXMgdmFsdWUgZm9yIHJ1bGVzCisgKiB0aGF0IGRv
IG5vdCBleHBsaWNpdGx5IHByb3ZpZGUgb25lIGlzIHplcm8uCisgKiA8cD4KKyAqIEZvciB3b3Jk
IGJyZWFrIGl0ZXJhdG9ycywgdGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiBlbnVt
IFVXb3JkQnJlYWsuCisgKiBAcGFyYW0gYmkgICAgICAgIFRoZSBicmVhayBpdGVyYXRvciB0byB1
c2UKKyAqIEBwYXJhbSBmaWxsSW5WZWMgYW4gYXJyYXkgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhl
IHN0YXR1cyB2YWx1ZXMuCisgKiBAcGFyYW0gY2FwYWNpdHkgIHRoZSBsZW5ndGggb2YgdGhlIHN1
cHBsaWVkIHZlY3Rvci4gIEEgbGVuZ3RoIG9mIHplcm8gY2F1c2VzCisgKiAgICAgICAgICAgICAg
ICAgIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0dXMgdmFsdWVzLCBp
biB0aGUKKyAqICAgICAgICAgICAgICAgICAgbm9ybWFsIHdheSwgd2l0aG91dCBhdHRlbXRwaW5n
IHRvIHN0b3JlIGFueSB2YWx1ZXMuCisgKiBAcGFyYW0gc3RhdHVzICAgIHJlY2VpdmVzIGVycm9y
IGNvZGVzLgorICogQHJldHVybiAgICAgICAgICBUaGUgbnVtYmVyIG9mIHJ1bGUgc3RhdHVzIHZh
bHVlcyBmcm9tIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lZAorICogICAgICAgICAgICAgICAgICB0aGUg
bW9zdCByZWNlbnQgYm91bmRhcnkgcmV0dXJuZWQgYnkgdGhlIGJyZWFrIGl0ZXJhdG9yLgorICog
QHN0YWJsZSBJQ1UgMy4wCisgKi8KK1VfU1RBQkxFICBpbnQzMl90IFVfRVhQT1JUMgordWJya19n
ZXRSdWxlU3RhdHVzVmVjKFVCcmVha0l0ZXJhdG9yICpiaSwgaW50MzJfdCAqZmlsbEluVmVjLCBp
bnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIFJldHVybiB0
aGUgbG9jYWxlIG9mIHRoZSBicmVhayBpdGVyYXRvci4gWW91IGNhbiBjaG9vc2UgYmV0d2VlbiB0
aGUgdmFsaWQgYW5kCisgKiB0aGUgYWN0dWFsIGxvY2FsZS4KKyAqIEBwYXJhbSBiaSBicmVhayBp
dGVyYXRvcgorICogQHBhcmFtIHR5cGUgbG9jYWxlIHR5cGUgKHZhbGlkIG9yIGFjdHVhbCkKKyAq
IEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZQorICogQHJldHVybiBsb2NhbGUgc3RyaW5nCisgKiBA
c3RhYmxlIElDVSAyLjgKKyAqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1YnJr
X2dldExvY2FsZUJ5VHlwZShjb25zdCBVQnJlYWtJdGVyYXRvciAqYmksIFVMb2NEYXRhTG9jYWxl
VHlwZSB0eXBlLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisvKioKKyAgKiAgU2V0IHRoZSBzdWJq
ZWN0IHRleHQgc3RyaW5nIHVwb24gd2hpY2ggdGhlIGJyZWFrIGl0ZXJhdG9yIGlzIG9wZXJhdGlu
ZworICAqICB3aXRob3V0IGNoYW5naW5nIGFueSBvdGhlciBhc3BlY3Qgb2YgdGhlIHN0YXRlLgor
ICAqICBUaGUgbmV3IGFuZCBwcmV2aW91cyB0ZXh0IHN0cmluZ3MgbXVzdCBoYXZlIHRoZSBzYW1l
IGNvbnRlbnQuCisgICoKKyAgKiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGlu
IGVudmlyb25tZW50cyB3aGVyZSBJQ1UgaXMgb3BlcmF0aW5nIG9uCisgICogIHN0cmluZ3MgdGhh
dCBtYXkgbW92ZSBhcm91bmQgaW4gbWVtb3J5LiAgSXQgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9y
IG5vdGlmeWluZworICAqICBJQ1UgdGhhdCB0aGUgc3RyaW5nIGhhcyBiZWVuIHJlbG9jYXRlZCwg
YW5kIHByb3ZpZGluZyBhIG5ldyBVVGV4dCB0byBhY2Nlc3MgdGhlCisgICogIHN0cmluZyBpbiBp
dHMgbmV3IHBvc2l0aW9uLgorICAqCisgICogIE5vdGUgdGhhdCB0aGUgYnJlYWsgaXRlcmF0b3Ig
bmV2ZXIgY29waWVzIHRoZSB1bmRlcmx5aW5nIHRleHQKKyAgKiAgb2YgYSBzdHJpbmcgYmVpbmcg
cHJvY2Vzc2VkLCBidXQgYWx3YXlzIG9wZXJhdGVzIGRpcmVjdGx5IG9uIHRoZSBvcmlnaW5hbCB0
ZXh0CisgICogIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLiBSZWZyZXNoaW5nIHNpbXBseSBkcm9wcyB0
aGUgcmVmZXJlbmNlcyB0byB0aGUgb2xkIHRleHQKKyAgKiAgYW5kIHJlcGxhY2VzIHRoZW0gd2l0
aCByZWZlcmVuY2VzIHRvIHRoZSBuZXcuCisgICoKKyAgKiAgQ2F1dGlvbjogIHRoaXMgZnVuY3Rp
b24gaXMgbm9ybWFsbHkgdXNlZCBvbmx5IGJ5IHZlcnkgc3BlY2lhbGl6ZWQKKyAgKiAgICAgICAg
ICAgIHN5c3RlbS1sZXZlbCBjb2RlLiAgIE9uZSBleGFtcGxlIHVzZSBjYXNlIGlzIHdpdGggZ2Fy
YmFnZSBjb2xsZWN0aW9uCisgICogICAgICAgICAgICB0aGF0IG1vdmVzIHRoZSB0ZXh0IGluIG1l
bW9yeS4KKyAgKgorICAqIEBwYXJhbSBiaSAgICAgICAgIFRoZSBicmVhayBpdGVyYXRvci4KKyAg
KiBAcGFyYW0gdGV4dCAgICAgICBUaGUgbmV3IChtb3ZlZCkgdGV4dCBzdHJpbmcuCisgICogQHBh
cmFtIHN0YXR1cyAgICAgUmVjZWl2ZXMgZXJyb3JzIGRldGVjdGVkIGJ5IHRoaXMgZnVuY3Rpb24u
CisgICoKKyAgKiBAc3RhYmxlIElDVSA0OQorICAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIK
K3VicmtfcmVmcmVzaFVUZXh0KFVCcmVha0l0ZXJhdG9yICpiaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVVRleHQgICAgICAgICAgKnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgICAgICpzdGF0dXMpOworCisjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0JSRUFLX0lU
RVJBVElPTiAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dXRleHQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRleHQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDMx
OTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIyMjE1ZTY0ZmYzMzllCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5oCkBAIC0wLDAgKzEsMTYwMCBAQAorLyoKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMiwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMu
ICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIGZp
bGUgbmFtZTogIHV0ZXh0LmgKKyogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIHRhYiBzaXpl
OiAgIDggKG5vdCB1c2VkKQorKiAgIGluZGVudGF0aW9uOjQKKyoKKyogICBjcmVhdGVkIG9uOiAy
MDA0b2N0MDYKKyogICBjcmVhdGVkIGJ5OiBNYXJrdXMgVy4gU2NoZXJlcgorKi8KKworI2lmbmRl
ZiBfX1VURVhUX0hfXworI2RlZmluZSBfX1VURVhUX0hfXworCisvKioKKyAqIFxmaWxlCisgKiBc
YnJpZWYgQyBBUEk6IEFic3RyYWN0IFVuaWNvZGUgVGV4dCBBUEkKKyAqCisgKiBUaGUgVGV4dCBB
Y2Nlc3MgQVBJIHByb3ZpZGVzIGEgbWVhbnMgdG8gYWxsb3cgdGV4dCB0aGF0IGlzIHN0b3JlZCBp
biBhbHRlcm5hdGl2ZQorICogZm9ybWF0cyB0byB3b3JrIHdpdGggSUNVIHNlcnZpY2VzLiAgSUNV
IG5vcm1hbGx5IG9wZXJhdGVzIG9uIHRleHQgdGhhdCBpcworICogc3RvcmVkIGluIFVURi0xNiBm
b3JtYXQsIGluIChVQ2hhciAqKSBhcnJheXMgZm9yIHRoZSBDIEFQSXMgb3IgYXMgdHlwZQorICog
VW5pY29kZVN0cmluZyBmb3IgQysrIEFQSXMuCisgKgorICogSUNVIFRleHQgQWNjZXNzIGFsbG93
cyBvdGhlciBmb3JtYXRzLCBzdWNoIGFzIFVURi04IG9yIG5vbi1jb250aWd1b3VzCisgKiBVVEYt
MTYgc3RyaW5ncywgdG8gYmUgcGxhY2VkIGluIGEgVVRleHQgd3JhcHBlciBhbmQgdGhlbiBwYXNz
ZWQgdG8gSUNVIHNlcnZpY2VzLgorICoKKyAqIFRoZXJlIGFyZSB0aHJlZSBnZW5lcmFsIGNsYXNz
ZXMgb2YgdXNhZ2UgZm9yIFVUZXh0OgorICoKKyAqICAgICBBcHBsaWNhdGlvbiBMZXZlbCBVc2Uu
ICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB1c2FnZSAtIGFwcGxpY2F0aW9ucyB3b3VsZAorICogICAg
IHVzZSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMgb24gdGhlaXIgaW5wdXQgdGV4
dCwgYW5kIHBhc3MKKyAqICAgICB0aGUgcmVzdWx0aW5nIFVUZXh0IHRvIHRoZSBkZXNpcmVkIElD
VSBzZXJ2aWNlLgorICoKKyAqICAgICBTZWNvbmQgaXMgdXNhZ2UgaW4gSUNVIFNlcnZpY2VzLCBz
dWNoIGFzIGJyZWFrIGl0ZXJhdGlvbiwgdGhhdCB3aWxsIG5lZWQgdG8KKyAqICAgICBvcGVyYXRl
IG9uIGlucHV0IHByZXNlbnRlZCB0byB0aGVtIGFzIGEgVVRleHQuICBUaGVzZSBpbXBsZW1lbnRh
dGlvbnMKKyAqICAgICB3aWxsIG5lZWQgdG8gdXNlIHRoZSBpdGVyYXRpb24gYW5kIHJlbGF0ZWQg
VVRleHQgZnVuY3Rpb25zIHRvIGdhaW4KKyAqICAgICBhY2Nlc3MgdG8gdGhlIGFjdHVhbCB0ZXh0
LgorICoKKyAqICAgICBUaGUgdGhpcmQgY2xhc3Mgb2YgVVRleHQgdXNlcnMgYXJlICJ0ZXh0IHBy
b3ZpZGVycy4iICBUaGVzZSBhcmUgdGhlCisgKiAgICAgVVRleHQgaW1wbGVtZW50YXRpb25zIGZv
ciB0aGUgdmFyaW91cyB0ZXh0IHN0b3JhZ2UgZm9ybWF0cy4gIEFuIGFwcGxpY2F0aW9uCisgKiAg
ICAgb3Igc3lzdGVtIHdpdGggYSB1bmlxdWUgdGV4dCBzdG9yYWdlIGZvcm1hdCBjYW4gaW1wbGVt
ZW50IGEgc2V0IG9mCisgKiAgICAgVVRleHQgcHJvdmlkZXIgZnVuY3Rpb25zIGZvciB0aGF0IGZv
cm1hdCwgd2hpY2ggd2lsbCB0aGVuIGFsbG93CisgKiAgICAgSUNVIHNlcnZpY2VzIHRvIG9wZXJh
dGUgb24gdGhhdCBmb3JtYXQuCisgKgorICoKKyAqIDxlbT5JdGVyYXRpbmcgb3ZlciB0ZXh0PC9l
bT4KKyAqCisgKiBIZXJlIGlzIHNhbXBsZSBjb2RlIGZvciBhIGZvcndhcmQgaXRlcmF0aW9uIG92
ZXIgdGhlIGNvbnRlbnRzIG9mIGEgVVRleHQKKyAqCisgKiBcY29kZQorICogICAgVUNoYXIzMiAg
YzsKKyAqICAgIFVUZXh0ICAgICp1dCA9IHdoYXRldmVyKCk7CisgKgorICogICAgZm9yIChjPXV0
ZXh0X25leHQzMkZyb20odXQsIDApOyBjPj0wOyBjPXV0ZXh0X25leHQzMih1dCkpIHsKKyAqICAg
ICAgIC8vIGRvIHdoYXRldmVyIHdpdGggdGhlIGNvZGVwb2ludCBjIGhlcmUuCisgKiAgICB9Cisg
KiBcZW5kY29kZQorICoKKyAqIEFuZCBoZXJlIGlzIHNpbWlsYXIgY29kZSB0byBpdGVyYXRlIGlu
IHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgZnJvbSB0aGUgZW5kCisgKiBvZiB0aGUgdGV4dCB0b3dh
cmRzIHRoZSBiZWdpbm5pbmcuCisgKgorICogXGNvZGUKKyAqICAgIFVDaGFyMzIgIGM7CisgKiAg
ICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZlcigpOworICogICAgaW50ICAgICAgdGV4dExlbmd0aCA9
IHV0ZXh0X25hdGl2ZUxlbmd0aCh1dCk7CisgKiAgICBmb3IgKGM9dXRleHRfcHJldmlvdXMzMkZy
b20odXQsIHRleHRMZW5ndGgpOyBjPj0wOyBjPXV0ZXh0X3ByZXZpb3VzMzIodXQpKSB7CisgKiAg
ICAgICAvLyBkbyB3aGF0ZXZlciB3aXRoIHRoZSBjb2RlcG9pbnQgYyBoZXJlLgorICogICAgfQor
ICogXGVuZGNvZGUKKyAqCisgKiA8ZW0+Q2hhcmFjdGVycyBhbmQgSW5kZXhpbmc8L2VtPgorICoK
KyAqIEluZGV4aW5nIGludG8gdGV4dCBieSBVVGV4dCBmdW5jdGlvbnMgaXMgbmVhcmx5IGFsd2F5
cyBpbiB0ZXJtcyBvZiB0aGUgbmF0aXZlCisgKiBpbmRleGluZyBvZiB0aGUgdW5kZXJseWluZyB0
ZXh0IHN0b3JhZ2UuICBUaGUgc3RvcmFnZSBmb3JtYXQgY291bGQgYmUgVVRGLTgKKyAqIG9yIFVU
Ri0zMiwgZm9yIGV4YW1wbGUuICBXaGVuIGNvZGluZyB0byB0aGUgVVRleHQgYWNjZXNzIEFQSSwg
bm8gYXNzdW1wdGlvbnMKKyAqIGNhbiBiZSBtYWRlIHJlZ2FyZGluZyB0aGUgc2l6ZSBvZiBjaGFy
YWN0ZXJzLCBvciBob3cgZmFyIGFuIGluZGV4CisgKiBtYXkgbW92ZSB3aGVuIGl0ZXJhdGluZyBi
ZXR3ZWVuIGNoYXJhY3RlcnMuCisgKgorICogQWxsIGluZGljZXMgc3VwcGxpZWQgdG8gVVRleHQg
ZnVuY3Rpb25zIGFyZSBwaW5uZWQgdG8gdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHRleHQuICBBbiBv
dXQtb2YtYm91bmRzIGluZGV4IGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGFuIGVycm9yLCBidXQg
aXMKKyAqIGFkanVzdGVkIHRvIGJlIGluIHRoZSByYW5nZSAgMCA8PSBpbmRleCA8PSBsZW5ndGgg
b2YgaW5wdXQgdGV4dC4KKyAqCisgKgorICogV2hlbiBhbiBpbmRleCBwb3NpdGlvbiBpcyByZXR1
cm5lZCBmcm9tIGEgVVRleHQgZnVuY3Rpb24sIGl0IHdpbGwgYmUKKyAqIGEgbmF0aXZlIGluZGV4
IHRvIHRoZSB1bmRlcmx5aW5nIHRleHQuICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11bml0IGNoYXJh
Y3RlcnMsCisgKiBpdCB3aWxsICBhbHdheXMgcmVmZXIgdG8gdGhlIGZpcnN0IHBvc2l0aW9uIG9m
IHRoZSBjaGFyYWN0ZXIsCisgKiBuZXZlciB0byB0aGUgaW50ZXJpb3IuICBUaGlzIGlzIGVzc2Vu
dGlhbGx5IHRoZSBzYW1lIHRoaW5nIGFzIHNheWluZyB0aGF0CisgKiBhIHJldHVybmVkIGluZGV4
IHdpbGwgYWx3YXlzIHBvaW50IHRvIGEgYm91bmRhcnkgYmV0d2VlbiBjaGFyYWN0ZXJzLgorICoK
KyAqIFdoZW4gYSBuYXRpdmUgaW5kZXggaXMgc3VwcGxpZWQgdG8gYSBVVGV4dCBmdW5jdGlvbiwg
YWxsIGluZGljZXMgdGhhdAorICogcmVmZXIgdG8gYW55IHBhcnQgb2YgYSBtdWx0aS11bml0IGNo
YXJhY3RlciByZXByZXNlbnRhdGlvbiBhcmUgY29uc2lkZXJlZAorICogdG8gYmUgZXF1aXZhbGVu
dC4gIEluIHRoZSBjYXNlIG9mIG11bHRpLXVuaXQgY2hhcmFjdGVycywgYW4gaW5jb21pbmcgaW5k
ZXgKKyAqIHdpbGwgYmUgbG9naWNhbGx5IG5vcm1hbGl6ZWQgdG8gcmVmZXIgdG8gdGhlIHN0YXJ0
IG9mIHRoZSBjaGFyYWN0ZXIuCisgKiAKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHRlc3Qgd2hldGhl
ciBhIG5hdGl2ZSBpbmRleCBpcyBvbiBhIGNvZGUgcG9pbnQgYm91bmRhcnkKKyAqIGJ5IGRvaW5n
IGEgdXRleHRfc2V0TmF0aXZlSW5kZXgoKSBmb2xsb3dlZCBieSBhIHV0ZXh0X2dldE5hdGl2ZUlu
ZGV4KCkuCisgKiBJZiB0aGUgaW5kZXggaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLCBpdCB3YXMgb24g
YSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAgSWYKKyAqIGFuIGFkanVzdGVkIGluZGV4IGlzIHJldHVy
bmVkLCB0aGUgb3JpZ2luYWwgaW5kZXggcmVmZXJyZWQgdG8gdGhlCisgKiBpbnRlcmlvciBvZiBh
IGNoYXJhY3Rlci4KKyAqCisgKiA8ZW0+Q29udmVudGlvbnMgZm9yIGNhbGxpbmcgVVRleHQgZnVu
Y3Rpb25zPC9lbT4KKyAqCisgKiBNb3N0IFVUZXh0IGFjY2VzcyBmdW5jdGlvbnMgaGF2ZSBhcyB0
aGVpciBmaXJzdCBwYXJhbWV0ZXIgYSAoVVRleHQgKikgcG9pbnRlciwKKyAqIHdoaWNoIHNwZWNp
ZmllcyB0aGUgVVRleHQgdG8gYmUgdXNlZC4gIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZQor
ICogcG9pbnRlciBtdXN0IHJlZmVyIHRvIGEgdmFsaWQsIG9wZW4gVVRleHQuICBBdHRlbXB0aW5n
IHRvCisgKiB1c2UgYSBjbG9zZWQgVVRleHQgb3IgcGFzc2luZyBhIE5VTEwgcG9pbnRlciBpcyBh
IHByb2dyYW1taW5nIGVycm9yIGFuZAorICogd2lsbCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRz
IG9yIE5VTEwgcG9pbnRlciBleGNlcHRpb25zLgorICogCisgKiBUaGUgVVRleHRfT3BlbiBmYW1p
bHkgb2YgZnVuY3Rpb25zIGNhbiBlaXRoZXIgb3BlbiBhbiBleGlzdGluZyAoY2xvc2VkKQorICog
VVRleHQsIG9yIGhlYXAgYWxsb2NhdGUgYSBuZXcgVVRleHQuICBIZXJlIGlzIHNhbXBsZSBjb2Rl
IGZvciBjcmVhdGluZworICogYSBzdGFjay1hbGxvY2F0ZWQgVVRleHQuCisgKgorICogXGNvZGUK
KyAqICAgIGNoYXIgICAgICpzID0gd2hhdGV2ZXIoKTsgIC8vIEEgdXRmLTggc3RyaW5nIAorICog
ICAgVV9FcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogICAgVVRleHQgICAgdXQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAqICAgIHV0ZXh0X29wZW5VVEY4KHV0LCBzLCAtMSwgJnN0
YXR1cyk7CisgKiAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAqICAgICAgICAvLyBlcnJv
ciBoYW5kbGluZworICogICAgfSBlbHNlIHsKKyAqICAgICAgICAvLyB3b3JrIHdpdGggdGhlIFVU
ZXh0CisgKiAgICB9CisgKiBcZW5kY29kZQorICoKKyAqIEFueSBleGlzdGluZyBVVGV4dCBwYXNz
ZWQgdG8gYW4gb3BlbiBmdW5jdGlvbiBfbXVzdF8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLCAKKyAq
IGVpdGhlciBieSB0aGUgVVRFWFRfSU5JVElBTElaRVIsIG9yIGJ5IGhhdmluZyBiZWVuIG9yaWdp
bmFsbHkgaGVhcC1hbGxvY2F0ZWQKKyAqIGJ5IGFuIG9wZW4gZnVuY3Rpb24uICBQYXNzaW5nIE5V
TEwgd2lsbCBjYXVzZSB0aGUgb3BlbiBmdW5jdGlvbiB0bworICogaGVhcC1hbGxvY2F0ZSBhbmQg
ZnVsbHkgaW5pdGlhbGl6ZSBhIG5ldyBVVGV4dC4KKyAqCisgKi8KKworCisKKyNpbmNsdWRlICJ1
bmljb2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWNoYXIuaCIKKyNpZiBVX1NIT1df
Q1BMVVNQTFVTX0FQSQorI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCisjaW5jbHVk
ZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUg
InVuaWNvZGUvY2hhcml0ZXIuaCIKKyNlbmRpZgorCisKK1VfQ0RFQ0xfQkVHSU4KKworc3RydWN0
IFVUZXh0OwordHlwZWRlZiBzdHJ1Y3QgVVRleHQgVVRleHQ7IC8qKjwgQyB0eXBlZGVmIGZvciBz
dHJ1Y3QgVVRleHQuIEBzdGFibGUgSUNVIDMuNiAqLworCisKKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAqCisgKiAgIEMgRnVuY3Rpb25zIGZvciBjcmVhdGluZyBVVGV4dCB3cmFw
cGVycyBhcm91bmQgdmFyaW91cyBraW5kcyBvZiB0ZXh0IHN0cmluZ3MuCisgKgorICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgICogQ2xvc2UgZnVuY3Rpb24gZm9y
IFVUZXh0IGluc3RhbmNlcy4KKyAgKiBDbGVhbnMgdXAsIHJlbGVhc2VzIGFueSByZXNvdXJjZXMg
YmVpbmcgaGVsZCBieSBhbiBvcGVuIFVUZXh0LgorICAqIDxwPgorICAqICAgSWYgdGhlIFVUZXh0
IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZCBieSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4gZnVuY3Rp
b25zLAorICAqICAgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSB1dGV4dCB3aWxsIGFs
c28gYmUgZnJlZWQuCisgICogICBJZiB0aGUgVVRleHQgc3RvcmFnZSBvcmlnaW5hdGVkIHdpdGgg
dGhlIGFwcGxpY2F0aW9uLCBhcyBpdCB3b3VsZCB3aXRoCisgICogICBhIGxvY2FsIG9yIHN0YXRp
YyBpbnN0YW5jZSwgdGhlIHN0b3JhZ2Ugd2lsbCBub3QgYmUgZGVsZXRlZC4KKyAgKgorICAqICAg
QW4gb3BlbiBVVGV4dCBjYW4gYmUgcmVzZXQgdG8gcmVmZXIgdG8gbmV3IHN0cmluZyBieSB1c2lu
ZyBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKQorICAqICAgZnVuY3Rpb25zIHdpdGhvdXQgZmlyc3Qg
Y2xvc2luZyB0aGUgVVRleHQuICAKKyAgKgorICAqIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJl
IGNsb3NlZC4KKyAgKiBAcmV0dXJuICAgIE5VTEwgaWYgdGhlIFVUZXh0IHN0cnVjdCB3YXMgZGVs
ZXRlZCBieSB0aGUgY2xvc2UuICBJZiB0aGUgVVRleHQgc3RydWN0CisgICogICAgICAgICAgICB3
YXMgb3JpZ2luYWxseSBwcm92aWRlZCBieSB0aGUgY2FsbGVyIHRvIHRoZSBvcGVuIGZ1bmN0aW9u
LCBpdCBpcworICAqICAgICAgICAgICAgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIG1h
eSBiZSBzYWZlbHkgdXNlZCBhZ2FpbiBpbgorICAqICAgICAgICAgICAgYSBzdWJzZXF1ZW50IHV0
ZXh0X29wZW4uCisgICoKKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RBQkxFIFVUZXh0
ICogVV9FWFBPUlQyCit1dGV4dF9jbG9zZShVVGV4dCAqdXQpOworCisjaWYgVV9TSE9XX0NQTFVT
UExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xhc3MgTG9jYWxVVGV4
dFBvaW50ZXIKKyAqICJTbWFydCBwb2ludGVyIiBjbGFzcywgY2xvc2VzIGEgVVRleHQgdmlhIHV0
ZXh0X2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFz
ZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2Nh
bFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BP
SU5URVIoTG9jYWxVVGV4dFBvaW50ZXIsIFVUZXh0LCB1dGV4dF9jbG9zZSk7CisKK1VfTkFNRVNQ
QUNFX0VORAorCisjZW5kaWYKKworLyoqCisgKiBPcGVuIGEgcmVhZC1vbmx5IFVUZXh0IGltcGxl
bWVudGF0aW9uIGZvciBVVEYtOCBzdHJpbmdzLgorICogCisgKiBcaHRtbG9ubHkKKyAqIEFueSBp
bnZhbGlkIFVURi04IGluIHRoZSBpbnB1dCB3aWxsIGJlIGhhbmRsZWQgaW4gdGhpcyB3YXk6Cisg
KiBhIHNlcXVlbmNlIG9mIGJ5dGVzIHRoYXQgaGFzIHRoZSBmb3JtIG9mIGEgdHJ1bmNhdGVkLCBi
dXQgb3RoZXJ3aXNlIHZhbGlkLAorICogVVRGLTggc2VxdWVuY2Ugd2lsbCBiZSByZXBsYWNlZCBi
eSBhIHNpbmdsZSB1bmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlciwgXHVGRkZELiAKKyAqIEFu
eSBvdGhlciBpbGxlZ2FsIGJ5dGVzIHdpbGwgZWFjaCBiZSByZXBsYWNlZCBieSBhIFx1RkZGRC4K
KyAqIFxlbmRodG1sb25seQorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4
dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAg
ICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0
IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJl
ZmVyZW5jZSB0aGUgc3BlY2lmaWVkIFVURi04IHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBV
VEYtOCBzdHJpbmcuICBNdXN0IG5vdCBiZSBOVUxMLgorICogQHBhcmFtIGxlbmd0aCBUaGUgbGVu
Z3RoIG9mIHRoZSBVVEYtOCBzdHJpbmcgaW4gYnl0ZXMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMK
KyAqICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBFcnJv
cnMgYXJlIHJldHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgIEEgcG9pbnRlciB0byB0aGUg
VVRleHQuICBJZiBhIHByZS1hbGxvY2F0ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBpdAorICogICAg
ICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAqIEBzdGFibGUg
SUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlblVURjgo
VVRleHQgKnV0LCBjb25zdCBjaGFyICpzLCBpbnQ2NF90IGxlbmd0aCwgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKKworCisvKioKKyAqIE9wZW4gYSByZWFkLW9ubHkgVVRleHQgZm9yIFVDaGFyICogc3Ry
aW5nLgorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJ
ZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElm
IG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hp
Y2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUg
c3BlY2lmaWVkIFVDaGFyIHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBVQ2hhciAoVVRGLTE2
KSBzdHJpbmcKKyAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGlu
cHV0IHN0cmluZywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcworICogICAgICAgICAgICAgICB6ZXJv
IHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4K
KyAqIEByZXR1cm4gICAgICAgQSBwb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgcHJlLWFsbG9j
YXRlZCBVVGV4dCB3YXMgcHJvdmlkZWQsIGl0CisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlz
IGJlIHVzZWQgYW5kIHJldHVybmVkLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuVUNoYXJzKFVUZXh0ICp1dCwgY29uc3QgVUNo
YXIgKnMsIGludDY0X3QgbGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisKKyNpZiBVX1NI
T1dfQ1BMVVNQTFVTX0FQSQorLyoqCisgKiBPcGVuIGEgd3JpdGFibGUgVVRleHQgZm9yIGEgbm9u
LWNvbnN0IFVuaWNvZGVTdHJpbmcuIAorICogCisgKiBAcGFyYW0gdXQgICAgICBQb2ludGVyIHRv
IGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgor
ICogICAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxp
emVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgICAgYmUg
cmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgaW5wdXQgc3RyaW5nLgorICogQHBhcmFt
IHMgICAgICAgQSBVbmljb2RlU3RyaW5nLgorICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElm
IGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgICAg
d2lsbCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LworVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKK3V0ZXh0X29wZW5Vbmljb2RlU3RyaW5nKFVU
ZXh0ICp1dCwgaWN1OjpVbmljb2RlU3RyaW5nICpzLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisK
Ky8qKgorICogT3BlbiBhIFVUZXh0IGZvciBhIGNvbnN0IFVuaWNvZGVTdHJpbmcuICAgVGhlIHJl
c3VsdGluZyBVVGV4dCB3aWxsIG5vdCBiZSB3cml0YWJsZS4KKyAqIAorICogQHBhcmFtIHV0ICAg
IFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJl
IGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFu
IGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAg
ICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIGlucHV0IHN0cmluZy4KKyAq
IEBwYXJhbSBzICAgICAgQSBjb25zdCBVbmljb2RlU3RyaW5nIHRvIGJlIHdyYXBwZWQuCisgKiBA
cGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAg
UG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwg
dGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4K
KyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRl
eHRfb3BlbkNvbnN0VW5pY29kZVN0cmluZyhVVGV4dCAqdXQsIGNvbnN0IGljdTo6VW5pY29kZVN0
cmluZyAqcywgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIE9wZW4gYSB3cml0YWJs
ZSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBmb3IgYW4gSUNVIFJlcGxhY2VhYmxlIG9iamVjdC4KKyAq
IEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcg
VVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVz
dCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4KKyAq
ICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVwbGFj
ZWFibGUgdGV4dC4KKyAqIEBwYXJhbSByZXAgICAgQSBSZXBsYWNlYWJsZSB0ZXh0IG9iamVjdC4K
KyAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgorICogQHJldHVybiAg
ICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlu
cHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVy
bmVkLgorICogQHNlZSBSZXBsYWNlYWJsZQorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuUmVwbGFjZWFibGUoVVRleHQgKnV0LCBp
Y3U6OlJlcGxhY2VhYmxlICpyZXAsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3Bl
biBhICBVVGV4dCBpbXBsZW1lbnRhdGlvbiBvdmVyIGFuIElDVSBDaGFyYWN0ZXJJdGVyYXRvci4K
KyAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBu
ZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwg
bXVzdCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4K
KyAqICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVw
bGFjZWFibGUgdGV4dC4KKyAqIEBwYXJhbSBjaSAgICAgQSBDaGFyYWN0ZXIgSXRlcmF0b3IuCisg
KiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAg
ICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1
dCwgdGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5l
ZC4KKyAqIEBzZWUgUmVwbGFjZWFibGUKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlbkNoYXJhY3Rlckl0ZXJhdG9yKFVUZXh0ICp1
dCwgaWN1OjpDaGFyYWN0ZXJJdGVyYXRvciAqY2ksIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNl
bmRpZgorCisKKy8qKgorICAqICBDbG9uZSBhIFVUZXh0LiAgVGhpcyBpcyBtdWNoIGxpa2Ugb3Bl
bmluZyBhIFVUZXh0IHdoZXJlIHRoZSBzb3VyY2UgdGV4dCBpcyBpdHNlbGYKKyAgKiAgYW5vdGhl
ciBVVGV4dC4KKyAgKgorICAqICBBIGRlZXAgY2xvbmUgd2lsbCBjb3B5IGJvdGggdGhlIFVUZXh0
IGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHVuZGVybHlpbmcgdGV4dC4KKyAgKiAgVGhlIG9yaWdp
bmFsIGFuZCBjbG9uZWQgVVRleHQgd2lsbCBvcGVyYXRlIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnRs
eTsgbW9kaWZpY2F0aW9ucworICAqICBtYWRlIHRvIHRoZSB0ZXh0IGluIG9uZSB3aWxsIG5vdCBh
ZmZlY3QgdGhlIG90aGVyLiAgVGV4dCBwcm92aWRlcnMgYXJlIG5vdAorICAqICByZXF1aXJlZCB0
byBzdXBwb3J0IGRlZXAgY2xvbmVzLiAgVGhlIHVzZXIgb2YgY2xvbmUoKSBtdXN0IGNoZWNrIHRo
ZSBzdGF0dXMgcmV0dXJuCisgICogIGFuZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgZmFpbHVyZXMu
CisgICoKKyAgKiAgVGhlIHN0YW5kYXJkIFVUZXh0IGltcGxlbWVudGF0aW9ucyBmb3IgVVRGOCwg
VUNoYXIgKiwgVW5pY29kZVN0cmluZyBhbmQKKyAgKiAgUmVwbGFjZWFibGUgYWxsIHN1cHBvcnQg
ZGVlcCBjbG9uaW5nLgorICAqCisgICogIFRoZSBVVGV4dCByZXR1cm5lZCBmcm9tIGEgZGVlcCBj
bG9uZSB3aWxsIGJlIHdyaXRhYmxlLCBhc3N1bWluZyB0aGF0IHRoZSB0ZXh0CisgICogIHByb3Zp
ZGVyIGlzIGFibGUgdG8gc3VwcG9ydCB3cml0aW5nLCBldmVuIGlmIHRoZSBzb3VyY2UgVVRleHQg
aGFkIGJlZW4gbWFkZQorICAqICBub24td3JpdGFibGUgYnkgbWVhbnMgb2YgVVRleHRfZnJlZXpl
KCkuCisgICoKKyAgKiAgQSBzaGFsbG93IGNsb25lIHJlcGxpY2F0ZXMgb25seSB0aGUgVVRleHQg
ZGF0YSBzdHJ1Y3R1cmVzOyBpdCBkb2VzIG5vdCBtYWtlCisgICogIGEgY29weSBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0LiAgU2hhbGxvdyBjbG9uZXMgY2FuIGJlIHVzZWQgYXMgYW4gZWZmaWNpZW50
IHdheSB0byAKKyAgKiAgaGF2ZSBtdWx0aXBsZSBpdGVyYXRvcnMgYWN0aXZlIGluIGEgc2luZ2xl
IHRleHQgc3RyaW5nIHRoYXQgaXMgbm90IGJlaW5nCisgICogIG1vZGlmaWVkLgorICAqCisgICog
IEEgc2hhbGxvdyBjbG9uZSBvcGVyYXRpb24gd2lsbCBub3QgZmFpbCwgYmFycmluZyB0cnVseSBl
eGNlcHRpb25hbCBjb25kaXRpb25zIHN1Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFp
bHVyZXMuCisgICoKKyAgKiAgU2hhbGxvdyBVVGV4dCBjbG9uZXMgc2hvdWxkIGJlIGF2b2lkZWQg
aWYgdGhlIFVUZXh0IGZ1bmN0aW9ucyB0aGF0IG1vZGlmeSB0aGUKKyAgKiAgdGV4dCBhcmUgZXhw
ZWN0ZWQgdG8gYmUgdXNlZCwgZWl0aGVyIG9uIHRoZSBvcmlnaW5hbCBvciB0aGUgY2xvbmVkIFVU
ZXh0LgorICAqICBBbnkgc3VjaCBtb2RpZmljYXRpb25zICBjYW4gY2F1c2UgdW5wcmVkaWN0YWJs
ZSBiZWhhdmlvci4gIFJlYWQgT25seQorICAqICBzaGFsbG93IGNsb25lcyBwcm92aWRlIHNvbWUg
cHJvdGVjdGlvbiBhZ2FpbnN0IGVycm9ycyBvZiB0aGlzIHR5cGUgYnkKKyAgKiAgZGlzYWJsaW5n
IHRleHQgbW9kaWZpY2F0aW9uIHZpYSB0aGUgY2xvbmVkIFVUZXh0LgorICAqCisgICogIEEgc2hh
bGxvdyBjbG9uZSBtYWRlIHdpdGggdGhlIHJlYWRPbmx5IHBhcmFtZXRlciA9PSBGQUxTRSB3aWxs
IHByZXNlcnZlIHRoZSAKKyAgKiAgdXRleHRfaXNXcml0YWJsZSgpIHN0YXRlIG9mIHRoZSBzb3Vy
Y2Ugb2JqZWN0LiAgTm90ZSwgaG93ZXZlciwgdGhhdAorICAqICB3cml0ZSBvcGVyYXRpb25zIG11
c3QgYmUgYXZvaWRlZCB3aGlsZSBtb3JlIHRoYW4gb25lIFVUZXh0IGV4aXN0cyB0aGF0IHJlZmVy
CisgICogIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgdGV4dC4KKyAgKgorICAqICBBIFVUZXh0IGFu
ZCBpdHMgY2xvbmUgbWF5IGJlIHNhZmVseSBjb25jdXJyZW50bHkgYWNjZXNzZWQgYnkgc2VwYXJh
dGUgdGhyZWFkcy4KKyAgKiAgVGhpcyBpcyB0cnVlIGZvciByZWFkIGFjY2VzcyBvbmx5IHdpdGgg
c2hhbGxvdyBjbG9uZXMsIGFuZCBmb3IgYm90aCByZWFkIGFuZAorICAqICB3cml0ZSBhY2Nlc3Mg
d2l0aCBkZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBU
ZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25z
dHJhaW50IGlzIG1ldC4KKyAgKgorICAqICBAcGFyYW0gZGVzdCAgIEEgVVRleHQgc3RydWN0IHRv
IGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGNsb25lIG9wZXJhdGlvbiwKKyAg
KiAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZSBjbG9uZSBmdW5jdGlvbiBzaG91bGQgaGVh
cC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBzdHJ1Y3QuCisgICogICAgICAgICAgICAgICAgSWYgbm9u
LU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4dCwgd2hpY2ggd2ls
bCB0aGVuCisgICogICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gYmVjb21lIHRoZSBjbG9uZS4K
KyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQgdG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0g
ZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAgY2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cg
Y2xvbmUuCisgICogIEBwYXJhbSByZWFkT25seSBUUlVFIHRvIHJlcXVlc3QgdGhhdCB0aGUgY2xv
bmVkIFVUZXh0IGhhdmUgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgCisgICogICAgICAgICAgICAg
ICAgdW5kZXJseWluZyB0ZXh0LiAgCisKKyAgKiAgQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuICBGb3IgZGVlcCBjbG9uZXMsIFVfVU5TVVBQT1JURURfRVJST1IKKyAgKiAg
ICAgICAgICAgICAgICB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHByb3ZpZGVyIGlzIHVu
YWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5hbCB0ZXh0LgorICAq
ICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBOVUxMIGlmIHRoZSBj
bG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqICBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9jbG9uZShVVGV4dCAqZGVzdCwgY29uc3QgVVRl
eHQgKnNyYywgVUJvb2wgZGVlcCwgVUJvb2wgcmVhZE9ubHksIFVFcnJvckNvZGUgKnN0YXR1cyk7
CisKKworLyoqCisgICogIENvbXBhcmUgdHdvIFVUZXh0IG9iamVjdHMgZm9yIGVxdWFsaXR5Lgor
ICAqICBVVGV4dHMgYXJlIGVxdWFsIGlmIHRoZXkgYXJlIGl0ZXJhdGluZyBvdmVyIHRoZSBzYW1l
IHRleHQsIGFuZAorICAqICAgIGhhdmUgdGhlIHNhbWUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpdGhp
biB0aGUgdGV4dC4KKyAgKiAgICBJZiBlaXRoZXIgb3IgYm90aCBvZiB0aGUgcGFyYW1ldGVycyBh
cmUgTlVMTCwgdGhlIGNvbXBhcmlzb24gaXMgRkFMU0UuCisgICoKKyAgKiAgQHBhcmFtIGEgICBU
aGUgZmlyc3Qgb2YgdGhlIHR3byBVVGV4dHMgdG8gY29tcGFyZS4KKyAgKiAgQHBhcmFtIGIgICBU
aGUgb3RoZXIgVVRleHQgdG8gYmUgY29tcGFyZWQuCisgICogIEByZXR1cm4gICAgVFJVRSBpZiB0
aGUgdHdvIFVUZXh0cyBhcmUgZXF1YWwuCisgICogIEBzdGFibGUgSUNVIDMuNgorICAqLworVV9T
VEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9lcXVhbHMoY29uc3QgVVRleHQgKmEsIGNvbnN0
IFVUZXh0ICpiKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9u
cyB0byB3b3JrIHdpdGggdGhlIHRleHQgcmVwcmVzZXRlZCBieSBhIFVUZXh0IHdyYXBwZXIKKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICAqIEdldCB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LiAgRGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXJpc3RpY3MKKyAgKiBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1heSBiZSBleHBlbnNpdmUuICAKKyAg
KiBAc2VlICB1dGV4dF9pc0xlbmd0aEV4cGVuc2l2ZSgpCisgICoKKyAgKgorICAqIEBwYXJhbSB1
dCAgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LCBleHByZXNzZWQgaW4gbmF0aXZlIHVuaXRzLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCitVX1NUQUJMRSBpbnQ2NF90IFVfRVhQT1JUMgordXRleHRfbmF0aXZlTGVuZ3Ro
KFVUZXh0ICp1dCk7CisKKy8qKgorICogIFJldHVybiBUUlVFIGlmIGNhbGN1bGF0aW5nIHRoZSBs
ZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgZXhwZW5zaXZlLgorICogIEZpbmRpbmcgdGhlIGxl
bmd0aCBvZiBOVUwgdGVybWluYXRlZCBzdHJpbmdzIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXhwZW5z
aXZlLgorICoKKyAqICBOb3RlIHRoYXQgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gbWF5IGNo
YW5nZQorICogIGFzIHRoZSByZXN1bHQgb2Ygb3RoZXIgb3BlcmF0aW9ucyBvbiBhIFVUZXh0Lgor
ICogIE9uY2UgdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBoYXMgYmVlbiBkaXNjb3ZlcmVkLCBpdCB3
aWxsIG5vIGxvbmdlcgorICogIGJlIGV4cGVuc2l2ZSB0byByZXBvcnQgaXQuCisgKgorICogQHBh
cmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICogQHJldHVybiBUUlVFIGlmIGRldGVy
bWluaW5nIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgdGltZSBjb25zdW1pbmcuCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9p
c0xlbmd0aEV4cGVuc2l2ZShjb25zdCBVVGV4dCAqdXQpOworCisvKioKKyAqIFJldHVybnMgdGhl
IGNvZGUgcG9pbnQgYXQgdGhlIHJlcXVlc3RlZCBpbmRleCwKKyAqIG9yIFVfU0VOVElORUwgKC0x
KSBpZiBpdCBpcyBvdXQgb2YgYm91bmRzLgorICoKKyAqIElmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
cG9pbnRzIHRvIHRoZSBpbnRlcmlvciBvZiBhIG11bHRpLXVuaXQKKyAqIGNoYXJhY3RlciAtIG9u
ZSBvZiB0aGUgdHJhaWwgYnl0ZXMgb2YgYSBVVEYtOCBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUgLQor
ICogdGhlIGNvbXBsZXRlIGNvZGUgcG9pbnQgd2lsbCBiZSByZXR1cm5lZC4KKyAqCisgKiBUaGUg
aXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgcmV0dXJu
ZWQgY29kZSBwb2ludC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkgZXF1aXZhbGVu
dCB0byB0aGUgdGhlIHNlcXVlbmNlCisgKiAgICB1dGV4dF9zZXROYXRpdmVJbmRleChpbmRleCk7
CisgKiAgICB1dGV4dF9jdXJyZW50MzIoKTsKKyAqIChUaGVyZSBpcyBhIHN1YnRsZSBkaWZmZXJl
bmNlIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIGJ5IGJlaW5nIGxlc3MgdGhhbiB6ZXJv
IC0gCisgKiB1dGV4dF9zZXROYXRpdmVJbmRleChuZWdhdGl2ZSB2YWx1ZSkgc2V0cyB0aGUgaW5k
ZXggdG8gemVybywgYWZ0ZXIgd2hpY2ggdXRleHRfY3VycmVudCgpCisgKiB3aWxsIHJldHVybiB0
aGUgY2hhciBhdCB6ZXJvLiAgdXRleHRfY2hhcjMyQXQobmVnYXRpdmUgaW5kZXgpLCBvbiB0aGUg
b3RoZXIgaGFuZCwgd2lsbAorICogcmV0dXJuIHRoZSBVX1NFTlRJTkVMIHZhbHVlIG9mIC0xLikK
KyAqIAorICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkCisgKiBAcGFyYW0gbmF0
aXZlSW5kZXggdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHRvIGJlIGFjY2Vzc2Vk
LiAgSWYgdGhlIGluZGV4IHBvaW50cworICogICAgICAgIHRvIG90aGVyIHRoYW4gdGhlIGZpcnN0
IHVuaXQgb2YgYSBtdWx0aS11bml0IGNoYXJhY3RlciwgaXQgd2lsbCBiZSBhZGp1c3RlZAorICog
ICAgICAgIHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICogQHJldHVybiB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1dGV4dF9jaGFyMzJBdChVVGV4dCAqdXQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgpOworCisKKy8qKgorICoKKyAqIEdldCB0aGUgY29kZSBwb2ludCBh
dCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24sCisgKiBvciBVX1NFTlRJTkVMICgtMSkg
aWYgdGhlIGl0ZXJhdGlvbiBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mCisgKiB0aGUgaW5wdXQgdGV4
dC4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBAcmV0dXJu
IHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24u
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0
ZXh0X2N1cnJlbnQzMihVVGV4dCAqdXQpOworCisKKy8qKgorICogR2V0IHRoZSBjb2RlIHBvaW50
IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBvZiB0aGUgVVRleHQsIGFuZAorICog
YWR2YW5jZSB0aGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0IGluZGV4IGZvbGxvd2luZyB0aGUgY2hh
cmFjdGVyLgorICoKKyAqIElmIHRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0
ICh0aGUgaW5kZXggZm9sbG93aW5nCisgKiB0aGUgbGFzdCBjaGFyYWN0ZXIsIHdoaWNoIGlzIGFs
c28gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCksIAorICogcmV0dXJuIFVfU0VOVElORUwgKC0xKSBh
bmQgZG8gbm90IGFkdmFuY2UgdGhlIGluZGV4LiAKKyAqCisgKiBUaGlzIGlzIGEgcG9zdC1pbmNy
ZW1lbnQgb3BlcmF0aW9uLgorICoKKyAqIEFuIGlubGluZSBtYWNybyB2ZXJzaW9uIG9mIHRoaXMg
ZnVuY3Rpb24sIFVURVhUX05FWFQzMigpLCAKKyAqIGlzIGF2YWlsYWJsZSBmb3IgcGVyZm9ybWFu
Y2UgY3JpdGljYWwgdXNlLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3Nl
ZC4KKyAqIEByZXR1cm4gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBhdCB0aGUgaXRlcmF0aW9uIHBv
c2l0aW9uLgorICogQHNlZSBVVEVYVF9ORVhUMzIKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitV
X1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4dDMyKFVUZXh0ICp1dCk7CisKKwor
LyoqCisgKiAgTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJhY3RlciAoY29k
ZSBwb2ludCkgd2hvc2UKKyAqICBpbmRleCBwcmVjZWRlcyB0aGUgY3VycmVudCBwb3NpdGlvbiwg
YW5kIHJldHVybiB0aGF0IGNoYXJhY3Rlci4KKyAqICBUaGlzIGlzIGEgcHJlLWRlY3JlbWVudCBv
cGVyYXRpb24uCisgKgorICogIElmIHRoZSBpbml0aWFsIHBvc2l0aW9uIGlzIGF0IHRoZSBzdGFy
dCBvZiB0aGUgdGV4dCAoaW5kZXggb2YgMCkgCisgKiAgcmV0dXJuIFVfU0VOVElORUwgKC0xKSwg
YW5kIGxlYXZlIHRoZSBwb3NpdGlvbiB1bmNoYW5nZWQuCisgKgorICogIEFuIGlubGluZSBtYWNy
byB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24sIFVURVhUX1BSRVZJT1VTMzIoKSwgCisgKiAgaXMg
YXZhaWxhYmxlIGZvciBwZXJmb3JtYW5jZSBjcml0aWNhbCB1c2UuCisgKgorICogIEBwYXJhbSB1
dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KKyAqICBAcmV0dXJuIHRoZSBwcmV2aW91cyBVQ2hh
cjMyIGNvZGUgcG9pbnQsIG9yIFVfU0VOVElORUwgKC0xKSAKKyAqICAgICAgICAgIGlmIHRoZSBp
dGVyYXRpb24gaGFzIHJlYWNoZWQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICogIEBzZWUgVVRF
WFRfUFJFVklPVVMzMgorICogIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVQ2hhcjMy
IFVfRVhQT1JUMgordXRleHRfcHJldmlvdXMzMihVVGV4dCAqdXQpOworCisKKy8qKgorICAqIFNl
dCB0aGUgaXRlcmF0aW9uIGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhhdCBp
bmRleC4gCisgICogTGVhdmUgdGhlIGl0ZXJhdGlvbiBpbmRleCBhdCB0aGUgc3RhcnQgb2YgdGhl
IGZvbGxvd2luZyBjb2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9z
dCBlZmZpY2llbnQgYW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBmb3J3YXJkIGl0
ZXJhdGlvbi4gIFRoZSByZXN1bHRzIGFyZSBpZGVudGljYWwgdG8gdGhlIHRob3NlCisgICogZnJv
bSB0aGUgc2VxdWVuY2UKKyAgKiBcY29kZQorICAqICAgIHV0ZXh0X3NldEluZGV4KCk7CisgICog
ICAgdXRleHRfbmV4dDMyKCk7CisgICogXGVuZGNvZGUKKyAgKgorICAqICBAcGFyYW0gdXQgdGhl
IHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogIEBwYXJhbSBuYXRpdmVJbmRleCBJdGVyYXRpb24g
aW5kZXgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCisgICogIEBy
ZXR1cm4gQ29kZSBwb2ludCB3aGljaCBzdGFydHMgYXQgb3IgYmVmb3JlIGluZGV4LAorICAqICAg
ICAgICAgb3IgVV9TRU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCisgICogQHN0
YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4
dDMyRnJvbShVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisKKworLyoqCisgICog
U2V0IHRoZSBpdGVyYXRpb24gaW5kZXgsIGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgcHJlY2Vk
aW5nIHRoZQorICAqIG9uZSBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwgaW5kZXguICBMZWF2ZSB0
aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisgICogYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXR1cm5lZCBj
b2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9zdCBlZmZpY2llbnQg
YW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBiYWNrd2FyZHMgaXRlcmF0aW9uLgor
ICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEBwYXJhbSBu
YXRpdmVJbmRleCBJdGVyYXRpb24gaW5kZXggaW4gdGhlIG5hdGl2ZSB1bml0cyBvZiB0aGUgdGV4
dCBwcm92aWRlci4KKyAgKiBAcmV0dXJuIENvZGUgcG9pbnQgcHJlY2VkaW5nIHRoZSBvbmUgYXQg
dGhlIGluaXRpYWwgaW5kZXgsCisgICogICAgICAgICBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQg
aXMgb3V0IG9mIGJvdW5kcy4KKyAgKgorICAqIEBzdGFibGUgSUNVIDMuNAorICAqLworVV9TVEFC
TEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0ZXh0X3ByZXZpb3VzMzJGcm9tKFVUZXh0ICp1dCwgaW50
NjRfdCBuYXRpdmVJbmRleCk7CisKKy8qKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBw
b3NpdGlvbiwgd2hpY2ggY2FuIHJhbmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LgorICAqIFRoZSBwb3NpdGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1
dCB0ZXh0LCBpbiB3aGF0ZXZlciBmb3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRG
LTggZm9yIGV4YW1wbGUpLCBhbmQgbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0
aGUgY29ycmVzcG9uZGluZyBVQ2hhciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQg
cG9zaXRpb24gd2lsbCBhbHdheXMgYmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnku
IAorICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEByZXR1
cm4gdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhl
IHRleHQgcHJvdmlkZXIuCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBpbnQ2
NF90IFVfRVhQT1JUMgordXRleHRfZ2V0TmF0aXZlSW5kZXgoY29uc3QgVVRleHQgKnV0KTsKKwor
LyoqCisgKiBTZXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBuZWFyZXN0
IGNvZGUgcG9pbnQKKyAqIGJvdW5kYXJ5IGF0IG9yIHByZWNlZGluZyB0aGUgc3BlY2lmaWVkIGlu
ZGV4LgorICogVGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFs
IGlucHV0IHRleHQuCisgKiBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCBpdCB3aWxsIGJl
IHBpbm5lZCB0byBiZSB3aXRoaW4KKyAqIHRoZSByYW5nZSBvZiB0aGUgaW5wdXQgdGV4dC4KKyAq
IDxwPgorICogSXQgd2lsbCB1c3VhbGx5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGJlZ2luIGFuIGl0
ZXJhdGlvbgorICogdXNpbmcgdGhlIGZ1bmN0aW9ucyB1dGV4dF9uZXh0MzJGcm9tKCkgb3IgdXRl
eHRfcHJldmlvdXMzMkZyb20oKQorICogcmF0aGVyIHRoYW4gc2V0SW5kZXgoKS4KKyAqIDxwPgor
ICogTW92aW5nIHRoZSBpbmRleCBwb3NpdGlvbiB0byBhbiBhZGphY2VudCBjaGFyYWN0ZXIgaXMg
YmVzdCBkb25lCisgKiB3aXRoIHV0ZXh0X25leHQzMigpLCB1dGV4dF9wcmV2aW91czMyKCkgb3Ig
dXRleHRfbW92ZUluZGV4MzIoKS4KKyAqIEF0dGVtcHRpbmcgdG8gZG8gZGlyZWN0IGFyaXRobWV0
aWMgb24gdGhlIGluZGV4IHBvc2l0aW9uIGlzCisgKiBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0
aGF0IHRoZSBzaXplIChpbiBuYXRpdmUgdW5pdHMpIG9mIGEKKyAqIGNoYXJhY3RlciBkZXBlbmRz
IG9uIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0ZXIKKyAqIChV
VEYtOCwgVVRGLTE2LCBVVEYtMzIsIGFyYml0cmFyeSBjb2RlcGFnZSksIGFuZCBpcyBub3QKKyAq
IGVhc2lseSBrbm93YWJsZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNz
ZWQuCisgKiBAcGFyYW0gbmF0aXZlSW5kZXggdGhlIG5hdGl2ZSB1bml0IGluZGV4IG9mIHRoZSBu
ZXcgaXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyCit1dGV4dF9zZXROYXRpdmVJbmRleChVVGV4dCAqdXQsIGludDY0X3Qg
bmF0aXZlSW5kZXgpOworCisvKioKKyAqIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc3Rpb24gYnkgZGVs
dGEgY29kZSBwb2ludHMuICBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzCisgKiBpcyBhIHNpZ25l
ZCBudW1iZXI7IGEgbmVnYXRpdmUgZGVsdGEgd2lsbCBtb3ZlIHRoZSBpdGVyYXRvciBiYWNrd2Fy
ZHMsCisgKiB0b3dhcmRzIHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KKyAqIDxwPgorICogVGhlIGlu
ZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRlbHRhPC9jb2RlPiBjb2RlIHBvaW50cworICogZm9yd2Fy
ZCBvciBiYWNrd2FyZCwgYnV0IG5vIGZ1cnRoZXIgYmFja3dhcmQgdGhhbiB0byAwIGFuZAorICog
bm8gZnVydGhlciBmb3J3YXJkIHRoYW4gdG8gdXRleHRfbmF0aXZlTGVuZ3RoKCkuCisgKiBUaGUg
cmVzdWx0aW5nIGluZGV4IHZhbHVlIHdpbGwgYmUgaW4gYmV0d2VlbiAwIGFuZCBsZW5ndGgsIGlu
Y2x1c2l2ZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBA
cGFyYW0gZGVsdGEgdGhlIHNpZ25lZCBudW1iZXIgb2YgY29kZSBwb2ludHMgdG8gbW92ZSB0aGUg
aXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHJldHVybiBUUlVFIGlmIHRoZSBwb3NpdGlvbiBjb3Vs
ZCBiZSBtb3ZlZCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBwb3NpdGlvbnMgd2hpbGUKKyAqICAg
ICAgICAgICAgICBzdGF5aW5nIHdpdGhpbiB0aGUgcmFuZ2UgWzAgLSB0ZXh0IGxlbmd0aF0uCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9t
b3ZlSW5kZXgzMihVVGV4dCAqdXQsIGludDMyX3QgZGVsdGEpOworCisvKioKKyAqIEdldCB0aGUg
bmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgY3VycmVudCBwb3Np
dGlvbi4KKyAqIElmIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgYWxyZWFkeSBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHRleHQsIHplcm8KKyAqIGlzIHJldHVybmVkLgorICogVGhlIHZhbHVlIHJldHVy
bmVkIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNlcXVl
bmNlLAorICogYnV0IHdpdGhvdXQgdGhlIHNpZGUgZWZmZWN0IG9mIGNoYW5naW5nIHRoZSBpdGVy
YXRpb24gcG9zaXRpb24uCisgKiAgIAorICogXGNvZGUKKyAqICAgIFVUZXh0ICAqdXQgPSB3aGF0
ZXZlcjsKKyAqICAgICAgLi4uCisgKiAgICB1dGV4dF9wcmV2aW91cyh1dCkKKyAqICAgIHV0ZXh0
X2dldE5hdGl2ZUluZGV4KHV0KTsKKyAqIFxlbmRjb2RlCisgKgorICogVGhpcyBmdW5jdGlvbiBp
cyBtb3N0IHVzZWZ1bCBkdXJpbmcgZm9yd2FyZHMgaXRlcmF0aW9uLCB3aGVyZSBpdCB3aWxsIGdl
dCB0aGUKKyAqICAgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgbW9zdCByZWNlbnRseSBy
ZXR1cm5lZCBmcm9tIHV0ZXh0X25leHQoKS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8g
YmUgYWNjZXNzZWQKKyAqIEByZXR1cm4gdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVy
IHByZWNlZWRpbmcgdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sCisgKiAgICAgICAgIG9yIHpl
cm8gaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0Lgor
ICogQHN0YWJsZSBJQ1UgMy42CisgKi8KK1VfU1RBQkxFIGludDY0X3QgVV9FWFBPUlQyCit1dGV4
dF9nZXRQcmV2aW91c05hdGl2ZUluZGV4KFVUZXh0ICp1dCk7IAorCisKKy8qKgorICoKKyAqIEV4
dHJhY3QgdGV4dCBmcm9tIGEgVVRleHQgaW50byBhIFVDaGFyIGJ1ZmZlci4gIFRoZSByYW5nZSBv
ZiB0ZXh0IHRvIGJlIGV4dHJhY3RlZAorICogaXMgc3BlY2lmaWVkIGluIHRoZSBuYXRpdmUgaW5k
aWNlcyBvZiB0aGUgVVRleHQgcHJvdmlkZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vzc2FyaWx5Cisg
KiBiZSBVVEYtMTYgaW5kaWNlcy4KKyAqIDxwPgorICogVGhlIHNpemUgKG51bWJlciBvZiAxNiBi
aXQgVUNoYXJzKSBvZiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJuZWQuICBUaGUK
KyAqIGZ1bGwgbnVtYmVyIG9mIFVDaGFycyBpcyByZXR1cm5lZCwgZXZlbiB3aGVuIHRoZSBleHRy
YWN0ZWQgdGV4dCBpcyB0cnVuY2F0ZWQKKyAqIGJlY2F1c2UgdGhlIHNwZWNpZmllZCBidWZmZXIg
c2l6ZSBpcyB0b28gc21hbGwuCisgKiA8cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwg
KGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQor
ICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUg
ZGVzdGluYXRpb24gYnVmZmVyLiAgVGhpcworICogdGVybWluYXRpbmcgTlVMIGlzIG5vdCBpbmNs
dWRlZCBpbiB0aGUgcmV0dXJuZWQgbGVuZ3RoLgorICogPHA+CisgKiBUaGUgaXRlcmF0aW9uIGlu
ZGV4IGlzIGxlZnQgYXQgdGhlIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgbGFzdCBleHRyYWN0ZWQg
Y2hhcmFjdGVyLgorICoKKyAqIEBwYXJhbSAgdXQgICAgdGhlIFVUZXh0IGZyb20gd2hpY2ggdG8g
ZXh0cmFjdCBkYXRhLgorICogQHBhcmFtICBuYXRpdmVTdGFydCB0aGUgbmF0aXZlIGluZGV4IG9m
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gZXh0cmFjdC5cCisgKiAgICAgICAgICAgICAgIElmIHRo
ZSBzcGVjaWZpZWQgaW5kZXggaXMgb3V0IG9mIHJhbmdlLAorICogICAgICAgICAgICAgICBpdCB3
aWxsIGJlIHBpbm5lZCB0byB0byBiZSB3aXRoaW4gMCA8PSBpbmRleCA8PSB0ZXh0TGVuZ3RoCisg
KiBAcGFyYW0gIG5hdGl2ZUxpbWl0IHRoZSBuYXRpdmUgc3RyaW5nIGluZGV4IG9mIHRoZSBwb3Np
dGlvbiBmb2xsb3dpbmcgdGhlIGxhc3QKKyAqICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4
dHJhY3QuICBJZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG91dCBvZiByYW5nZSwKKyAqICAgICAg
ICAgICAgICAgaXQgd2lsbCBiZSBwaW5uZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0gaW5kZXggPD0g
dGV4dExlbmd0aC4KKyAqICAgICAgICAgICAgICAgbmF0aXZlTGltaXQgbXVzdCBiZSA+PSBuYXRp
dmVTdGFydC4KKyAqIEBwYXJhbSAgZGVzdCAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRv
IHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFj
aXR5ICBUaGUgc2l6ZSwgaW4gVUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5
IGJlIHplcm8KKyAqICAgICAgICAgICAgICAgZm9yIHByZWNvbXB1dGluZyB0aGUgcmVxdWlyZWQg
c2l6ZS4KKyAqIEBwYXJhbSAgc3RhdHVzIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAg
ICAgICAgIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOiB0aGUgZXh0cmFjdGVkIHRleHQgd2FzIHRy
dW5jYXRlZCBiZWNhdXNlIHRoZSAKKyAqICAgICAgICAgYnVmZmVyIHdhcyB0b28gc21hbGwuICBS
ZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMgZm9yIHByZWZsaWdodGluZy4KKyAqIEByZXR1cm4gTnVt
YmVyIG9mIFVDaGFycyBpbiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgordXRleHRfZXh0cmFjdChVVGV4dCAqdXQsCisgICAgICAgICAg
ICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKKyAgICAgICAgICAg
ICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAgVUVycm9y
Q29kZSAqc3RhdHVzKTsKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg
KiAgI2RlZmluZSBpbmxpbmUgdmVyc2lvbnMgb2Ygc2VsZWN0ZWQgcGVyZm9ybWFuY2UtY3JpdGlj
YWwgdGV4dCBhY2Nlc3MgZnVuY3Rpb25zCisgKiAgICAgICAgICBDYXV0aW9uOiAgZG8gbm90IHVz
ZSBhdXRvIGluY3JlbWVudCsrIG9yIGRlY3JlbWVudC0tIGV4cHJlc3Npb25zCisgKiAgICAgICAg
ICAgICAgICAgICAgYXMgcGFyYW1ldGVycyB0byB0aGVzZSBtYWNyb3MuCisgKgorICogICAgICAg
ICAgRm9yIG1vc3QgdXNlLCB3aGVyZSB0aGVyZSBpcyBubyBleHRyZW1lIHBlcmZvcm1hbmNlIGNv
bnN0cmFpbnQsIHRoZQorICogICAgICAgICAgbm9ybWFsLCBub24taW5saW5lIGZ1bmN0aW9ucyBh
cmUgYSBiZXR0ZXIgY2hvaWNlLiAgVGhlIHJlc3VsdGluZyBjb2RlCisgKiAgICAgICAgICB3aWxs
IGJlIHNtYWxsZXIsIGFuZCwgaWYgdGhlIG5lZWQgZXZlciBhcmlzZXMsIGVhc2llciB0byBkZWJ1
Zy4KKyAqCisgKiAgICAgICAgICBUaGVzZSBhcmUgaW1wbGVtZW50ZWQgYXMgI2RlZmluZXMgcmF0
aGVyIHRoYW4gcmVhbCBmdW5jdGlvbnMKKyAqICAgICAgICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8g
ZnVsbHkgcG9ydGFibGUgd2F5IHRvIGRvIGlubGluZSBmdW5jdGlvbnMgaW4gcGxhaW4gQy4KKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIFVfSElERV9JTlRFUk5B
TF9BUEkKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfY3VycmVudDMyKCksIGZvciBw
ZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29kZSBwb2lu
dCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LgorICogUmV0
dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhl
CisgKiB0ZXh0LgorICoKKyAqIEBpbnRlcm5hbCBJQ1UgNC40IHRlY2hub2xvZ3kgcHJldmlldwor
ICovCisjZGVmaW5lIFVURVhUX0NVUlJFTlQzMih1dCkgIFwKKyAgICAoKHV0KS0+Y2h1bmtPZmZz
ZXQgPCAodXQpLT5jaHVua0xlbmd0aCAmJiAoKHV0KS0+Y2h1bmtDb250ZW50cylbKHV0KS0+Y2h1
bmtPZmZzZXRdPDB4ZDgwMCA/IFwKKyAgICAoKHV0KS0+Y2h1bmtDb250ZW50cylbKCh1dCktPmNo
dW5rT2Zmc2V0KV0gOiB1dGV4dF9jdXJyZW50MzIodXQpKQorI2VuZGlmICAvKiBVX0hJREVfSU5U
RVJOQUxfQVBJICovCisKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfbmV4dDMyKCks
IGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LCBh
bmQKKyAqIGFkdmFuY2UgdGhlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBpbmRleCBmb2xsb3dpbmcg
dGhlIGNoYXJhY3Rlci4KKyAqIFRoaXMgaXMgYSBwb3N0LWluY3JlbWVudCBvcGVyYXRpb24uCisg
KiBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIGVuZCBv
ZiB0aGUKKyAqIHRleHQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KKyNkZWZpbmUgVVRF
WFRfTkVYVDMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8ICh1dCktPmNodW5rTGVu
Z3RoICYmICgodXQpLT5jaHVua0NvbnRlbnRzKVsodXQpLT5jaHVua09mZnNldF08MHhkODAwID8g
XAorICAgICgodXQpLT5jaHVua0NvbnRlbnRzKVsoKHV0KS0+Y2h1bmtPZmZzZXQpKytdIDogdXRl
eHRfbmV4dDMyKHV0KSkKKworLyoqCisgKiBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4dF9wcmV2aW91
czMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqICBNb3Zl
IHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgY2hhcmFjdGVyIChjb2RlIHBvaW50KSB3aG9z
ZQorICogIGluZGV4IHByZWNlZGVzIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQgcmV0dXJuIHRo
YXQgY2hhcmFjdGVyLgorICogIFRoaXMgaXMgYSBwcmUtZGVjcmVtZW50IG9wZXJhdGlvbi4KKyAq
ICBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0
IG9mIHRoZSAgdGV4dC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworI2RlZmluZSBVVEVY
VF9QUkVWSU9VUzMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA+IDAgJiYgXAorICAg
ICAodXQpLT5jaHVua0NvbnRlbnRzWyh1dCktPmNodW5rT2Zmc2V0LTFdIDwgMHhkODAwID8gXAor
ICAgICAgICAgICh1dCktPmNodW5rQ29udGVudHNbLS0oKHV0KS0+Y2h1bmtPZmZzZXQpXSAgOiAg
dXRleHRfcHJldmlvdXMzMih1dCkpCisKKy8qKgorICAqICBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4
dF9nZXROYXRpdmVJbmRleCgpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4K
KyAgKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBwb3NpdGlvbiwgd2hpY2ggY2FuIHJh
bmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LgorICAqIFRoZSBwb3Np
dGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1dCB0ZXh0LCBpbiB3aGF0ZXZlciBm
b3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRGLTggZm9yIGV4YW1wbGUpLCBhbmQg
bWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0aGUgY29ycmVzcG9uZGluZyBVQ2hh
ciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQgcG9zaXRpb24gd2lsbCBhbHdheXMg
YmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuIAorICAqCisgICogQHN0YWJsZSBJ
Q1UgMy42CisgICovCisjZGVmaW5lIFVURVhUX0dFVE5BVElWRUlOREVYKHV0KSAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8PSAodXQpLT5uYXRpdmVJbmRl
eGluZ0xpbWl0PyAgIFwKKyAgICAgICAgKHV0KS0+Y2h1bmtOYXRpdmVTdGFydCsodXQpLT5jaHVu
a09mZnNldCA6ICAgICBcCisgICAgICAgICh1dCktPnBGdW5jcy0+bWFwT2Zmc2V0VG9OYXRpdmUo
dXQpKSAgICAKKworLyoqCisgICogIGlubGluZSB2ZXJzaW9uIG9mIHV0ZXh0X3NldE5hdGl2ZUlu
ZGV4KCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICAqCisgICogU2V0
IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUgbmVhcmVzdCBjb2RlIHBvaW50
CisgICogYm91bmRhcnkgYXQgb3IgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgaW5kZXguCisgICog
VGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFsIGlucHV0IHRl
eHQuCisgICogSWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZSwgaXQgd2lsbCBiZSBwaW5uZWQg
dG8gYmUgd2l0aGluCisgICogdGhlIHJhbmdlIG9mIHRoZSBpbnB1dCB0ZXh0LgorICAqCisgICog
QHN0YWJsZSBJQ1UgMy44CisgICovCisjZGVmaW5lIFVURVhUX1NFVE5BVElWRUlOREVYKHV0LCBp
eCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IGludDY0X3QgX19vZmZzZXQgPSAoaXgp
IC0gKHV0KS0+Y2h1bmtOYXRpdmVTdGFydDsgXAorICAgICAgaWYgKF9fb2Zmc2V0Pj0wICYmIF9f
b2Zmc2V0PD0oaW50NjRfdCkodXQpLT5uYXRpdmVJbmRleGluZ0xpbWl0KSB7IFwKKyAgICAgICAg
ICAodXQpLT5jaHVua09mZnNldD0oaW50MzJfdClfX29mZnNldDsgXAorICAgICAgfSBlbHNlIHsg
XAorICAgICAgICAgIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCh1dCksIChpeCkpOyB9IH0KKworCisK
Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9ucyByZWxhdGVk
IHRvIHdyaXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSB0ZXh0LgorICogICBUaGVzZSB3aWxsIHdvcmsg
b25seSB3aXRoIG1vZGlmaWFibGUgVVRleHRzLiAgQXR0ZW1wdGluZyB0bworICogICBtb2RpZnkg
YSByZWFkLW9ubHkgVVRleHQgd2lsbCByZXR1cm4gYW4gZXJyb3Igc3RhdHVzLgorICoKKyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgKiAgUmV0dXJuIFRSVUUgaWYgdGhl
IHRleHQgY2FuIGJlIHdyaXR0ZW4gKG1vZGlmaWVkKSB3aXRoIHV0ZXh0X3JlcGxhY2UoKSBvcgor
ICogIHV0ZXh0X2NvcHkoKS4gIEZvciB0aGUgdGV4dCB0byBiZSB3cml0YWJsZSwgdGhlIHRleHQg
cHJvdmlkZXIgbXVzdAorICogIGJlIG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzIHdyaXRpbmcgYW5k
IHRoZSBVVGV4dCBtdXN0IG5vdCBiZSBmcm96ZW4uCisgKgorICogIEF0dGVtcHRpbmcgdG8gbW9k
aWZ5IHRleHQgd2hlbiB1dGV4dF9pc1dyaXRlYWJsZSgpIGlzIEZBTFNFIHdpbGwgZmFpbCAtCisg
KiAgdGhlIHRleHQgd2lsbCBub3QgYmUgbW9kaWZpZWQsIGFuZCBhbiBlcnJvciB3aWxsIGJlIHJl
dHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uCisgKiAgdGhhdCBhdHRlbXB0ZWQgdGhlIG1vZGlmaWNh
dGlvbi4KKyAqCisgKiBAcGFyYW0gIHV0ICAgdGhlIFVUZXh0IHRvIGJlIHRlc3RlZC4KKyAqIEBy
ZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCBpcyBtb2RpZmlhYmxlLgorICoKKyAqIEBzZWUgICAgdXRl
eHRfZnJlZXplKCkKKyAqIEBzZWUgICAgdXRleHRfcmVwbGFjZSgpCisgKiBAc2VlICAgIHV0ZXh0
X2NvcHkoKQorICogQHN0YWJsZSBJQ1UgMy40CisgKgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VY
UE9SVDIKK3V0ZXh0X2lzV3JpdGFibGUoY29uc3QgVVRleHQgKnV0KTsKKworCisvKioKKyAgKiBU
ZXN0IHdoZXRoZXIgdGhlcmUgaXMgbWV0YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4K
KyAgKiBAc2VlIFJlcGxhY2VhYmxlOjpoYXNNZXRhRGF0YSgpCisgICoKKyAgKiBAcGFyYW0gdXQg
VGhlIFVUZXh0IHRvIGJlIHRlc3RlZAorICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdW5kZXJseWlu
ZyB0ZXh0IGluY2x1ZGVzIG1ldGEgZGF0YS4KKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1Vf
U1RBQkxFIFVCb29sIFVfRVhQT1JUMgordXRleHRfaGFzTWV0YURhdGEoY29uc3QgVVRleHQgKnV0
KTsKKworCisvKioKKyAqIFJlcGxhY2UgYSByYW5nZSBvZiB0aGUgb3JpZ2luYWwgdGV4dCB3aXRo
IGEgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBMZWF2ZXMgdGhlIGN1cnJlbnQgaXRlcmF0aW9u
IHBvc2l0aW9uIGF0IHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlCisgKiAgbmV3bHkgaW5zZXJ0
ZWQgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh
YmxlIG9uIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0aW5nLAorICogdGhhdCBpcywgb25l
cyB3aGVyZSB1dGV4dF9pc1dyaXRhYmxlKCkgcmV0dXJucyBUUlVFLgorICoKKyAqIFdoZW4gdXNp
bmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRleHQgb3Bl
bmVkIG9udG8gdGhlCisgKiB1bmRlcmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIEJlaGF2aW9y
IGFmdGVyIGEgcmVwbGFjZSBvcGVyYXRpb24KKyAqIG9uIGEgVVRleHQgaXMgdW5kZWZpbmVkIGZv
ciBhbnkgb3RoZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlm
aWVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgICAgICB0aGUgVVRleHQgcmVw
cmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgorICogQHBhcmFtIG5hdGl2ZVN0
YXJ0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJlZ2lvbiB0byBi
ZSByZXBsYWNlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBv
ZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICog
QHBhcmFtIHJlcGxhY2VtZW50VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAor
ICogQHBhcmFtIHJlcGxhY2VtZW50TGVuZ3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgdGV4
dCwgb3IgLTEgaWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVz
ICAgICAgICAgICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGlu
Y2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgor
ICoKKyAqIEByZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0
cyBieSB3aGljaAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9y
IGNvbnRyYWN0ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIGludDMy
X3QgVV9FWFBPUlQyCit1dGV4dF9yZXBsYWNlKFVUZXh0ICp1dCwKKyAgICAgICAgICAgICBpbnQ2
NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICpyZXBsYWNlbWVudFRleHQsIGludDMyX3QgcmVwbGFjZW1lbnRMZW5ndGgsCisgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisKKy8qKgorICoKKyAqIENvcHkgb3Ig
bW92ZSBhIHN1YnN0cmluZyBmcm9tIG9uZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUg
dGV4dCwKKyAqIHdoaWxlIHJldGFpbmluZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRo
ZSB0ZXh0LgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVy
IHN1YnN0cmluZ3MuCisgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0
aGUgc291cmNlIHJhbmdlLgorICoKKyAqIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBp
cyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3
cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4KKyAqCisgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlz
IGxlZnQgZm9sbG93aW5nIHRoZSBuZXdseSBpbnNlcnRlZCB0ZXh0CisgKiBhdCB0aGUgZGVzdGlu
YXRpb24gcG9zaXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv
biBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3JpdGluZywKKyAqIHRoYXQgaXMsIG9uZXMgd2hl
cmUgdXRleHRfaXNXcml0YWJsZSgpIHJldHVybnMgVFJVRS4KKyAqCisgKiBXaGVuIHVzaW5nIHRo
aXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBvbmx5IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBv
bnRvIHRoZQorICogdW5kZXJseWluZyBuYXRpdmUgdGV4dCBzdHJpbmcuICBCZWhhdmlvciBhZnRl
ciBhIGNvcHkgb3BlcmF0aW9uCisgKiBvbiBhIFVUZXh0IGlzIHVuZGVmaW5lZCBpbiBhbnkgb3Ro
ZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlmaWVkIHN0cmlu
Zy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgIFRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhl
IHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQgIFRoZSBuYXRp
dmUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgY29waWVkIG9yIG1vdmVk
CisgKiBAcGFyYW0gbmF0aXZlTGltaXQgIFRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3Rl
ciBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIHJlZ2lvbgorICogICAgICAgICAgICAgICAgICAgICB0
byBiZSBjb3BpZWQuCisgKiBAcGFyYW0gZGVzdEluZGV4ICAgIFRoZSBuYXRpdmUgZGVzdGluYXRp
b24gaW5kZXggdG8gd2hpY2ggdGhlIHNvdXJjZSBzdWJzdHJpbmcgaXMKKyAqICAgICAgICAgICAg
ICAgICAgICAgY29waWVkIG9yIG1vdmVkLgorICogQHBhcmFtIG1vdmUgICAgICAgICBJZiBUUlVF
LCB0aGVuIHRoZSBzdWJzdHJpbmcgaXMgbW92ZWQsIG5vdCBjb3BpZWQvZHVwbGljYXRlZC4KKyAq
IEBwYXJhbSBzdGF0dXMgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3NpYmxl
IGVycm9ycyBpbmNsdWRlIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICogICAgICAgICAgICAgICAg
ICAgICAgIAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQy
Cit1dGV4dF9jb3B5KFVUZXh0ICp1dCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBp
bnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgIGludDY0X3QgZGVzdEluZGV4LAorICAgICAg
ICAgIFVCb29sIG1vdmUsCisgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioK
KyAgKiAgPHA+CisgICogIEZyZWV6ZSBhIFVUZXh0LiAgVGhpcyBwcmV2ZW50cyBhbnkgbW9kaWZp
Y2F0aW9uIHRvIHRoZSB1bmRlcmx5aW5nIHRleHQgaXRzZWxmCisgICogIGJ5IG1lYW5zIG9mIGZ1
bmN0aW9ucyBvcGVyYXRpbmcgb24gdGhpcyBVVGV4dC4KKyAgKiAgPC9wPgorICAqICA8cD4KKyAg
KiAgT25jZSBmcm96ZW4sIGEgVVRleHQgY2FuIG5vdCBiZSB1bmZyb3plbi4gIFRoZSBpbnRlbnQg
aXMgdG8gZW5zdXJlCisgICogIHRoYXQgYSB0aGUgdGV4dCB1bmRlcmx5aW5nIGEgZnJvemVuIFVU
ZXh0IHdyYXBwZXIgY2Fubm90IGJlIG1vZGlmaWVkIHZpYSB0aGF0IFVUZXh0LgorICAqICA8L3A+
CisgICogIDxwPgorICAqICBDYXV0aW9uOiAgZnJlZXppbmcgYSBVVGV4dCB3aWxsIGRpc2FibGUg
Y2hhbmdlcyBtYWRlIHZpYSB0aGUgc3BlY2lmaWMKKyAgKiAgIGZyb3plbiBVVGV4dCB3cmFwcGVy
IG9ubHk7IGl0IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYWJpbGl0eSB0bworICAq
ICAgZGlyZWN0bHkgbW9kaWZ5IHRoZSB0ZXh0IGJ5IGJ5cGFzc2luZyB0aGUgVVRleHQuICBBbnkg
c3VjaCBiYWNrZG9vciBtb2RpZmljYXRpb25zCisgICogICBhcmUgYWx3YXlzIGFuIGVycm9yIHdo
aWxlIFVUZXh0IGFjY2VzcyBpcyBvY2N1cmluZyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nCisgICog
ICB0ZXh0IGNhbiBnZXQgb3V0IG9mIHN5bmMgd2l0aCBVVGV4dCdzIGJ1ZmZlcmluZy4KKyAgKiAg
PC9wPgorICAqCisgICogIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJlIGZyb3plbi4KKyAgKiAg
QHNlZSAgIHV0ZXh0X2lzV3JpdGFibGUoKQorICAqICBAc3RhYmxlIElDVSAzLjYKKyAgKi8KK1Vf
U1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9mcmVlemUoVVRleHQgKnV0KTsKKworCisvKioK
KyAqIFVUZXh0IHByb3ZpZGVyIHByb3BlcnRpZXMgKGJpdCBmaWVsZCBpbmRleGVzKS4KKyAqCisg
KiBAc2VlIFVUZXh0CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworZW51bSB7CisgICAgLyoqCisg
ICAgICogSXQgaXMgcG90ZW50aWFsbHkgdGltZSBjb25zdW1pbmcgZm9yIHRoZSBwcm92aWRlciB0
byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjQKKyAgICAgKi8KKyAgICBVVEVYVF9QUk9WSURFUl9MRU5HVEhfSVNfRVhQRU5TSVZFID0gMSwK
KyAgICAvKioKKyAgICAgKiBUZXh0IGNodW5rcyByZW1haW4gdmFsaWQgYW5kIHVzYWJsZSB1bnRp
bCB0aGUgdGV4dCBvYmplY3QgaXMgbW9kaWZpZWQgb3IKKyAgICAgKiBkZWxldGVkLCBub3QganVz
dCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSBhY2Nlc3MoKSBmdW5jdGlvbiBpcyBjYWxsZWQKKyAg
ICAgKiAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLgorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAg
ICAqLworICAgIFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVOS1MgPSAyLAorICAgIC8qKgorICAg
ICAqIFRoZSBwcm92aWRlciBzdXBwb3J0cyBtb2RpZnlpbmcgdGhlIHRleHQgdmlhIHRoZSByZXBs
YWNlKCkgYW5kIGNvcHkoKQorICAgICAqIGZ1bmN0aW9ucy4KKyAgICAgKiBAc2VlIFJlcGxhY2Vh
YmxlCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgVVRFWFRfUFJPVklERVJf
V1JJVEFCTEUgPSAzLAorICAgIC8qKgorICAgICAqIFRoZXJlIGlzIG1ldGEgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhlIHRleHQuCisgICAgICogQHNlZSBSZXBsYWNlYWJsZTo6aGFzTWV0YURhdGEo
KQorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAqLyAKKyAgICBVVEVYVF9QUk9WSURFUl9I
QVNfTUVUQV9EQVRBID0gNCwKKyAgICAvKioKKyAgICAgKiBUZXh0IHByb3ZpZGVyIG93bnMgdGhl
IHRleHQgc3RvcmFnZS4KKyAgICAgKiAgR2VuZXJhbGx5IG9jY3VycyBhcyB0aGUgcmVzdWx0IG9m
IGEgZGVlcCBjbG9uZSBvZiB0aGUgVVRleHQuCisgICAgICogIFdoZW4gY2xvc2luZyB0aGUgVVRl
eHQsIHRoZSBhc3NvY2lhdGVkIHRleHQgbXVzdAorICAgICAqICBhbHNvIGJlIGNsb3NlZC9kZWxl
dGVkL2ZyZWVkLyB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZS4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjYKKyAgICAgKi8KKyAgICAgVVRFWFRfUFJPVklERVJfT1dOU19URVhUID0gNQorfTsKKworLyoq
CisgICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuY2xvbmUoKS4KKyAgKgor
ICAqICBjbG9uZSBhIFVUZXh0LiAgTXVjaCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3aGVyZSB0aGUg
c291cmNlIHRleHQgaXMgaXRzZWxmCisgICogIGFub3RoZXIgVVRleHQuCisgICoKKyAgKiAgQSBk
ZWVwIGNsb25lIHdpbGwgY29weSBib3RoIHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRo
ZSB1bmRlcmx5aW5nIHRleHQuCisgICogIFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVkIFVUZXh0IHdp
bGwgb3BlcmF0ZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlvbnMKKyAgKiAg
bWFkZSB0byB0aGUgdGV4dCBpbiBvbmUgd2lsbCBub3QgZWZmZWN0IHRoZSBvdGhlci4gIFRleHQg
cHJvdmlkZXJzIGFyZSBub3QKKyAgKiAgcmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVwIGNsb25lcy4g
IFRoZSB1c2VyIG9mIGNsb25lKCkgbXVzdCBjaGVjayB0aGUgc3RhdHVzIHJldHVybgorICAqICBh
bmQgYmUgcHJlcGFyZWQgdG8gaGFuZGxlIGZhaWx1cmVzLgorICAqCisgICogIEEgc2hhbGxvdyBj
bG9uZSByZXBsaWNhdGVzIG9ubHkgdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlczsgaXQgZG9lcyBu
b3QgbWFrZQorICAqICBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgdGV4dC4gIFNoYWxsb3cgY2xv
bmVzIGNhbiBiZSB1c2VkIGFzIGFuIGVmZmljaWVudCB3YXkgdG8gCisgICogIGhhdmUgbXVsdGlw
bGUgaXRlcmF0b3JzIGFjdGl2ZSBpbiBhIHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0IGlzIG5vdCBi
ZWluZworICAqICBtb2RpZmllZC4KKyAgKgorICAqICBBIHNoYWxsb3cgY2xvbmUgb3BlcmF0aW9u
IG11c3Qgbm90IGZhaWwgZXhjZXB0IGZvciB0cnVseSBleGNlcHRpb25hbCBjb25kaXRpb25zIHN1
Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICoKKyAgKiAgQSBVVGV4
dCBhbmQgaXRzIGNsb25lIG1heSBiZSBzYWZlbHkgY29uY3VycmVudGx5IGFjY2Vzc2VkIGJ5IHNl
cGFyYXRlIHRocmVhZHMuCisgICogIFRoaXMgaXMgdHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBk
ZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBUZXh0IFBy
b3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25zdHJhaW50
IGlzIG1ldC4KKworICAqCisgICogIEBwYXJhbSBkZXN0ICAgQSBVVGV4dCBzdHJ1Y3QgdG8gYmUg
ZmlsbGVkIGluIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgY2xvbmUgb3BlcmF0aW9uLAorICAqICAg
ICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhlIGNsb25lIGZ1bmN0aW9uIHNob3VsZCBoZWFwLWFs
bG9jYXRlIGEgbmV3IFVUZXh0IHN0cnVjdC4KKyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQg
dG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAg
Y2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cgY2xvbmUuCisgICogIEBwYXJhbSBzdGF0dXMgRXJy
b3JzIGFyZSByZXR1cm5lZCBoZXJlLiAgRm9yIGRlZXAgY2xvbmVzLCBVX1VOU1VQUE9SVEVEX0VS
Uk9SCisgICogICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHBy
b3ZpZGVyIGlzIHVuYWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5h
bCB0ZXh0LgorICAqICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBO
VUxMIGlmIHRoZSBjbG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCit0eXBlZGVmIFVUZXh0ICogVV9DQUxMQ09OVgorVVRleHRDbG9uZShVVGV4dCAq
ZGVzdCwgY29uc3QgVVRleHQgKnNyYywgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSAqc3RhdHVzKTsK
KworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm5hdGl2ZUxl
bmd0aCgpLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgVVRleHQgdG8gZ2V0IHRoZSBsZW5ndGggb2Yu
CisgKiBAcmV0dXJuIHRoZSBsZW5ndGgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdp
bmFsIHRleHQgc3RyaW5nLgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgaW50NjRfdCBVX0NBTExDT05WCitVVGV4dE5hdGl2ZUxlbmd0aChVVGV4dCAqdXQp
OworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmFjY2Vzcygp
LiAgR2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGV4dCBjaHVuaworICogIGNvbnRhaW5pbmcg
dGhlIHRleHQgYXQgYSByZXF1ZXN0ZWQgbmF0aXZlIGluZGV4LiAgVGhlIFVUZXh0J3MgaXRlcmF0
aW9uCisgKiAgcG9zaXRpb24gd2lsbCBiZSBsZWZ0IGF0IHRoZSByZXF1ZXN0ZWQgaW5kZXguICBJ
ZiB0aGUgaW5kZXggaXMgb3V0CisgKiAgb2YgYm91bmRzLCB0aGUgaXRlcmF0aW9uIHBvc2l0aW9u
IHdpbGwgYmUgbGVmdCBhdCB0aGUgc3RhcnQgb3IgZW5kCisgKiAgb2YgdGhlIHN0cmluZywgYXMg
YXBwcm9wcmlhdGUuCisgKgorICogIENodW5rcyBtdXN0IGJlZ2luIGFuZCBlbmQgb24gY29kZSBw
b2ludCBib3VuZGFyaWVzLiAgQSBzaW5nbGUgY29kZSBwb2ludAorICogIGNvbXByaXNlZCBvZiBt
dWx0aXBsZSBzdG9yYWdlIHVuaXRzIG11c3QgbmV2ZXIgc3BhbiBhIGNodW5rIGJvdW5kYXJ5Lgor
ICoKKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgdGhlIFVUZXh0IGJlaW5nIGFjY2Vzc2VkLgor
ICogQHBhcmFtIG5hdGl2ZUluZGV4IFJlcXVlc3RlZCBpbmRleCBvZiB0aGUgdGV4dCB0byBiZSBh
Y2Nlc3NlZC4KKyAqIEBwYXJhbSBmb3J3YXJkICAgICBJZiBUUlVFLCB0aGVuIHRoZSByZXR1cm5l
ZCBjaHVuayBtdXN0IGNvbnRhaW4gdGV4dAorICogICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5n
IGZyb20gdGhlIGluZGV4LCBzbyB0aGF0IHN0YXJ0PD1pbmRleDxsaW1pdC4KKyAqICAgICAgICAg
ICAgICAgICAgICBJZiBGQUxTRSwgdGhlbiB0aGUgcmV0dXJuZWQgY2h1bmsgbXVzdCBjb250YWlu
IHRleHQKKyAqICAgICAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGluZGV4LCBzbyB0aGF0IHN0
YXJ0PGluZGV4PD1saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBUcnVlIGlmIHRoZSByZXF1
ZXN0ZWQgaW5kZXggY291bGQgYmUgYWNjZXNzZWQuICBUaGUgY2h1bmsKKyAqICAgICAgICAgICAg
ICAgICAgICB3aWxsIGNvbnRhaW4gdGhlIHJlcXVlc3RlZCB0ZXh0LgorICogICAgICAgICAgICAg
ICAgICAgIEZhbHNlIHZhbHVlIGlmIGEgY2h1bmsgY2Fubm90IGJlIGFjY2Vzc2VkCisgKiAgICAg
ICAgICAgICAgICAgICAgKHRoZSByZXF1ZXN0ZWQgaW5kZXggaXMgb3V0IG9mIGJvdW5kcykuCisg
KgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgVUJvb2wg
VV9DQUxMQ09OVgorVVRleHRBY2Nlc3MoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBV
VGV4dC5leHRyYWN0KCkuCisgKgorICogRXh0cmFjdCB0ZXh0IGZyb20gYSBVVGV4dCBpbnRvIGEg
VUNoYXIgYnVmZmVyLiAgVGhlIHJhbmdlIG9mIHRleHQgdG8gYmUgZXh0cmFjdGVkCisgKiBpcyBz
cGVjaWZpZWQgaW4gdGhlIG5hdGl2ZSBpbmRpY2VzIG9mIHRoZSBVVGV4dCBwcm92aWRlci4gIFRo
ZXNlIG1heSBub3QgbmVjZXNzYXJpbHkKKyAqIGJlIFVURi0xNiBpbmRpY2VzLgorICogPHA+Cisg
KiBUaGUgc2l6ZSAobnVtYmVyIG9mIDE2IGJpdCBVQ2hhcnMpIGluIHRoZSBkYXRhIHRvIGJlIGV4
dHJhY3RlZCBpcyByZXR1cm5lZC4gIFRoZQorICogZnVsbCBhbW91bnQgaXMgcmV0dXJuZWQsIGV2
ZW4gd2hlbiB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBzaXplIGlzIHNtYWxsZXIuCisgKiA8cD4KKyAq
IFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlm
IHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQorICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUg
aXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICoKKyAqIEBw
YXJhbSAgdXQgICAgICAgICAgICB0aGUgVVRleHQgZnJvbSB3aGljaCB0byBleHRyYWN0IGRhdGEu
CisgKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0ICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjZXIgdG8gZXh0cmFjdC4KKyAqIEBwYXJhbSAgbmF0aXZlTGltaXQgICB0aGUgbmF0aXZl
IHN0cmluZyBpbmRleCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0CisgKiAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4dHJhY3QuCisgKiBAcGFyYW0gIGRlc3Qg
ICAgICAgICAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0
ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSwgaW4g
VUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5IGJlIHplcm8KKyAqICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgcHJlY29tcHV0aW5nIHRoZSByZXF1aXJlZCBzaXplLgorICog
QHBhcmFtICBzdGF0dXMgICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgSWYgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I6IFJldHVybnMgbnVt
YmVyIG9mIFVDaGFycyBmb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICBwcmVmbGlnaHRpbmcu
CisgKiBAcmV0dXJuIE51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGRhdGEuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCit0eXBlZGVm
IGludDMyX3QgVV9DQUxMQ09OVgorVVRleHRFeHRyYWN0KFVUZXh0ICp1dCwKKyAgICAgICAgICAg
ICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAg
IFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAgICBVRXJyb3JD
b2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVU
ZXh0LnJlcGxhY2UoKS4KKyAqCisgKiBSZXBsYWNlIGEgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIHRl
eHQgd2l0aCBhIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogTGVhdmVzIHRoZSBjdXJyZW50IGl0
ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZQorICogIG5ld2x5
IGluc2VydGVkIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogVGhpcyBmdW5jdGlvbiBuZWVkIG9u
bHkgYmUgaW1wbGVtZW50ZWQgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisg
KgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNp
bmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3Ry
aW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRl
eHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlv
biBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRvIGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVu
ZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJlIGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3Bl
cmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAgICAgICAgICAgICAgIHRoZSBVVGV4dCByZXByZXNl
bnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQg
ICAgICB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgcmVwbGFjZWQK
KyAqIEBwYXJhbSBuYXRpdmVMaW1pdCAgICAgIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZv
bGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICogQHBhcmFtIHJlcGxhY2VtZW50
VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICogQHBhcmFtIHJlcGxhY21l
bnRMZW5ndGggbGVuZ3RoIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGluIFVDaGFycywgb3IgLTEg
aWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgICAg
ICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICoKKyAqIEBy
ZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0cyBieSB3aGlj
aAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9yIGNvbnRyYWN0
ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgaW50MzJfdCBVX0NBTExD
T05WCitVVGV4dFJlcGxhY2UoVVRleHQgKnV0LAorICAgICAgICAgICAgIGludDY0X3QgbmF0aXZl
U3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCisgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnJl
cGxhY2VtZW50VGV4dCwgaW50MzJfdCByZXBsYWNtZW50TGVuZ3RoLAorICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBm
b3IgVVRleHQuY29weSgpLgorICoKKyAqIENvcHkgb3IgbW92ZSBhIHN1YnN0cmluZyBmcm9tIG9u
ZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxlIHJldGFpbmlu
ZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgorICogVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmluZ3MuCisgKiBUaGUgZGVz
dGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICoKKyAq
IFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7
CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4K
KyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5lZWQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgVVRleHQg
dHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisgKgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0
aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUK
KyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3Bv
bnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRleHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0
byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRv
IGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJl
IGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAg
ICAgICAgICAgVGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBv
bi4KKyAqIEBwYXJhbSBuYXRpdmVTdGFydCAgVGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUg
cmVnaW9uIHRvIGJlIGNvcGllZCBvciBtb3ZlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICBUaGUg
aW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNl
ZC4KKyAqIEBwYXJhbSBuYXRpdmVEZXN0ICAgVGhlIGRlc3RpbmF0aW9uIGluZGV4IHRvIHdoaWNo
IHRoZSBzb3VyY2Ugc3Vic3RyaW5nIGlzIGNvcGllZCBvciBtb3ZlZC4KKyAqIEBwYXJhbSBtb3Zl
ICAgICAgICAgSWYgVFJVRSwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBub3QgY29waWVk
L2R1cGxpY2F0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBz
dGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX05PX1dSSVRFX1BFUk1JU1NJT04KKyAq
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRlZiB2b2lkIFVfQ0FMTENPTlYKK1VUZXh0
Q29weShVVGV4dCAqdXQsCisgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBu
YXRpdmVMaW1pdCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZURlc3QsCisgICAgICAgICAgVUJv
b2wgbW92ZSwKKyAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0
aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm1hcE9mZnNldFRvTmF0aXZlKCkuCisgKiBN
YXAgZnJvbSB0aGUgY3VycmVudCBVQ2hhciBvZmZzZXQgd2l0aGluIHRoZSBjdXJyZW50IHRleHQg
Y2h1bmsgdG8KKyAqICB0aGUgY29ycmVzcG9uZGluZyBuYXRpdmUgaW5kZXggaW4gdGhlIG9yaWdp
bmFsIHNvdXJjZSB0ZXh0LgorICoKKyAqIFRoaXMgaXMgcmVxdWlyZWQgb25seSBmb3IgdGV4dCBw
cm92aWRlcnMgdGhhdCBkbyBub3QgdXNlIG5hdGl2ZSBVVEYtMTYgaW5kZXhlcy4KKyAqCisgKiBA
cGFyYW0gdXQgICAgIHRoZSBVVGV4dC4KKyAqIEByZXR1cm4gQWJzb2x1dGUgKG5hdGl2ZSkgaW5k
ZXggY29ycmVzcG9uZGluZyB0byBjaHVua09mZnNldCBpbiB0aGUgY3VycmVudCBjaHVuay4KKyAq
ICAgICAgICAgVGhlIHJldHVybmVkIG5hdGl2ZSBpbmRleCBzaG91bGQgYWx3YXlzIGJlIHRvIGEg
Y29kZSBwb2ludCBib3VuZGFyeS4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRl
ZiBpbnQ2NF90IFVfQ0FMTENPTlYKK1VUZXh0TWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQg
KnV0KTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5tYXBJ
bmRleFRvVVRGMTYoKS4KKyAqIE1hcCBmcm9tIGEgbmF0aXZlIGluZGV4IHRvIGEgVUNoYXIgb2Zm
c2V0IHdpdGhpbiBhIHRleHQgY2h1bmsuCisgKiBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgdGhl
IG5hdGl2ZSBpbmRleCBkb2VzIG5vdCBmYWxsIHdpdGhpbiB0aGUKKyAqICAgY3VycmVudCBjaHVu
ay4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIG9ubHkgZm9yIHRleHQgcHJvdmlk
ZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRpdmUgVVRGLTE2IGluZGV4ZXMuCisgKgorICogQHBhcmFt
IHV0ICAgICAgICAgIFRoZSBVVGV4dCBjb250YWluaW5nIHRoZSB0ZXh0IGNodW5rLgorICogQHBh
cmFtIG5hdGl2ZUluZGV4IEFic29sdXRlIChuYXRpdmUpIHRleHQgaW5kZXgsIGNodW5rLT5zdGFy
dDw9aW5kZXg8PWNodW5rLT5saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBDaHVuay1yZWxh
dGl2ZSBVVEYtMTYgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBuYXRpdmUK
KyAqICAgICAgICAgICAgICAgICAgICBpbmRleC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LwordHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKK1VUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2
KGNvbnN0IFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7CisKKworLyoqCisgKiBGdW5j
dGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC51dGV4dENsb3NlKCkuCisgKgorICogQSBU
ZXh0IFByb3ZpZGVyIGNsb3NlIGZ1bmN0aW9uIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHByb3ZpZGVy
IHR5cGVzIHRoYXQgbWFrZQorICogIGFsbG9jYXRpb25zIGluIHRoZWlyIG9wZW4gZnVuY3Rpb24g
KG9yIG90aGVyIGZ1bmN0aW9ucykgdGhhdCBtdXN0IGJlIAorICogIGNsZWFuZWQgd2hlbiB0aGUg
VVRleHQgaXMgY2xvc2VkLgorICoKKyAqIFRoZSBhbGxvY2F0aW9uIG9mIHRoZSBVVGV4dCBzdHJ1
Y3QgaXRzZWxmIGFuZCBhbnkgImV4dHJhIiBzdG9yYWdlCisgKiBhc3NvY2lhdGVkIHdpdGggdGhl
IFVUZXh0IGlzIGhhbmRsZWQgYnkgdGhlIGNvbW1vbiBVVGV4dCBpbXBsZW1lbnRhdGlvbgorICog
YW5kIGRvZXMgbm90IHJlcXVpcmUgcHJvdmlkZXIgc3BlY2lmaWMgY2xlYW51cCBpbiBhIGNsb3Nl
IGZ1bmN0aW9uLgorICoKKyAqIE1vc3QgVVRleHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb25zIGRv
IG5vdCBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSB1dCBB
IFVUZXh0IG9iamVjdCB0byBiZSBjbG9zZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgdm9pZCBVX0NBTExDT05WCitVVGV4dENsb3NlKFVUZXh0ICp1dCk7CisKKworLyoq
CisgICogICAocHVibGljKSAgRnVuY3Rpb24gZGlzcGF0Y2ggdGFibGUgZm9yIFVUZXh0LgorICAq
ICAgICAgICAgICAgIENvbmNlcHR1YWxseSB2ZXJ5IG11Y2ggbGlrZSBhIEMrKyBWaXJ0dWFsIEZ1
bmN0aW9uIFRhYmxlLgorICAqICAgICAgICAgICAgIFRoaXMgc3RydWN0IGRlZmluZXMgdGhlIG9y
Z2FuaXphdGlvbiBvZiB0aGUgdGFibGUuCisgICogICAgICAgICAgICAgRWFjaCB0ZXh0IHByb3Zp
ZGVyIGltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBhbgorICAqICAgICAgICAgICAgICBhY3R1
YWwgdGFibGUgdGhhdCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlv
bnMKKyAgKiAgICAgICAgICAgICAgZm9yIHRoZSB0eXBlIG9mIHRleHQgYmVpbmcgaGFuZGxlZC4K
KyAgKiAgIEBzdGFibGUgSUNVIDMuNgorICAqLworc3RydWN0IFVUZXh0RnVuY3MgeworICAgIC8q
KgorICAgICAqICAgKHB1YmxpYykgIEZ1bmN0aW9uIHRhYmxlIHNpemUsIHNpemVvZihVVGV4dEZ1
bmNzKQorICAgICAqICAgICAgICAgICAgIEludGVuZGVkIGZvciB1c2Ugc2hvdWxkIHRoZSB0YWJs
ZSBncm93IHRvIGFjY29tb2RhdGUgYWRkZWQKKyAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbnMg
aW4gdGhlIGZ1dHVyZSwgdG8gYWxsb3cgdGVzdHMgZm9yIG9sZGVyIGZvcm1hdAorICAgICAqICAg
ICAgICAgICAgIGZ1bmN0aW9uIHRhYmxlcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBleHRlbnNp
b25zLgorICAgICAqCisgICAgICogICAgICAgICAgICAgRmllbGRzIGFyZSBwbGFjZWQgZm9yIG9w
dGltYWwgYWxpZ25tZW50IG9uCisgICAgICogICAgICAgICAgICAgMzIvNjQvMTI4LWJpdC1wb2lu
dGVyIG1hY2hpbmVzLCBieSBub3JtYWxseSBncm91cGluZyB0b2dldGhlcgorICAgICAqICAgICAg
ICAgICAgIDQgMzItYml0IGZpZWxkcywKKyAgICAgKiAgICAgICAgICAgICA0IHBvaW50ZXJzLAor
ICAgICAqICAgICAgICAgICAgIDIgNjQtYml0IGZpZWxkcworICAgICAqICAgICAgICAgICAgIGlu
IHNlcXVlbmNlLgorICAgICAqICAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgaW50MzJf
dCAgICAgICB0YWJsZVNpemU7CisKKyAgICAvKioKKyAgICAgICogICAocHJpdmF0ZSkgIEFsaWdu
bWVudCBwYWRkaW5nLgorICAgICAgKiAgICAgICAgICAgICAgRG8gbm90IHVzZSwgcmVzZXJ2ZWQg
Zm9yIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrIG9ubHkuCisgICAgICAqICAgQGludGVybmFs
CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgcmVzZXJ2ZWQxLCAvKiogQGludGVybmFsICov
IHJlc2VydmVkMiwgLyoqIEBpbnRlcm5hbCAqLyByZXNlcnZlZDM7CisKKworICAgIC8qKgorICAg
ICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0Q2xvbmUKKyAgICAgKgorICAg
ICAqIEBzZWUgVVRleHRDbG9uZQorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAg
IFVUZXh0Q2xvbmUgKmNsb25lOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgZnVuY3Rpb24g
cG9pbnRlciBmb3IgVVRleHRMZW5ndGgKKyAgICAgKiBNYXkgYmUgZXhwZW5zaXZlIHRvIGNvbXB1
dGUhCisgICAgICoKKyAgICAgKiBAc2VlIFVUZXh0TGVuZ3RoCisgICAgICogQHN0YWJsZSBJQ1Ug
My42CisgICAgICovCisgICAgVVRleHROYXRpdmVMZW5ndGggKm5hdGl2ZUxlbmd0aDsKKworICAg
IC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0QWNjZXNzLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dEFjY2VzcworICAgICAqIEBzdGFibGUgSUNVIDMuNgor
ICAgICAqLworICAgIFVUZXh0QWNjZXNzICphY2Nlc3M7CisKKyAgICAvKioKKyAgICAgKiAocHVi
bGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dEV4dHJhY3QuCisgICAgICoKKyAgICAgKiBA
c2VlIFVUZXh0RXh0cmFjdAorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIFVU
ZXh0RXh0cmFjdCAqZXh0cmFjdDsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9u
IHBvaW50ZXIgZm9yIFVUZXh0UmVwbGFjZS4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRSZXBs
YWNlCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRSZXBsYWNlICpy
ZXBsYWNlOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3Ig
VVRleHRDb3B5LgorICAgICAqCisgICAgICogQHNlZSBVVGV4dENvcHkKKyAgICAgKiBAc3RhYmxl
IElDVSAzLjYKKyAgICAgKi8KKyAgICBVVGV4dENvcHkgKmNvcHk7CisKKyAgICAvKioKKyAgICAg
KiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dE1hcE9mZnNldFRvTmF0aXZlLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dE1hcE9mZnNldFRvTmF0aXZlCisgICAgICogQHN0YWJs
ZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRNYXBPZmZzZXRUb05hdGl2ZSAqbWFwT2Zmc2V0
VG9OYXRpdmU7CisKKyAgICAvKioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZv
ciBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNi4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRN
YXBOYXRpdmVJbmRleFRvVVRGMTYKKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAg
ICBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNiAqbWFwTmF0aXZlSW5kZXhUb1VURjE2OworCisg
ICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRDbG9zZS4K
KyAgICAgICoKKyAgICAgICogQHNlZSBVVGV4dENsb3NlCisgICAgICAqIEBzdGFibGUgSUNVIDMu
NgorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqY2xvc2U7CisKKyAgICAvKioKKyAgICAgICog
KHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAg
ICAgKi8KKyAgICBVVGV4dENsb3NlICAqc3BhcmUxOworICAgIAorICAgIC8qKgorICAgICAgKiAo
cHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9uIHBvaW50ZXIKKyAgICAgICogQGludGVybmFsCisgICAg
ICAqLworICAgIFVUZXh0Q2xvc2UgICpzcGFyZTI7CisKKyAgICAvKioKKyAgICAgICogKHByaXZh
dGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAgICAgKi8K
KyAgICBVVGV4dENsb3NlICAqc3BhcmUzOworCit9OworLyoqCisgKiBGdW5jdGlvbiBkaXNwYXRj
aCB0YWJsZSBmb3IgVVRleHQKKyAqIEBzZWUgVVRleHRGdW5jcworICovCit0eXBlZGVmIHN0cnVj
dCBVVGV4dEZ1bmNzIFVUZXh0RnVuY3M7CisKKyAvKioKKyAgKiAgIFVUZXh0IHN0cnVjdC4gIFBy
b3ZpZGVzIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBVVGV4dCBhY2Nlc3MgY29k
ZQorICAqICAgICAgICAgICAgICAgICAgYW5kIHRoZSBVVGV4dCBwcm92aWRlciBjb2RlIHRoYXQg
d29ya3Mgb24gc3BlY2lmaWMga2luZHMgb2YKKyAgKiAgICAgICAgICAgICAgICAgIHRleHQgIChV
VEYtOCwgbm9uY29udGlndW91cyBVVEYtMTYsIHdoYXRldmVyLikKKyAgKgorICAqICAgICAgICAg
ICAgICAgICAgQXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHByZWRlZmluZWQgdHlwZXMgb2Yg
dGV4dCBwcm92aWRlcnMKKyAgKiAgICAgICAgICAgICAgICAgIHRvIHBhc3MgdGV4dCBkYXRhIHRv
IElDVSBzZXJ2aWNlcyB3aWxsIGhhdmUgbm8gbmVlZCB0byB2aWV3IHRoZQorICAqICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzIG9mIHRoZSBVVGV4dCBzdHJ1Y3RzIHRoYXQgdGhleSBvcGVuLgor
ICAqCisgICogQHN0YWJsZSBJQ1UgMy42CisgICovCitzdHJ1Y3QgVVRleHQgeworICAgIC8qKgor
ICAgICAqICAgICAocHJpdmF0ZSkgIE1hZ2ljLiAgVXNlZCB0byBoZWxwIGRldGVjdCB3aGVuIFVU
ZXh0IGZ1bmN0aW9ucyBhcmUgaGFuZGVkCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBp
bnZhbGlkIG9yIHVuaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCisgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICB1dGV4dF9vcGVuWFlaKCkgZnVuY3Rpb25zIHRha2UgYW4gaW5pdGlhbGl6ZWQs
CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG9wZW4s
IFVUZXh0IHN0cnVjdCBhcyBhbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
YWwgZmlsbC1pbiBwYXJhbWV0ZXIuICBUaGlzIG1hZ2ljIGZpZWxkCisgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNoZWNrIGZvciB0aGF0IGluaXRpYWxpemF0aW9uLgor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCBwcm92aWRlciBjbG9zZSBmdW5jdGlv
bnMgbXVzdCBOT1QgY2xlYXIKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWdp
YyBmaWVsZCBiZWNhdXNlIHRoYXQgd291bGQgcHJldmVudAorICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgcmV1c2Ugb2YgdGhlIFVUZXh0IHN0cnVjdC4KKyAgICAgKiBAaW50ZXJuYWwKKyAg
ICAgKi8KKyAgICB1aW50MzJfdCAgICAgICBtYWdpYzsKKworCisgICAgLyoqCisgICAgICogICAg
IChwcml2YXRlKSAgRmxhZ3MgZm9yIG1hbmFnaW5nIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5n
IG9mCisgICAgICogICAgICAgICAgICAgICAgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFVU
ZXh0LgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIGludDMyX3QgICAgICAgIGZsYWdz
OworCisKKyAgICAvKioKKyAgICAgICogIFRleHQgcHJvdmlkZXIgcHJvcGVydGllcy4gIFRoaXMg
c2V0IG9mIGZsYWdzIGlzIG1haW50YWludGVkIGJ5IHRoZQorICAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICogIEBz
dGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgcHJvdmlkZXJQcm9w
ZXJ0aWVzOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgc2l6ZU9mU3RydWN0PXNpemVvZihV
VGV4dCkKKyAgICAgKiBBbGxvd3MgcG9zc2libGUgYmFja3dhcmQgY29tcGF0aWJsZSBleHRlbnNp
b24uCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBpbnQzMl90
ICAgICAgICAgc2l6ZU9mU3RydWN0OworICAgIAorICAgIC8qIC0tLS0tLSAxNiBieXRlIGFsaWdu
bWVudCBib3VuZGFyeSAtLS0tLS0tLS0tLSAgKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAg
KHByb3RlY3RlZCkgTmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgcG9zaXRpb24g
Zm9sbG93aW5nCisgICAgICAqICAgICAgICAgICAgICB0aGUgY3VycmVudCBjaHVuay4KKyAgICAg
ICogIEBzdGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBpbnQ2NF90ICAgICAgICAgY2h1bmtO
YXRpdmVMaW1pdDsKKworICAgIC8qKgorICAgICAqICAgKHByb3RlY3RlZCkgIFNpemUgaW4gYnl0
ZXMgb2YgdGhlIGV4dHJhIHNwYWNlIChwRXh0cmEpLgorICAgICAqICBAc3RhYmxlIElDVSAzLjQK
KyAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICBleHRyYVNpemU7CisKKyAgICAvKioKKyAgICAg
ICogICAgKHByb3RlY3RlZCkgVGhlIGhpZ2hlc3QgY2h1bmsgb2Zmc2V0IHdoZXJlIG5hdGl2ZSBp
bmRleGluZyBhbmQKKyAgICAgICogICAgY2h1bmsgKFVURi0xNikgaW5kZXhpbmcgY29ycmVzcG9u
ZC4gIEZvciBVVEYtMTYgc291cmNlcywgdmFsdWUKKyAgICAgICogICAgd2lsbCBiZSBlcXVhbCB0
byBjaHVua0xlbmd0aC4KKyAgICAgICoKKyAgICAgICogICAgQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBuYXRpdmVJbmRleGluZ0xpbWl0OworCisgICAgLyog
LS0tLSAxNiBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tLS0tLSAqLworICAgIAorICAgIC8qKgor
ICAgICAqICAocHJvdGVjdGVkKSBOYXRpdmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBp
biB0aGUgdGV4dCBjaHVuay4KKyAgICAgKiAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAg
aW50NjRfdCAgICAgICAgIGNodW5rTmF0aXZlU3RhcnQ7CisKKyAgICAvKioKKyAgICAgKiAgKHBy
b3RlY3RlZCkgQ3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0IGNodW5r
IChVVEYtMTYgYnVmZmVyKS4KKyAgICAgKiAgVGhpcyBpcyB0aGUgaW5kZXggdG8gdGhlIGNoYXJh
Y3RlciB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdXRleHRfbmV4dDMyKCkuCisgICAgICogIEBz
dGFibGUgSUNVIDMuNgorICAgICAqLworICAgIGludDMyX3QgICAgICAgICBjaHVua09mZnNldDsK
KworICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSBMZW5ndGggdGhlIHRleHQgY2h1bmsgKFVU
Ri0xNiBidWZmZXIpLCBpbiBVQ2hhcnMuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAq
LworICAgIGludDMyX3QgICAgICAgICBjaHVua0xlbmd0aDsKKworICAgIC8qIC0tLS0gMTYgIGJ5
dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAqICAocHJv
dGVjdGVkKSAgcG9pbnRlciB0byBhIGNodW5rIG9mIHRleHQgaW4gVVRGLTE2IGZvcm1hdC4KKyAg
ICAgKiAgTWF5IHJlZmVyIGVpdGhlciB0byBvcmlnaW5hbCBzdG9yYWdlIG9mIHRoZSBzb3VyY2Ug
b2YgdGhlIHRleHQsIG9yCisgICAgICogIGlmIGNvbnZlcnNpb24gd2FzIHJlcXVpcmVkLCB0byBh
IGJ1ZmZlciBvd25lZCBieSB0aGUgVVRleHQuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAg
ICAqLworICAgIGNvbnN0IFVDaGFyICAgICpjaHVua0NvbnRlbnRzOworCisgICAgIC8qKgorICAg
ICAgKiAocHVibGljKSAgICAgUG9pbnRlciB0byBEaXNwYXRjaCB0YWJsZSBmb3IgYWNjZXNzaW5n
IGZ1bmN0aW9ucyBmb3IgdGhpcyBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGNvbnN0IFVUZXh0RnVuY3MgICAgICpwRnVuY3M7CisKKyAgICAvKioKKyAgICAg
KiAgKHByb3RlY3RlZCkgIFBvaW50ZXIgdG8gYWRkaXRpb25hbCBzcGFjZSByZXF1ZXN0ZWQgYnkg
dGhlCisgICAgICogICAgICAgICAgICAgICB0ZXh0IHByb3ZpZGVyIGR1cmluZyB0aGUgdXRleHRf
b3BlbiBvcGVyYXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgdm9p
ZCAgICAgICAgICAqcEV4dHJhOworCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRl
ciB0byBzdHJpbmcgb3IgdGV4dC1jb250YWluaW4gb2JqZWN0IG9yIHNpbWlsYXIuCisgICAgICog
VGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSB0ZXh0IHRoYXQgdGhpcyBVVGV4dCBpcyB3cmFwcGlu
ZywgaW4gYSBmb3JtYXQKKyAgICAgKiAgdGhhdCBpcyBrbm93biB0byB0aGUgdGV4dCBwcm92aWRl
ciBmdW5jdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgY29uc3Qg
dm9pZCAgICpjb250ZXh0OworCisgICAgLyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tICovCisKKyAgICAvKioKKyAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFp
bGFibGUgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAgKiBOb3QgdXNlZCBieSBV
VGV4dCBjb21tb24gY29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBj
b25zdCB2b2lkICAgICAqcDsgCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRlciBm
aWVsZHMgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisgICAgICogTm90
IHVzZWQgYnkgVVRleHQgY29tbW9uIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICovCisgICAgY29uc3Qgdm9pZCAgICAgKnE7CisgICAgIC8qKgorICAgICAqIChwcm90ZWN0ZWQp
IFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgor
ICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgorICAgICAqIEBzdGFibGUgSUNV
IDMuNgorICAgICAgKi8KKyAgICBjb25zdCB2b2lkICAgICAqcjsKKworICAgIC8qKgorICAgICAg
KiAgUHJpdmF0ZSBmaWVsZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJh
bWV3b3JrCisgICAgICAqICAgICBpdHNlbGYuICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5
IHRoZSB0ZXh0IHByb3ZpZGVycy4KKyAgICAgICogQGludGVybmFsIElDVSAzLjQKKyAgICAgICov
CisgICAgdm9pZCAgICAgICAgICAgKnByaXZQOworCisKKyAgICAvKiAtLS0gMTYgYnl0ZSBhbGln
bm1lbnQgYm91bmRhcnktLS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAocHJvdGVjdGVk
KSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisg
ICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmssIG9yIGJ5IHRoZSBjbGllbnQg
KHVzZXIpIG9mIHRoZSBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICAqLwor
ICAgIGludDY0X3QgICAgICAgICBhOworCisgICAgLyoqCisgICAgICAqIChwcm90ZWN0ZWQpIElu
dGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAg
ICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZyYW1ld29yaywgb3IgYnkgdGhlIGNsaWVudCAodXNl
cikgb2YgdGhlIFVUZXh0LgorICAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgICovCisgICAg
aW50MzJfdCAgICAgICAgIGI7CisKKyAgICAvKioKKyAgICAgICogKHByb3RlY3RlZCkgSW50ZWdl
ciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgorICAgICAgKiBO
b3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3b3JrLCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBv
ZiB0aGUgVVRleHQuCisgICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQz
Ml90ICAgICAgICAgYzsKKworICAgIC8qICAtLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tLSAqLworCisKKyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9y
IGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAg
VGhpcyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAq
IEBpbnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGludDY0X3QgICAgICAgICBwcml2QTsK
KyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2Ug
YnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3Qg
dG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJ
Q1UgMy40CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QjsKKyAgICAvKioKKyAg
ICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0
IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hl
ZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QzsKK307CisKKworLyoqCisgKiAgQ29tbW9u
IGZ1bmN0aW9uIGZvciB1c2UgYnkgVGV4dCBQcm92aWRlciBpbXBsZW1lbnRhdGlvbnMgdG8gYWxs
b2NhdGUgYW5kL29yIGluaXRpYWxpemUKKyAqICBhIG5ldyBVVGV4dCBzdHJ1Y3QuICBUbyBiZSBj
YWxsZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMuCisg
KiAgSWYgdGhlIHN1cHBsaWVkIFVUZXh0IHBhcmFtZXRlciBpcyBudWxsLCBhIG5ldyBVVGV4dCBz
dHJ1Y3Qgd2lsbCBiZSBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisgKiAgSWYgdGhlIHN1cHBsaWVk
IFVUZXh0IGlzIGFscmVhZHkgb3BlbiwgdGhlIHByb3ZpZGVyJ3MgY2xvc2UgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQKKyAqICBzbyB0aGF0IHRoZSBzdHJ1Y3QgY2FuIGJlIHJldXNlZCBieSB0aGUg
b3BlbiB0aGF0IGlzIGluIHByb2dyZXNzLgorICoKKyAqIEBwYXJhbSB1dCAgIHBvaW50ZXIgdG8g
YSBVVGV4dCBzdHJ1Y3QgdG8gYmUgcmUtdXNlZCwgb3IgbnVsbCBpZiBhIG5ldyBVVGV4dAorICog
ICAgICAgICAgICAgc2hvdWxkIGJlIGFsbG9jYXRlZC4KKyAqIEBwYXJhbSBleHRyYVNwYWNlIFRo
ZSBhbW91bnQgb2YgYWRkaXRpb25hbCBzcGFjZSB0byBiZSBhbGxvY2F0ZWQgYXMgcGFydAorICog
ICAgICAgICAgICAgb2YgdGhpcyBVVGV4dCwgZm9yIHVzZSBieSB0eXBlcyBvZiBwcm92aWRlcnMg
dGhhdCByZXF1aXJlCisgKiAgICAgICAgICAgICBhZGRpdGlvbmFsIHN0b3JhZ2UuCisgKiBAcGFy
YW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gcG9pbnRlciB0
byB0aGUgVVRleHQsIGFsbG9jYXRlZCBpZiBuZWNlc3NhcnksIHdpdGggZXh0cmEgc3BhY2Ugc2V0
IHVwIGlmIHJlcXVlc3RlZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4
dCAqIFVfRVhQT1JUMgordXRleHRfc2V0dXAoVVRleHQgKnV0LCBpbnQzMl90IGV4dHJhU3BhY2Us
IFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorLyoq
CisgICogQGludGVybmFsCisgICogIFZhbHVlIHVzZWQgdG8gaGVscCBpZGVudGlmeSBjb3JyZWN0
bHkgaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0cy4KKyAgKiAgTm90ZTogIG11c3QgYmUgcHVibGlj
bHkgdmlzaWJsZSBzbyB0aGF0IFVURVhUX0lOSVRJQUxJWkVSIGNhbiBhY2Nlc3MgaXQuCisgICov
CitlbnVtIHsKKyAgICBVVEVYVF9NQUdJQyA9IDB4MzQ1YWQ4MmMKK307CisjZW5kaWYgIC8qIFVf
SElERV9JTlRFUk5BTF9BUEkgKi8KKworLyoqCisgKiBpbml0aWFsaXplciB0byBiZSB1c2VkIHdp
dGggbG9jYWwgKHN0YWNrKSBpbnN0YW5jZXMgb2YgYSBVVGV4dAorICogIHN0cnVjdC4gIFVUZXh0
IHN0cnVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgcGFzc2luZworICogIHRoZW0gdG8g
b25lIG9mIHRoZSB1dGV4dF9vcGVuIGZ1bmN0aW9ucy4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjYK
KyAqLworI2RlZmluZSBVVEVYVF9JTklUSUFMSVpFUiB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIFVURVhUX01BR0lDLCAgICAgICAg
ICAvKiBtYWdpYyAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAg
ICAgICAgICAgICAgICAgLyogZmxhZ3MgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAg
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHByb3ZpZGVyUHJvcHMgICAgICAgICovIFwK
KyAgICAgICAgICAgICAgICAgIHNpemVvZihVVGV4dCksICAgICAgICAvKiBzaXplT2ZTdHJ1Y3Qg
ICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyog
Y2h1bmtOYXRpdmVMaW1pdCAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAg
ICAgICAgICAgIC8qIGV4dHJhU2l6ZSAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAg
IDAsICAgICAgICAgICAgICAgICAgICAvKiBuYXRpdmVJbmRleGluZ0xpbWl0ICAqLyBcCisgICAg
ICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtOYXRpdmVTdGFydCAg
ICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGNodW5r
T2Zmc2V0ICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAvKiBjaHVua0xlbmd0aCAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxM
LCAgICAgICAgICAgICAgICAgLyogY2h1bmtDb250ZW50cyAgICAgICAgKi8gXAorICAgICAgICAg
ICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIHBGdW5jcyAgICAgICAgICAgICAgICov
IFwKKyAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwRXh0cmEgICAg
ICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAg
LyogY29udGV4dCAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgTlVMTCwgTlVM
TCwgTlVMTCwgICAgIC8qIHAsIHEsIHIgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAg
ICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwcml2UCAgICAgICAgICAgICAgICAqLyBcCisg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAgICAgICAgICAgICAgLyogYSwgYiwgYyAgICAgICAg
ICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgMCwgMCAgICAgICAgICAgICAgIC8qIHBy
aXZBLEIsQywgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIH0KKworCitVX0NERUNM
X0VORAorCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDIxNTU5NjY3NDg0Njgy
MTRjMDM2NThkMDNhNWQ3NzQ2ZmZlODA4YTQuLjZlY2RjZTZiZTdmZTg0ZTFmMGVhMjgyM2NiOGM5
MzVlYjlkNzIwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0
KFdURl9IRUFERVJTCiAgICAgdGV4dC9DU3RyaW5nLmgKICAgICB0ZXh0L0ludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uaAogICAgIHRleHQvTENoYXIuaAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmgKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5oCiAgICAgdGV4dC9TdHJpbmdDb21t
b24uaAogICAgIHRleHQvU3RyaW5nSGFzaC5oCkBAIC0xNDcsOSArMTQ4LDE1IEBAIHNldChXVEZf
SEVBREVSUwogICAgIHRleHQvU3RyaW5nVmlldy5oCiAgICAgdGV4dC9TeW1ib2xJbXBsLmgKICAg
ICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKyAgICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKyAg
ICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaAogICAgIHRleHQvVW5pcXVlZFN0
cmluZ0ltcGwuaAogICAgIHRleHQvV1RGU3RyaW5nLmgKIAorICAgIHRleHQvaWN1L1VUZXh0UHJv
dmlkZXIuaAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAorICAgIHRleHQvaWN1
L1VUZXh0UHJvdmlkZXJVVEYxNi5oCisKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCiAK
ICAgICB1bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgKQEAgLTIyMSw4ICsyMjgsMTMgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAogICAgIHRleHQvU3RyaW5nVmll
dy5jcHAKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAorICAgIHRleHQvVGV4dEJyZWFrSXRl
cmF0b3IuY3BwCiAgICAgdGV4dC9XVEZTdHJpbmcuY3BwCiAKKyAgICB0ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmNwcAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAgdGV4
dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAorCiAgICAgdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwCiAKICAgICB1bmljb2RlL1VURjguY3BwCkBAIC0yMzQsNiArMjQ2LDcgQEAgc2V0KFdU
Rl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V1RGX0RJUn0vd3RmIgogICAgICIke1dURl9E
SVJ9L3d0Zi9kdG9hIgogICAgICIke1dURl9ESVJ9L3d0Zi90ZXh0IgorICAgICIke1dURl9ESVJ9
L3d0Zi90ZXh0L2ljdSIKICAgICAiJHtXVEZfRElSfS93dGYvdGhyZWFkcyIKICAgICAiJHtXVEZf
RElSfS93dGYvdW5pY29kZSIKICAgICAiJHtUSElSRFBBUlRZX0RJUn0iCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDcxYTUyYWU1ZTFlMjdhNGM4ODk1NjU3Y2Q0ZTA1ZjM4YmM2YTBhOWUu
LmJhMTU0NzQ4NzAxOWIyMWMzN2NmOTZmOWUwOTM3MmI4ZGQxZGM4OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xLDYgKzEsOCBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAg
ICBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAogCisgICAgdGV4dC9lZmwv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKKwogICAgIGVmbC9EaXNwYXRjaFF1
ZXVlRWZsLmNwcAogICAgIGVmbC9NYWluVGhyZWFkRWZsLmNwcAogICAgIGVmbC9SdW5Mb29wRWZs
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyMGI5Yjk5M2E3YWE3ZjhjNTY1Y2Iy
ODMyNDZjY2JmZDViMDc1NDAyLi5mNjE5ZGQ1N2M3Nzg4ZGUyYzk1MzcyZDJiYWVhOTk4MGY3NmI1
N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOCw2ICs4LDggQEAgbGlzdChBUFBF
TkQgV1RGX1NPVVJDRVMKICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcAogICAgIGdsaWIvUnVu
TG9vcEdMaWIuY3BwCiAgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAK
KworICAgIHRleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCiApCiAK
IGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
Y2UzZGRiY2IwODFiZjczNzllNTM1N2QxN2JiOWJiYmRhZDBhOTNlOS4uNDkzYjc5OGQ2MzY2NTJm
MjMyZWEzZjk2ZDdjZjg5Zjg5MzIzYjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTE4LDYgKzE4LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJD
Ri5jcHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAgIHRleHQvbWFjL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KKwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAgIGNv
Y29hL1dvcmtRdWV1ZUNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAzYjNm
OThiYmNjZmQ5MDI5Njk0ZmRlMjUyNjExMjdhNjEyYmRjMzIzLi5hMGJkMTMyYzNlNGMxNzIzYjg5
MTVkMTBiYjk0MzQ0ZWZkZTAyOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMSw1
ICsxLDcgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0gICAgUExhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzV2luLmNwcAorICAgIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1dp
bi5jcHAKKworICAgIHRleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3Bw
CiAKICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmlu
Z0NGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAppbmRleCA2NzhmOGJmZDEyMGEzYTM2MTFiM2NjZThl
MWNlOThmZWM5YWFjMDJkLi45MWIzMWY5ZGRmOTAwYTY2Zjk3ODg4YjljM2YxMWZiYjU2NjEyNTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaW55TFJVQ2FjaGUuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIFZhbHVlVHlwZT4KIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewpAQCAtNzgsNCAr
NzgsNyBAQCBwcml2YXRlOgogCiB9CiAKK3VzaW5nIFdURjo6VGlueUxSVUNhY2hlOwordXNpbmcg
V1RGOjpUaW55TFJVQ2FjaGVQb2xpY3k7CisKICNlbmRpZiAvLyBUaW55TFJVQ2FjaGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDc2NjA3ZDJhOTNkNWY4YjEwNDQ3MGVkODdjNDRkOWNjZjA4OTMxOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAg
LTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCisjZGVmaW5lIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVV9oCisKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKyNpbmNsdWRlIDx1bmljb2Rl
L3VicmsuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNz
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJy
ZWFrSXRlcmF0b3JQb29sKTsKK3B1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7
IH0KKworICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQorICAg
IHsKKyAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQ
b29sPiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9v
bD47CisgICAgICAgIHJldHVybiAqKnBvb2w7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBt
YWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGxv
Y2FsZVdpdGhLZXl3b3JkOworICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmQobG9jYWxl
KTsKKyAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgiQGJyZWFrPSIpOwor
ICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKKyAg
ICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoImxvb3NlIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5v
cm1hbDoKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIm5vcm1h
bCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTRTdHJpY3Q6CisgICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRl
cmFsKCJzdHJpY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBsb2NhbGVXaXRoS2V5d29yZC50b1N0cmluZygpOworICAgIH0KKworICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVy
YXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZyBs
b2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7CisgICAgICAgIGlmIChtb2RlID09IExpbmVC
cmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJl
YWtLZXl3b3JkID0gbG9jYWxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUs
IG1vZGUpOworCisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IDA7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAobV9wb29sW2ldLmZpcnN0ID09IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29y
ZCkgeworICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbV9wb29sW2ldLnNlY29uZDsKKyAgICAg
ICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpdGVyYXRvcikgeworICAgICAg
ICAgICAgaXRlcmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFs
QnJlYWtLZXl3b3JkLCBtb2RlLCBpc0NKSyk7CisgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKCFt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworICAgICAgICBtX3ZlbmRlZEl0
ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCk7Cisg
ICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICB9CisKKyAgICB2b2lkIHB1dChUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IpCisgICAgeworICAgICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworCisgICAgICAgIGlmIChtX3Bv
b2wuc2l6ZSgpID09IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJh
dG9yKG1fcG9vbFswXS5zZWNvbmQpOworICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fcG9vbC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMu
dGFrZShpdGVyYXRvciksIGl0ZXJhdG9yKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OworCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRv
bWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5OworICAgIHR5cGVkZWYgVmVjdG9y
PEVudHJ5LCBjYXBhY2l0eT4gUG9vbDsKKyAgICBQb29sIG1fcG9vbDsKKyAgICBIYXNoTWFwPFRl
eHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKworICAg
IGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJh
dG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ODI0ZTY0MThm
NDI4MmIzZjlkMzUxZTU1MjBjNWRmY2MyYmEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDkyOSBAQAorLyoK
KyAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorCisj
aW5jbHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCisjaW5jbHVkZSAiVVRleHRQcm92
aWRlckxhdGluMS5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgorCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJldHRlciBuYW1lCisjZGVmaW5l
IEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkpCisKK25hbWVz
cGFjZSBXVEYgeworCisvLyBJdGVyYXRvciBpbml0aWFsaXphdGlvbgorCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkpCit7CisgICAg
VUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJr
X29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJl
YWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1
cyk7CisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCisjaWYgIVBMQVRGT1JNKElPUykKKworc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3Qg
Y2hhciogYnJlYWtSdWxlcykKK3sKKyAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKKyAgICBV
RXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RybGVuKGJyZWFrUnVsZXMpOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0g
U3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnJlYWtSdWxlcyksIGxl
bmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3BlblJ1
bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZv
cGVuU3RhdHVzKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1
cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjogJXMgKCVkKSIsIHVfZXJy
b3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9
CisKKyNlbmRpZgorCisKKy8vIEl0ZXJhdG9yIHRleHQgc2V0dGluZworCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcmF0
b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAg
ICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKKyAgICAgICAgdGV4dExvY2FsLnRleHQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAgICAgICAgdGV4dExvY2FsLnRleHQuZXh0cmFTaXplID0g
c2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOworICAgICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0cmEg
PSB0ZXh0TG9jYWwuYnVmZmVyOworCisgICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0aW4xVVRleHRQcm92aWRl
cigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCAmb3Bl
blN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9w
ZW5TdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVi
cmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciks
IHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3Rh
dHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRo
IHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKworICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9y
KSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksICZzZXRUZXh0U3RhdHVz
KTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAmaXRlcmF0b3I7Cit9CisKK3N0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICBpZiAoc3Ry
aW5nLmlzOEJpdCgpKSB7CisgICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7CisgICAg
ICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7CisgICAgICAgIHRleHRMb2Nh
bC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKKyAgICAgICAgdGV4
dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKKworICAgICAgICBVRXJyb3JD
b2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFVUZXh0KiB0ZXh0ID0gb3Bl
bkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgsICZvcGVuU3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
ciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdXRleHRf
Y2xvc2UodGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVVRleHQgdGV4dExvY2FsID0gVVRF
WFRfSU5JVElBTElaRVI7CisKKyAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0
UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQi
LCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAg
ICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJr
X3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0
ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1
cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBz
dGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CisgICAgfQorCisgICAgcmV0
dXJuICZpdGVyYXRvcjsKK30KKworCisvLyBTdGF0aWMgaXRlcmF0b3JzCisKK1RleHRCcmVha0l0
ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgaWYgKCFzdGF0aWNXb3JkQnJlYWtJdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9y
KCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciA9IGluaXRp
YWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKKyAgICBpZiAoIXN0YXRpY1NlbnRlbmNlQnJl
YWtJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4
dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Cit9CisK
K1RleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8gVGhpcyBydWxlIHNldCBpcyBiYXNl
ZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2YgSUNVIDQuMAorICAgIC8vIDxo
dHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3MvcmVsZWFzZS00
LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KKyAgICAvLyBUaGUgbWFqb3IgZGlmZmVy
ZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVkIGJlbG93OgorICAgIC8vICog
UmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gU3BhY2luZ01hcmt9XScgd2l0
aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9IC0gJEV4dGVuZF0nIGZvciBJ
Q1UgMy44IG9yIGVhcmxpZXI7CisgICAgLy8gKiBSZW1vdmVkIHJ1bGVzIHRoYXQgcHJldmVudCBh
IGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJhY3RlcnMgKEJ1ZyAyNDM0Mik7
CisgICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3Zpbmcg
YWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBleGNlcHQgVGFtaWwgKEJ1ZyAx
NTc5MCksIGFuZDsKKyAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBm
cm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2FyYSB2b2ljZWQgbWFy
a3MuCisgICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwgaW5kaWNhdG9yIHN5bWJvbHMu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9CisgICAgICAgICIkQ1IgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgorICAgICAgICAiJExGICAgICAgPSBb
XFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKKyAgICAgICAgIiRDb250cm9sID0g
W1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1dOyIKKyAgICAgICAgIiRWb2lj
ZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiIC8vIEphcGFuZXNlIGhhbGYtd2lkdGgga2F0YWth
bmEgdm9pY2VkIG1hcmtzCisgICAgICAgICIkRXh0ZW5kICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rl
cl9CcmVhayA9IEV4dGVuZH0gJFZvaWNlTWFya3MgLSBbXFx1MEUzMCBcXHUwRTMyIFxcdTBFNDUg
XFx1MEVCMCBcXHUwRUIyXV07IgorICAgICAgICAiJFNwYWNpbmdNYXJrID0gW1tcXHB7R2VuZXJh
bF9DYXRlZ29yeSA9IFNwYWNpbmcgTWFya31dIC0gJEV4dGVuZF07IgorICAgICAgICAiJEwgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMfV07IgorICAgICAgICAiJFYgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBWfV07IgorICAgICAgICAiJFQgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBUfV07IgorICAgICAgICAiJExWICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVn1dOyIKKyAgICAgICAgIiRMVlQg
ICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZUfV07IgorICAgICAgICAiJEhp
bjAgICAgPSBbXFx1MDkwNS1cXHUwOTM5XTsiIC8vIERldmFuYWdhcmkgTGV0dGVyIEEsLi4uLEhh
CisgICAgICAgICIkSGluViAgICA9IFxcdTA5NEQ7IiAvLyBEZXZhbmFnYXJpIFNpZ24gVmlyYW1h
CisgICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5MzldOyIgLy8gRGV2YW5hZ2FyaSBM
ZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkQmVuMCAgICA9IFtcXHUwOTg1LVxcdTA5QjldOyIg
Ly8gQmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRCZW5WICAgID0gXFx1MDlDRDsi
IC8vIEJlbmdhbGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1
MDlCOV07IiAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRQYW4wICAgID0g
W1xcdTBBMDUtXFx1MEEzOV07IiAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAg
IiRQYW5WICAgID0gXFx1MEE0RDsiIC8vIEd1cm11a2hpIFNpZ24gVmlyYW1hCisgICAgICAgICIk
UGFuMSAgICA9IFtcXHUwQTE1LVxcdTBBMzldOyIgLy8gR3VybXVraGkgTGV0dGVyIEthLC4uLixI
YQorICAgICAgICAiJEd1ajAgICAgPSBbXFx1MEE4NS1cXHUwQUI5XTsiIC8vIEd1amFyYXRpIExl
dHRlciBBLC4uLixIYQorICAgICAgICAiJEd1alYgICAgPSBcXHUwQUNEOyIgLy8gR3VqYXJhdGkg
U2lnbiBWaXJhbWEKKyAgICAgICAgIiRHdWoxICAgID0gW1xcdTBBOTUtXFx1MEFCOV07IiAvLyBH
dWphcmF0aSBMZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkT3JpMCAgICA9IFtcXHUwQjA1LVxc
dTBCMzldOyIgLy8gT3JpeWEgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkT3JpViAgICA9IFxc
dTBCNEQ7IiAvLyBPcml5YSBTaWduIFZpcmFtYQorICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIx
NS1cXHUwQjM5XTsiIC8vIE9yaXlhIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRUZWwwICAg
ID0gW1xcdTBDMDUtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCisgICAgICAg
ICIkVGVsViAgICA9IFxcdTBDNEQ7IiAvLyBUZWx1Z3UgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRU
ZWwxICAgID0gW1xcdTBDMTQtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEthLC4uLixIYQor
ICAgICAgICAiJEthbjAgICAgPSBbXFx1MEM4NS1cXHUwQ0I5XTsiIC8vIEthbm5hZGEgTGV0dGVy
IEEsLi4uLEhhCisgICAgICAgICIkS2FuViAgICA9IFxcdTBDQ0Q7IiAvLyBLYW5uYWRhIFNpZ24g
VmlyYW1hCisgICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1LVxcdTBDQjldOyIgLy8gS2FubmFk
YSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRNYWwwICAgID0gW1xcdTBEMDUtXFx1MEQzOV07
IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkTWFsViAgICA9IFxcdTBE
NEQ7IiAvLyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKKyAgICAgICAgIiRNYWwxICAgID0gW1xcdTBE
MTUtXFx1MEQzOV07IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkUkkg
ICAgICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRp
Y2F0b3JzCisgICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7IiAvLyBaZXJvIHdpZHRoIGpvaW5l
cgorICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgLy8gRW1vamktc3R5bGUgdmFyaWF0
aW9uIHNlbGVjdG9yCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkRW1v
amlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0Njkg
XFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBa
V0ogc2VxdWVuY2VzCisgICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBc
XHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAw
MUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxV
MDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0Nzgg
XFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0
ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAw
MUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxV
MDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThd
IDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKKyNlbHNlCisgICAg
ICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxV
MDAwMUY0OEJdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCisg
ICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFG
Mzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAw
MDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxc
VTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgx
LVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFG
NTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAw
MDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0
aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZW5kaWYKKyAgICAgICAgIiRFbW9qaU1v
ZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIgLy8gRml0enBhdHJpY2sgbW9kaWZpZXJz
CisgICAgICAgICIhIWNoYWluOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAg
ICAgIiEhUklOb0NoYWluOyIKKyNlbmRpZgorICAgICAgICAiISFmb3J3YXJkOyIKKyAgICAgICAg
IiRDUiAkTEY7IgorICAgICAgICAiJEwgKCRMIHwgJFYgfCAkTFYgfCAkTFZUKTsiCisgICAgICAg
ICIoJExWIHwgJFYpICgkViB8ICRUKTsiCisgICAgICAgICIoJExWVCB8ICRUKSAkVDsiCisjaWYg
QURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkUkkgJFJJICRFeHRlbmQqIC8gJFJJ
OyIKKyAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCo7IgorICAgICAgICAiW14kQ29udHJvbCAkQ1Ig
JExGXSAkRXh0ZW5kOyIKKyAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJr
OyIKKyNlbHNlCisgICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRFeHRlbmQ7IgorICAgICAg
ICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7IgorICAgICAgICAiJFJJICRSSSAv
ICRSSTsiCisgICAgICAgICIkUkkgJFJJOyIKKyNlbmRpZgorICAgICAgICAiJEhpbjAgJEhpblYg
JEhpbjE7IiAvLyBEZXZhbmFnYXJpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRCZW4wICRC
ZW5WICRCZW4xOyIgLy8gQmVuZ2FsaSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkUGFuMCAk
UGFuViAkUGFuMTsiIC8vIEd1cm11a2hpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRHdWow
ICRHdWpWICRHdWoxOyIgLy8gR3VqYXJhdGkgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE9y
aTAgJE9yaVYgJE9yaTE7IiAvLyBPcml5YSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkVGVs
MCAkVGVsViAkVGVsMTsiIC8vIFRlbHVndSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkS2Fu
MCAkS2FuViAkS2FuMTsiIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE1h
bDAgJE1hbFYgJE1hbDE7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAi
JFpXSiAkRW1vamlGb3JTZXFzOyIgLy8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNl
cworICAgICAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IiAvLyBEb24n
dCBicmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBz
ZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCisgICAgICAgICIhIXJldmVyc2U7Igor
ICAgICAgICAiJExGICRDUjsiCisgICAgICAgICIoJEwgfCAkViB8ICRMViB8ICRMVlQpICRMOyIK
KyAgICAgICAgIigkViB8ICRUKSAoJExWIHwgJFYpOyIKKyAgICAgICAgIiRUICgkTFZUIHwgJFQp
OyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiRFeHRlbmQqICRSSSAk
UkkgLyAkRXh0ZW5kKiAkUkkgJFJJOyIKKyAgICAgICAgIiRFeHRlbmQqICRSSSAkUkk7IgorICAg
ICAgICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENSICRMRl07IgorICAgICAgICAiJFNwYWNp
bmdNYXJrIFteJENvbnRyb2wgJENSICRMRl07IgorI2Vsc2UKKyAgICAgICAgIiRFeHRlbmQgICAg
ICBbXiRDb250cm9sICRDUiAkTEZdOyIKKyAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9s
ICRDUiAkTEZdOyIKKyAgICAgICAgIiRSSSAkUkkgLyAkUkkgJFJJOyIKKyAgICAgICAgIiRSSSAk
Ukk7IgorI2VuZGlmCisgICAgICAgICIkSGluMSAkSGluViAkSGluMDsiIC8vIERldmFuYWdhcmkg
VmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRCZW4xICRCZW5WICRCZW4wOyIgLy8gQmVuZ2Fs
aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFBhbjEgJFBhblYgJFBhbjA7IiAvLyBHdXJt
dWtoaSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEd1ajEgJEd1alYgJEd1ajA7IiAvLyBH
dWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE9yaTEgJE9yaVYgJE9yaTA7IiAv
LyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFRlbDEgJFRlbFYgJFRlbDA7
IiAvLyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRLYW4xICRLYW5WICRLYW4w
OyIgLy8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE1hbDEgJE1hbFYgJE1h
bDA7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRFbW9qaUZvclNl
cXMgJFpXSjsiIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKKyAgICAgICAg
IiRFbW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0
d2VlbiByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFu
ZCBGaXR6cGF0cmljayBtb2RpZmllcgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAg
ICAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICAgICAiJFJJICRSSSs7IgorICAgICAgICAiWyRF
bW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIhIXNhZmVfZm9y
d2FyZDsiCisgICAgICAgICIkUkkgJFJJKzsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1v
amlWYXIgJEVtb2ppTW9kc10rOyI7CisjZWxzZQorICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlN
b2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIg
JEVtb2ppTW9kc10rOyIKKyAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKKyAgICAgICAgIiEhc2Fm
ZV9mb3J3YXJkOyI7CisjZW5kaWYKKyAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRp
Y0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoa1J1
bGVzKTsKKyNlbHNlIC8vIFBMQVRGT1JNKElPUykKKyAgICAvLyBVc2UgdGhlIHNwZWNpYWwgVGhh
aSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBsb2NhbGVzCisgICAgc3RhdGljIFRl
eHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQorCisgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY0N1cnNv
ck1vdmVtZW50SXRlcmF0b3IsIHN0cmluZyk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRl
eHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQoreworICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hh
cmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CisgICAgaWYgKCFpdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4
dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4
dExlbmd0aCk7Cit9CisKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7
CisKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS5wdXQoaXRlcmF0b3Ip
OworfQorCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9sb2d1ZSA9CisgICAgIiEhY2hhaW47
IgorICAgICIhIUxCQ01Ob0NoYWluOyIKKyAgICAiISFsb29rQWhlYWRIYXJkQnJlYWs7IjsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNCZWZvcmUgPQorICAgIC8vIGV4cGxp
Y2l0bHkgZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lvbnMgcHJpb3IgdG8gNDkgZG9uJ3Qg
c3VwcG9ydCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6CisgICAgIiRD
SiA9IFsiCisjaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJT
SU9OX01JTk9SX05VTSA+PSA5KQorICAgICI6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNl
X1N0YXJ0ZXI6IgorI2Vsc2UKKyAgICAiXFx1MzA0MVxcdTMwNDNcXHUzMDQ1XFx1MzA0N1xcdTMw
NDlcXHUzMDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4RVxcdTMwOTVcXHUzMDk2XFx1MzBB
MVxcdTMwQTNcXHUzMEE1XFx1MzBBNyIKKyAgICAiXFx1MzBBOVxcdTMwQzNcXHUzMEUzXFx1MzBF
NVxcdTMwRTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZDIgorICAgICJcXHUzMUYwXFx1MzFG
MVxcdTMxRjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2XFx1MzFGN1xcdTMxRjhcXHUzMUY5
XFx1MzFGQVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVcXHUzMUZGIgorICAgICJcXHVGRjY3
XFx1RkY2OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNcXHVGRjZEXFx1RkY2RVxcdUZGNkZc
XHVGRjcwIgorI2VuZGlmCisgICAgIl07IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNz
aWdubWVudHNDdXN0b21Mb29zZUNKSyA9CisgICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNd
OyIKKyAgICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxcdUZGMDFcXHVGRjFGXTsiCisgICAg
IiRJRF9TVUIgPSAnJzsiCisgICAgIiRJTl9TVUIgPSBbXFx1MjAyNVxcdTIwMjZdOyIKKyAgICAi
JElTX1NVQiA9IFtcXHUwMDNBXFx1MDAzQl07IgorICAgICIkTlNfU1VCID0gW1xcdTIwM0NcXHUy
MDQ3XFx1MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMw
QTBcXHUzMEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYxQlxcdUZGNjVdOyIKKyAgICAiJFBP
X1NVQiA9IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMwXFx1MjAzMlxcdTIwMzNcXHUyMTAz
XFx1RkYwNVxcdUZGRTBdOyIKKyAgICAiJFBSX1NVQiA9IFtcXHUwMDI0XFx1MDBBM1xcdTAwQTVc
XHUyMEFDXFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07IgorICAgICIkSURfQUREID0gWyRD
SiAkQkFfU1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICROU19TVUIgJFBPX1NVQiAkUFJfU1VC
XTsiCisgICAgIiROU19BREQgPSAnJzsiOworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3Np
Z25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLID0KKyAgICAiJEJBX1NVQiA9ICcnOyIKKyAgICAiJEVY
X1NVQiA9ICcnOyIKKyAgICAiJElEX1NVQiA9ICcnOyIKKyAgICAiJElOX1NVQiA9IFtcXHUyMDI1
XFx1MjAyNl07IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMDVc
XHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07IgorICAgICIkUE9fU1VCID0gJyc7
IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0gWyRDSiAkSU5fU1VCICROU19T
VUJdOyIKKyAgICAiJE5TX0FERCA9ICcnOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLID0KKyAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAx
M107IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSURf
U1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMUNc
XHUzMEEwXTsiCisgICAgIiRQT19TVUIgPSAnJzsiCisgICAgIiRQUl9TVUIgPSAnJzsiCisgICAg
IiRJRF9BREQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07IgorICAgICIkTlNfQUREID0gJyc7IjsK
Kworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksg
PQorICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VC
ID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIk
TlNfU1VCID0gJyc7IgorICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7Igor
ICAgICIkSURfQUREID0gWyRDSl07IgorICAgICIkTlNfQUREID0gJyc7IjsKKworc3RhdGljIGNv
bnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgPQorICAgICIkQkFfU1VC
ID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIk
SU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gJyc7Igor
ICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0g
Jyc7IgorICAgICIkTlNfQUREID0gWyRDSl07IjsKKworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tU3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSwor
I2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyAgICAgICAgdWF4MTRBc3Np
Z25tZW50c0N1c3RvbU5vcm1hbENKSworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVm
YXVsdE5vbkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdE5vbkNKSworCitzdGF0
aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVyID0KKyAgICAiJEFJID0gWzpMaW5l
QnJlYWsgPSBBbWJpZ3VvdXM6XTsiCisgICAgIiRBTCA9IFs6TGluZUJyZWFrID0gQWxwaGFiZXRp
YzpdOyIKKyAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJlYWtfQWZ0ZXI6XSAtICRCQV9TVUJd
OyIKKyAgICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19CZWZvcmU6XTsiCisgICAgIiRCSyA9
IFs6TGluZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07IgorICAgICIkQjIgPSBbOkxpbmVCcmVh
ayA9IEJyZWFrX0JvdGg6XTsiCisgICAgIiRDQiA9IFs6TGluZUJyZWFrID0gQ29udGluZ2VudF9C
cmVhazpdOyIKKyAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QdW5jdHVhdGlvbjpdOyIK
KyAgICAiJENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdfTWFyazpdOyIKKyAgICAiJENQID0g
WzpMaW5lQnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIKKyAgICAiJENSID0gWzpMaW5lQnJl
YWsgPSBDYXJyaWFnZV9SZXR1cm46XTsiCisgICAgIiRFWCA9IFtbOkxpbmVCcmVhayA9IEV4Y2xh
bWF0aW9uOl0gLSAkRVhfU1VCXTsiCisgICAgIiRHTCA9IFs6TGluZUJyZWFrID0gR2x1ZTpdOyIK
KyNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlO
T1JfTlVNID49IDkpCisgICAgIiRITCA9IFs6TGluZUJyZWFrID0gSGVicmV3X0xldHRlcjpdOyIK
KyNlbHNlCisgICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpMZXR0ZXI6XV07IgorI2VuZGlmCisg
ICAgIiRIWSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07IgorICAgICIkSDIgPSBbOkxpbmVCcmVh
ayA9IEgyOl07IgorICAgICIkSDMgPSBbOkxpbmVCcmVhayA9IEgzOl07IgorICAgICIkSUQgPSBb
W1tbOkxpbmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pdICRJRF9BRERdIC0gJElEX1NVQl07
IgorICAgICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFyYWJsZTpdIC0gJElOX1NVQl07Igor
ICAgICIkSVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1lcmljOl0gLSAkSVNfU1VCXTsiCisg
ICAgIiRKTCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCisgICAgIiRKViA9IFs6TGluZUJyZWFrID0g
SlY6XTsiCisgICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6XTsiCisgICAgIiRMRiA9IFs6TGlu
ZUJyZWFrID0gTGluZV9GZWVkOl07IgorICAgICIkTkwgPSBbOkxpbmVCcmVhayA9IE5leHRfTGlu
ZTpdOyIKKyAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBOb25zdGFydGVyOl0gLSAkQ0pdICRO
U19BRERdIC0gJE5TX1NVQl07IgorICAgICIkTlUgPSBbOkxpbmVCcmVhayA9IE51bWVyaWM6XTsi
CisgICAgIiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5jdHVhdGlvbjpdOyIKKyAgICAiJFBP
ID0gW1s6TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0gLSAkUE9fU1VCXTsiCisgICAgIiRQ
UiA9IFtbOkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0gLSAkUFJfU1VCXTsiCisgICAgIiRR
VSA9IFs6TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgorICAgICIkUkkgPSBbXFxVMDAwMUYxRTYt
XFxVMDAwMUYxRkZdOyIKKyAgICAiJFNBID0gWzpMaW5lQnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6
XTsiCisgICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9nYXRlOl07IgorICAgICIkU1AgPSBb
OkxpbmVCcmVhayA9IFNwYWNlOl07IgorICAgICIkU1kgPSBbOkxpbmVCcmVhayA9IEJyZWFrX1N5
bWJvbHM6XTsiCisgICAgIiRXSiA9IFs6TGluZUJyZWFrID0gV29yZF9Kb2luZXI6XTsiCisgICAg
IiRYWCA9IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKKyAgICAiJFpXID0gWzpMaW5lQnJlYWsg
PSBaV1NwYWNlOl07IgorICAgICIkWldKID0gXFx1MjAwRDsiCisgICAgIiRFbW9qaVZhciA9IFxc
dUZFMEY7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkRW1vamlGb3JTZXFz
ID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0
OEIgXFxVMDAwMUY1RThdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI2Rjkg
XFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAw
MDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxc
VTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4
IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFG
NDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAw
MDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxc
VTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4
XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZWxzZQorICAg
ICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAw
MUY0OEJdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1MjcwQyBc
XFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAxRjND
QSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAx
RjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUw
MDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBc
XFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0
RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIgLy8g
RW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycworI2VuZGlmCisgICAgIiRFbW9q
aU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIKKyAgICAiJGRpY3Rpb25hcnkgPSBb
OkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKKyAgICAiJEFMUGx1cyA9IFskQUwgJEFJ
ICRTQSAkU0cgJFhYXTsiCisgICAgIiRBTGNtID0gJEFMUGx1cyAkQ00qOyIKKyAgICAiJEJBY20g
PSAkQkEgJENNKjsiCisgICAgIiRCQmNtID0gJEJCICRDTSo7IgorICAgICIkQjJjbSA9ICRCMiAk
Q00qOyIKKyAgICAiJENMY20gPSAkQ0wgJENNKjsiCisgICAgIiRDUGNtID0gJENQICRDTSo7Igor
ICAgICIkRVhjbSA9ICRFWCAkQ00qOyIKKyAgICAiJEdMY20gPSAkR0wgJENNKjsiCisgICAgIiRI
TGNtID0gJEhMICRDTSo7IgorICAgICIkSFljbSA9ICRIWSAkQ00qOyIKKyAgICAiJEgyY20gPSAk
SDIgJENNKjsiCisgICAgIiRIM2NtID0gJEgzICRDTSo7IgorICAgICIkSURjbSA9ICRJRCAkQ00q
OyIKKyAgICAiJElOY20gPSAkSU4gJENNKjsiCisgICAgIiRJU2NtID0gJElTICRDTSo7IgorICAg
ICIkSkxjbSA9ICRKTCAkQ00qOyIKKyAgICAiJEpWY20gPSAkSlYgJENNKjsiCisgICAgIiRKVGNt
ID0gJEpUICRDTSo7IgorICAgICIkTlNjbSA9ICROUyAkQ00qOyIKKyAgICAiJE5VY20gPSAkTlUg
JENNKjsiCisgICAgIiRPUGNtID0gJE9QICRDTSo7IgorICAgICIkUE9jbSA9ICRQTyAkQ00qOyIK
KyAgICAiJFBSY20gPSAkUFIgJENNKjsiCisgICAgIiRRVWNtID0gJFFVICRDTSo7IgorICAgICIk
UkljbSA9ICRRVSAkQ00qOyIKKyAgICAiJFNZY20gPSAkU1kgJENNKjsiCisgICAgIiRXSmNtID0g
JFdKICRDTSo7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0Rm9yd2FyZCA9CisgICAgIiEh
Zm9yd2FyZDsiCisgICAgIiRDQU5fQ00gPSBbXiRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07
IgorICAgICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKKyAgICAi
JEFMX0ZPTExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCisgICAgIiRBTF9G
T0xMT1dfQ00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kgJFdKICRHTCAkT1AgJFFVICRCQSAk
SFkgJE5TICRJTiAkTlUgJEFMUGx1c107IgorICAgICIkQUxfRk9MTE9XID0gWyRBTF9GT0xMT1df
Tk9DTSAkQUxfRk9MTE9XX0NNXTsiCisgICAgIiRMQjRCcmVha3MgPSBbJEJLICRDUiAkTEYgJE5M
XTsiCisgICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1IgJExGICROTF07IgorICAgICIkTEI4
QnJlYWtzID0gWyRMQjRCcmVha3MgJFpXXTsiCisgICAgIiRMQjhOb25CcmVha3MgPSBbWyRMQjRO
b25CcmVha3NdIC0gWyRaV11dOyIKKyAgICAiJExCMThOb25CcmVha3MgPSBbJExCOE5vbkJyZWFr
cyAtIFskU1BdXTsiCisgICAgIiRMQjE4QnJlYWtzID0gWyRMQjhCcmVha3MgJFNQXTsiCisgICAg
IiRMQjIwTm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0gJENCXTsiCisgICAgIiRBTFBsdXMg
JENNKzsiCisgICAgIiRCQSAkQ00rOyIKKyAgICAiJEJCICRDTSs7IgorICAgICIkQjIgJENNKzsi
CisgICAgIiRDTCAkQ00rOyIKKyAgICAiJENQICRDTSs7IgorICAgICIkRVggJENNKzsiCisgICAg
IiRHTCAkQ00rOyIKKyAgICAiJEhMICRDTSs7IgorICAgICIkSFkgJENNKzsiCisgICAgIiRIMiAk
Q00rOyIKKyAgICAiJEgzICRDTSs7IgorICAgICIkSUQgJENNKzsiCisgICAgIiRJTiAkQ00rOyIK
KyAgICAiJElTICRDTSs7IgorICAgICIkSkwgJENNKzsiCisgICAgIiRKViAkQ00rOyIKKyAgICAi
JEpUICRDTSs7IgorICAgICIkTlMgJENNKzsiCisgICAgIiROVSAkQ00rOyIKKyAgICAiJE9QICRD
TSs7IgorICAgICIkUE8gJENNKzsiCisgICAgIiRQUiAkQ00rOyIKKyAgICAiJFFVICRDTSs7Igor
ICAgICIkU1kgJENNKzsiCisgICAgIiRXSiAkQ00rOyIKKyAgICAiJENSICRMRiB7MTAwfTsiCisg
ICAgIiRMQjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07IgorICAgICIkQ0FOX0NNICRDTSog
JExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRDTSsgJExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRM
QjROb25CcmVha3MgWyRTUCAkWlddOyIKKyAgICAiJENBTl9DTSAkQ00qIFskU1AgJFpXXTsiCisg
ICAgIiRDTSsgWyRTUCAkWlddOyIKKyAgICAiJEVtb2ppRm9yU2VxcyAkRW1vamlWYXI/ICRFbW9q
aU1vZHM/ICRaV0ogJEVtb2ppRm9yU2VxczsiCisgICAgIiRDQU5fQ00gJENNKzsiCisgICAgIiRD
TSs7IgorICAgICIkQ0FOX0NNICRDTSogJFdKY207IgorICAgICIkTEI4Tm9uQnJlYWtzICRXSmNt
OyIKKyAgICAiJENNKyAkV0pjbTsiCisgICAgIiRXSmNtICRDQU5UX0NNOyIKKyAgICAiJFdKY20g
JENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENB
TlRfQ007IgorICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRTUCAkQkEgJEhZXV0gJENNKiAkR0xj
bTsiCisgICAgIiRDTSsgR0xjbTsiCisgICAgIiRMQjhOb25CcmVha3MgJENMOyIKKyAgICAiJENB
Tl9DTSAkQ00qICRDTDsiCisgICAgIiRDTSsgJENMOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkQ1A7
IgorICAgICIkQ0FOX0NNICRDTSogJENQOyIKKyAgICAiJENNKyAkQ1A7IgorICAgICIkTEI4Tm9u
QnJlYWtzICRFWDsiCisgICAgIiRDQU5fQ00gJENNKiAkRVg7IgorICAgICIkQ00rICRFWDsiCisg
ICAgIiRMQjhOb25CcmVha3MgJElTOyIKKyAgICAiJENBTl9DTSAkQ00qICRJUzsiCisgICAgIiRD
TSsgJElTOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkU1k7IgorICAgICIkQ0FOX0NNICRDTSogJFNZ
OyIKKyAgICAiJENNKyAkU1k7IgorICAgICIkT1BjbSAkU1AqICRDQU5fQ00gJENNKjsiCisgICAg
IiRPUGNtICRTUCogJENBTlRfQ007IgorICAgICIkT1BjbSAkU1ArICRDTSsgJEFMX0ZPTExPVz87
IgorICAgICIkUVVjbSAkU1AqICRPUGNtOyIKKyAgICAiKCRDTGNtIHwgJENQY20pICRTUCogJE5T
Y207IgorICAgICIkQjJjbSAkU1AqICRCMmNtOyIKKyAgICAiJExCMThOb25CcmVha3MgJENNKiAk
UVVjbTsiCisgICAgIiRDTSsgJFFVY207IgorICAgICIkUVVjbSAuPzsiCisgICAgIiRRVWNtICRM
QjE4Tm9uQnJlYWtzICRDTSo7IgorICAgICIkTEIyME5vbkJyZWFrcyAkQ00qICgkQkFjbSB8ICRI
WWNtIHwgJE5TY20pOyAiCisgICAgIiRCQmNtIFteJENCXTsiCisgICAgIiRCQmNtICRMQjIwTm9u
QnJlYWtzICRDTSo7IgorICAgICIkSExjbSAoJEhZY20gfCAkQkFjbSkgW14kQ0JdPzsiCisgICAg
IigkQUxjbSB8ICRITGNtKSAkSU5jbTsiCisgICAgIiRDTSsgJElOY207IgorICAgICIkSURjbSAk
SU5jbTsiCisgICAgIiRJTmNtICRJTmNtOyIKKyAgICAiJE5VY20gJElOY207IgorICAgICIkSURj
bSAkUE9jbTsiCisgICAgIiRBTGNtICROVWNtOyIKKyAgICAiJEhMY20gJE5VY207IgorICAgICIk
Q00rICROVWNtOyIKKyAgICAiJE5VY20gJEFMY207IgorICAgICIkTlVjbSAkSExjbTsiCisgICAg
IiRQUmNtICRJRGNtOyIKKyAgICAiJFBSY20gKCRBTGNtIHwgJEhMY20pOyIKKyAgICAiJFBPY20g
KCRBTGNtIHwgJEhMY20pOyIKKyAgICAiKCRQUmNtIHwgJFBPY20pPyAoJE9QY20gfCAkSFljbSk/
ICROVWNtICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENMY20gfCAkQ1BjbSk/ICgkUFJjbSB8
ICRQT2NtKT87IgorICAgICIkSkxjbSAoJEpMY20gfCAkSlZjbSB8ICRIMmNtIHwgJEgzY20pOyIK
KyAgICAiKCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNtKTsiCisgICAgIigkSlRjbSB8ICRI
M2NtKSAkSlRjbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KSAkSU5jbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAk
UE9jbTsiCisgICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KTsiCisgICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAkSExjbSk7IgorICAgICIkQ00rICgk
QUxjbSB8ICRITGNtKTsiCisgICAgIiRJU2NtICgkQUxjbSB8ICRITGNtKTsiCisgICAgIigkQUxj
bSB8ICRITGNtIHwgJE5VY20pICRPUGNtOyIKKyAgICAiJENNKyAkT1BjbTsiCisgICAgIiRDUGNt
ICgkQUxjbSB8ICRITGNtIHwgJE5VY20pOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJFJJY20gJFJJY207IgorI2VuZGlmCisgICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFy
PyAkRW1vamlNb2RzOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFJldmVyc2UgPQorICAg
ICIhIXJldmVyc2U7IgorICAgICIkQ00rICRBTFBsdXM7IgorICAgICIkQ00rICRCQTsiCisgICAg
IiRDTSsgJEJCOyIKKyAgICAiJENNKyAkQjI7IgorICAgICIkQ00rICRDTDsiCisgICAgIiRDTSsg
JENQOyIKKyAgICAiJENNKyAkRVg7IgorICAgICIkQ00rICRHTDsiCisgICAgIiRDTSsgJEhMOyIK
KyAgICAiJENNKyAkSFk7IgorICAgICIkQ00rICRIMjsiCisgICAgIiRDTSsgJEgzOyIKKyAgICAi
JENNKyAkSUQ7IgorICAgICIkQ00rICRJTjsiCisgICAgIiRDTSsgJElTOyIKKyAgICAiJENNKyAk
Skw7IgorICAgICIkQ00rICRKVjsiCisgICAgIiRDTSsgJEpUOyIKKyAgICAiJENNKyAkTlM7Igor
ICAgICIkQ00rICROVTsiCisgICAgIiRDTSsgJE9QOyIKKyAgICAiJENNKyAkUE87IgorICAgICIk
Q00rICRQUjsiCisgICAgIiRDTSsgJFFVOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJENNKyAkUkk7IgorI2VuZGlmCisgICAgIiRDTSsgJFNZOyIKKyAgICAiJENNKyAkV0o7
IgorICAgICIkQ00rOyIKKyAgICAiJEFMX0ZPTExPVyAkQ00rIC8gKFskQksgJENSICRMRiAkTkwg
JFpXIHtlb2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRDTSogKFteJE9QICRDTSAkU1BdIHwg
WyRBTCB7ZW9mfV0pKTsiCisgICAgIlskUFJdIC8gJENNKyBbJEJLICRDUiAkTEYgJE5MICRaVyAk
U1Age2VvZn1dOyIKKyAgICAiJExCNEJyZWFrcyBbJExCNE5vbkJyZWFrcy0kQ01dOyIKKyAgICAi
JExCNEJyZWFrcyAkQ00rICRDQU5fQ007IgorICAgICIkTEYgJENSOyIKKyAgICAiWyRTUCAkWldd
IFskTEI0Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJFNQICRaV10gJENNKyAkQ0FOX0NNOyIKKyAg
ICAiJEVtb2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRFbW9qaVZhcj8gJEVtb2ppRm9yU2Vx
czsiCisgICAgIiRDTSsgJENBTl9DTTsiCisgICAgIiRDTSogJFdKICRDTSogJENBTl9DTTsiCisg
ICAgIiRDTSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIkQ0FOVF9DTSAkQ00qICRX
SjsiCisgICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCisgICAgIiRDTSogJEdMICRDTSogWyRM
QjhOb25CcmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKKyAgICAiJENBTlRfQ00gJENNKiAkR0w7
IgorICAgICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgorICAgICIkQ0wgJENNKyAkQ0FOX0NNOyIK
KyAgICAiJENQICRDTSsgJENBTl9DTTsiCisgICAgIiRFWCAkQ00rICRDQU5fQ007IgorICAgICIk
SVMgJENNKyAkQ0FOX0NNOyIKKyAgICAiJFNZICRDTSsgJENBTl9DTTsiCisgICAgIiRDTCBbJExC
OE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJENQIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIk
RVggWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRJUyBbJExCOE5vbkJyZWFrcy0kQ01dOyIK
KyAgICAiJFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJENMICRDUCAkRVggJElTICRT
WV0gJENNKyAkU1ArICRDTSogJE9QOyAiCisgICAgIiRDTSogJENBTl9DTSAkU1AqICRDTSogJE9Q
OyIKKyAgICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCisgICAgIiRBTF9GT0xMT1c/ICRDTSsg
JFNQICRTUCogJENNKiAkT1A7IgorICAgICIkQUxfRk9MTE9XX05PQ00gJENNKyAkU1ArICRDTSog
JE9QOyIKKyAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsgJFNQKyAkQ00qICRPUDsiCisgICAg
IiRTWSAkQ00gJFNQKyAkT1A7IgorICAgICIkQ00qICRPUCAkU1AqICRDTSogJFFVOyIKKyAgICAi
JENNKiAkTlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAgICAiJENNKiAkQjIgJFNQKiAkQ00q
ICRCMjsiCisgICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsiCisgICAgIiRDTSogJFFVICRMQjE4
Tm9uQnJlYWtzOyIKKyAgICAiJENNKiAkQ0FOX0NNICRDTSogJFFVOyIKKyAgICAiJENBTlRfQ00g
JENNKiAkUVU7IgorICAgICIkQ00qICgkQkEgfCAkSFkgfCAkTlMpICRDTSogWyRMQjIwTm9uQnJl
YWtzLSRDTV07IgorICAgICIkQ00qIFskTEIyME5vbkJyZWFrcy0kQ01dICRDTSogJEJCOyIKKyAg
ICAiW14kQ0JdICRDTSogJEJCOyIKKyAgICAiW14kQ0JdICRDTSogKCRIWSB8ICRCQSkgJENNKiAk
SEw7IgorICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCisgICAgIiRDTSogJElO
ICRDTSogJElEOyIKKyAgICAiJENNKiAkSU4gJENNKiAkSU47IgorICAgICIkQ00qICRJTiAkQ00q
ICROVTsiCisgICAgIiRDTSogJFBPICRDTSogJElEOyIKKyAgICAiJENNKiAkTlUgJENNKiAoJEFM
UGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICROVTsiCisgICAg
IiRDTSogJElEICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUFI7
IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQTzsiCisgICAgIigkQ00qICgkUFIg
fCAkUE8pKT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAoJE5VIHwgJElTIHwgJFNZKSkqICRD
TSogJE5VICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQUiB8ICRQTykpPzsiCisgICAgIiRD
TSogKCRIMyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7IgorICAgICIkQ00qICgkSlQgfCAk
SlYpICRDTSogKCRIMiB8ICRKVik7IgorICAgICIkQ00qICRKVCAkQ00qICgkSDMgfCAkSlQpOyIK
KyAgICAiJENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCisgICAg
IiRDTSogJFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCk7IgorICAgICIkQ00q
ICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFM
UGx1cyB8ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMKSAkQ00qICRJUzsiCisgICAgIiRDTSogJE9QICRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUp
OyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkgJENNKiAkQ1A7IgorI2lmIEFERElU
SU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkQ00qICRSSSAkQ00qICRSSTsiCisjZW5kaWYKKyAg
ICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IjsKKworc3RhdGljIGNvbnN0
IGNoYXIqIHVheDE0U2FmZUZvcndhcmQgPQorICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgIlsk
Q00gJE9QICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAkU1AgJGRpY3Rpb25hcnldKyBbXiRD
TSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRkaWN0aW9uYXJ5XTsiCisgICAgIiRk
aWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFNhZmVS
ZXZlcnNlID0KKyAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICIkQ00rIFteJENNICRCSyAkQ1Ig
JExGICROTCAkWlcgJFNQXTsiCisgICAgIiRDTSsgJFNQIC8gLjsiCisgICAgIiRTUCsgJENNKiAk
T1A7IgorICAgICIkU1ArICRDTSogJFFVOyIKKyAgICAiJFNQKyAkQ00qICgkQ0wgfCAkQ1ApOyIK
KyAgICAiJFNQKyAkQ00qICRCMjsiCisgICAgIiRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7Igor
ICAgICIoJENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIKKyAgICAiKCRDTCB8ICRDUCkgJENN
KiAoJE5VIHwgJElTIHwgJFNZKTsiCisgICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisK
K3N0YXRpYyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMoTGluZUJyZWFrSXRlcmF0
b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgU3RyaW5nQnVpbGRlciBydWxlc0J1aWxk
ZXI7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFByb2xvZ3VlKTsKKyAgICBydWxlc0J1
aWxkZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUpOworICAgIHN3aXRjaCAobW9kZSkg
eworICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6CisgICAgICAgIHJ1bGVzQnVp
bGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyA6IHVh
eDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgorICAgICAgICBydWxlc0J1aWxk
ZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLIDogdWF4MTRB
c3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFw
cGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxDSksgOiB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5l
QnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJ1bGVz
QnVpbGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVyKTsKKyAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKHVheDE0Rm9yd2FyZCk7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFJldmVy
c2UpOworICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRTYWZlRm9yd2FyZCk7CisgICAgcnVs
ZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsKKyAgICByZXR1cm4gcnVsZXNCdWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisKKy8vIFJlY29nbml6ZSBCQ1A0NyBjb21wbGlhbnQgcHJpbWFy
eSBsYW5ndWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tvJworLy8gKGluIGFueSBjb21iaW5h
dGlvbiBvZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBzdWJ0YWdzLiBEb24ndAorLy8g
cmVjb2duaXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6aG8nLCAnanBuJywgb3IgJ2tvcicg
c2luY2UgQkNQNDcKKy8vIHJlcXVpcmVzIHVzZSBvZiBzaG9ydGVzdCBsYW5ndWFnZSB0YWcuCiti
b29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQoreworICAgIHNpemVf
dCBsZW5ndGggPSBsb2NhbGUubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGMxID0gbG9jYWxlWzBdOworICAgIGF1dG8gYzIgPSBs
b2NhbGVbMV07CisgICAgYXV0byBjMyA9IGxlbmd0aCA9PSAyID8gMCA6IGxvY2FsZVsyXTsKKyAg
ICBpZiAoIWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycgfHwgYzMgPT0gJ0AnKSB7CisgICAg
ICAgIGlmIChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQorICAgICAgICAgICAgcmV0dXJuIGMyID09
ICdoJyB8fCBjMiA9PSAnSCc7CisgICAgICAgIGlmIChjMSA9PSAnaicgfHwgYzEgPT0gJ0onKQor
ICAgICAgICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9PSAnQSc7CisgICAgICAgIGlmIChj
MSA9PSAnaycgfHwgYzEgPT0gJ0snKQorICAgICAgICAgICAgcmV0dXJuIGMyID09ICdvJyB8fCBj
MiA9PSAnTyc7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgVUJyZWFrSXRlcmF0
b3IqIHVicmtJdGVyOworICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBib29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNFbXB0eSgpOworICAgIGlmIChtb2Rl
ID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICB1YnJrSXRlciA9IHVicmtf
b3BlbihVQlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQo
KSA6IGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAmb3BlblN0YXR1cyk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFVQYXJzZUVycm9yIHBhcnNlU3RhdHVzOworICAgICAgICBhdXRv
IHJ1bGVzID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMobW9kZSwgaXNDSkspOworICAgICAg
ICB1YnJrSXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1ZpZXcocnVsZXMpLnVwY29udmVydGVk
Q2hhcmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0
YXR1cyk7CisgICAgfQorICAgIC8vIGxvY2FsZSBjb21lcyBmcm9tIGEgd2ViIHBhZ2UgYW5kIGl0
IGNhbiBiZSBpbnZhbGlkLCBsZWFkaW5nIElDVQorICAgIC8vIHRvIGZhaWwsIGluIHdoaWNoIGNh
c2Ugd2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICBpZiAoIWxvY2FsZUlz
RW1wdHkgJiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIG9wZW5TdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgY3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKKyAgICB9CisKKyAg
ICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIExPR19FUlJPUigidWJya19v
cGVuIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJ
dGVyYXRvcio+KHVicmtJdGVyKTsKK30KKwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IpCit7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gcmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKKyAgICBB
U1NFUlQodWJya0l0ZXIpOworICAgIHVicmtfY2xvc2UodWJya0l0ZXIpOworICAgIGl0ZXJhdG9y
ID0gbnVsbHB0cjsKK30KKworc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yOworCitzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3YXBO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBlY3Rl
ZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQoreworICAgIHJldHVybiBXVEY6OndlYWtD
b21wYXJlQW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciwgZXhwZWN0ZWQs
IG5ld1ZhbHVlKTsKK30KKworTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBtX2l0
ZXJhdG9yID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKKworICAgIGJvb2wgY3Jl
YXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7CisgICAgaWYgKCFjcmVhdGVkSXRlcmF0
b3IpCisgICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNU
RVIpOworICAgIGlmICghbV9pdGVyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pdGVy
YXRvciA9IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRvciwgc3RyaW5nKTsKK30KKworTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IoKQoreworICAgIGlmICghY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKDAsIG1faXRlcmF0b3IpKQorICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0
X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7Cit9CisKKworLy8gSXRlcmF0b3Ig
aW1wbGVtZW5hdGlvbi4KKworaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKK30KKworaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX2xhc3QocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9CisKK2ludCB0ZXh0QnJlYWtOZXh0
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19uZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitpbnQgdGV4
dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVy
biB1YnJrX3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOworfQorCitpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciwgaW50IHBvcykKK3sKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zKTsKK30KKworaW50IHRleHRCcmVh
a0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCit7CisgICAg
cmV0dXJuIHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihp
dGVyYXRvciksIHBvcyk7Cit9CisKK2ludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19jdXJyZW50KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitib29sIGlzVGV4dEJyZWFrKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0aW9uKQoreworICAgIHJldHVybiB1
YnJrX2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9y
KSwgcG9zaXRpb24pOworfQorCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMo
cmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7CisgICAgcmV0dXJu
IHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisKK3Vuc2lnbmVkIG51bUdyYXBoZW1l
Q2x1c3RlcnMoY29uc3QgU3RyaW5nJiBzKQoreworICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9
IHMubGVuZ3RoKCk7CisgICAgCisgICAgaWYgKCFzdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVy
biAwOworCisgICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVy
IGlzIENSIExGCisgICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCisgICAg
ICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yIGl0KHMpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7
CisKKyAgICB1bnNpZ25lZCBudW0gPSAwOworICAgIHdoaWxlICh0ZXh0QnJlYWtOZXh0KGl0KSAh
PSBUZXh0QnJlYWtEb25lKQorICAgICAgICArK251bTsKKyAgICByZXR1cm4gbnVtOworfQorCit1
bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcm
IHMsIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCit7CisgICAgdW5zaWduZWQgc3RyaW5n
TGVuZ3RoID0gcy5sZW5ndGgoKTsKKworICAgIGlmICghc3RyaW5nTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1
c3RlciBpcyBDUiBMRgorICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQor
ICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJz
KTsKKworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7CisgICAgaWYg
KCFpdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVD
bHVzdGVycyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR3JhcGhlbWVDbHVz
dGVyczsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0QnJlYWtOZXh0KGl0KSA9PSBUZXh0QnJlYWtE
b25lKQorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKKyAgICB9CisgICAgcmV0dXJu
IHRleHRCcmVha0N1cnJlbnQoaXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTQ1MzQ2OGZiOGNjMjNk
NjNmYTJjM2EzNDg1MTYwNGI2NmI1ODAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9yX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0
b3JfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVGV4dEJyZWFr
SXRlcmF0b3I7CisKKy8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkg
dW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNx
dWlyZUxpbmVCcmVha0l0ZXJhdG9yLgorCitlbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCisgICAgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTRMb29zZSwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKKyAgICBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKK307CisKKy8vIFRoaXMgaXMgc2ltaWxh
ciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9zdCBjYXNlcywgYnV0IGlzIHN1Ympl
Y3QgdG8KKy8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBPbmUgbm90YWJsZSBleGFtcGxlIHdo
ZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVudAorLy8gZnJvbSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0
b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBidWcgMjQzNDIuCisvLyBVc2UgdGhp
cyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KK1dURl9F
WFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiB3b3Jk
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJ
dGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOworCitXVEZfRVhQT1JU
X1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29u
dGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUs
IGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7CitUZXh0QnJlYWtJdGVyYXRvciogb3BlbkxpbmVC
cmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVh
a0l0ZXJhdG9yKiYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0ZpcnN0KFRl
eHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0xhc3Qo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrTmV4
dChUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtQ
cmV2aW91cyhUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0
QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50
IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvcios
IGludCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFr
SXRlcmF0b3IqKTsKKworY29uc3QgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisKK2NsYXNz
IExhenlMaW5lQnJlYWtJdGVyYXRvciB7CitwdWJsaWM6CisgICAgTGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCisgICAgICAgICwgbV9jYWNoZWRQ
cmlvckNvbnRleHQobnVsbHB0cikKKyAgICAgICAgLCBtX21vZGUoTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTQpCisgICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKKyAgICAg
ICAgLCBtX2lzQ0pLKGZhbHNlKQorICAgIHsKKyAgICAgICAgcmVzZXRQcmlvckNvbnRleHQoKTsK
KyAgICB9CisKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKKyAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCisgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQorICAgICAgICAsIG1faXRlcmF0
b3IobnVsbHB0cikKKyAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQorICAg
ICAgICAsIG1fbW9kZShtb2RlKQorICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3Ro
KDApCisgICAgeworICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOworICAgICAgICBtX2lzQ0pL
ID0gaXNDSktMb2NhbGUobG9jYWxlKTsKKyAgICB9CisKKyAgICB+TGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgIH0KKworICAgIFN0cmluZyBzdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIGJvb2wgaXNMb29zZUNKS01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNExvb3NlOyB9CisKKyAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQp
ID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgp
OworICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07CisgICAgfQorCisgICAgVUNoYXIg
c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNT
RVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJh
dG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICByZXR1cm4gbV9w
cmlvckNvbnRleHRbMF07CisgICAgfQorCisgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIg
bGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3Jf
dW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIG1fcHJpb3JDb250ZXh0
WzBdID0gc2Vjb25kVG9MYXN0OworICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7Cisg
ICAgfQorCisgICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQoVUNoYXIgbGFzdCkKKyAgICB7Cisg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09
IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwor
ICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JDb250ZXh0WzFdOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7CisgICAgfQorCisgICAgdm9pZCByZXNldFByaW9yQ29u
dGV4dCgpCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1f
cHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2Nv
bnRleHRfbGVuZ3RoKTsKKyAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCA9IDA7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNv
bnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9s
ZW5ndGgpOworICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMV0pIHsKKyAgICAgICAgICAgICsr
cHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzBdKQor
ICAgICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgfQorCisgICAgLy8gT2J0YWluIHRleHQg
YnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0
ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKKyAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHBy
ZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFu
ZCB1c2luZworICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVt
cHR5LgorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNv
bnRleHRDYXBhY2l0eSk7CisgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlv
ckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBw
cmlvckNvbnRleHRMZW5ndGhdIDogMDsKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKG1fc3RyaW5nLCBt
X2xvY2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsIG1fbW9kZSwgbV9pc0NK
Syk7CisgICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dDsKKyAg
ICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gcHJpb3JDb250ZXh0TGVuZ3Ro
OworICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAhPSBtX2NhY2hlZFByaW9yQ29udGV4
dCB8fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgpIHsK
KyAgICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKG1fc3RyaW5nLCBtX2xv
Y2FsZSwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JDb250ZXh0
TGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKKyAgICB9CisK
KyAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVh
a0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsKKyAgICAg
ICAgbV9sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIG1faXRlcmF0b3IgPSBudWxscHRyOworICAg
ICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fbW9kZSA9IG1v
ZGU7CisgICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOworICAgICAgICBtX2Nh
Y2hlZFByaW9yQ29udGV4dExlbmd0aCA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9IDI7CisgICAgU3RyaW5nIG1f
c3RyaW5nOworICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKKyAgICBUZXh0QnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvcjsKKyAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQ7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKKyAgICB1bnNpZ25lZCBtX2NhY2hlZFBy
aW9yQ29udGV4dExlbmd0aDsKKyAgICBVQ2hhciBtX3ByaW9yQ29udGV4dFtwcmlvckNvbnRleHRD
YXBhY2l0eV07CisgICAgYm9vbCBtX2lzQ0pLOworfTsKKworLy8gSXRlcmF0ZXMgb3ZlciAiZXh0
ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCisvLyBOb3Rl
IHRoYXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBiZSBsZXNzIHNvcGhpc3RpY2F0ZWQg
LSBlLmcuIElDVSBwcmlvciB0bworLy8gdmVyc2lvbiA0LjAgb25seSBzdXBwb3J0cyAibGVnYWN5
IGdyYXBoZW1lIGNsdXN0ZXJzIi4KKy8vIFVzZSB0aGlzIGZvciBnZW5lcmFsIHRleHQgcHJvY2Vz
c2luZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KKworY2xhc3MgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcik7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCk7CisKKyAgICBvcGVyYXRv
ciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9CisKK3By
aXZhdGU6CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3I7Cit9OworCisvLyBDb3Vu
dHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4gQSBzdXJyb2dhdGUgcGFpciBvciBh
IHNlcXVlbmNlCisvLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hhcmFjdGVyIGFuZCBmb2xsb3dpbmcg
Y29tYmluaW5nIGNoYXJhY3RlcnMgaXMKKy8vIGNvdW50ZWQgYXMgMSBncmFwaGVtZSBjbHVzdGVy
LgorV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3Qg
U3RyaW5nJik7CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxs
IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworLy8gdGhlIHNwZWNpZmllZCBncmFwaGVtZSBjbHVz
dGVyIGxlbmd0aC4KK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCk7CisKK30KKwordXNp
bmcgV1RGOjpMaW5lQnJlYWtJdGVyYXRvck1vZGU7Cit1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0OwordXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7Cit1c2luZyBX
VEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OlRleHRCcmVh
a0RvbmU7Cit1c2luZyBXVEY6OlRleHRCcmVha0l0ZXJhdG9yOworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWNkNDU1OWRkNmNiNWUwOWNiN2NlNDNmYThhNmFkNjkyOTE2N2YwMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVV9oCisKKy8vIEZJ
WE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9jYWxlcyBmb3IgSUNVLCBub3QganVzdCBmb3Ig
dGV4dCBicmVha2luZywKKy8vIHRoaXMgZmlsZSBhbmQgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRp
b24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCk7Citjb25zdCBj
aGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKKworfQorCit1c2luZyBXVEY6OmN1cnJl
bnRTZWFyY2hMb2NhbGVJRDsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwNTY4NjlmMTQ1ZGQ3NjgxZGZlYmI2ODg4OTViYzE5NTUxZTEzYmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVRWZsLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFs
cCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9G
VVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIq
IGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lz
dGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRUZXh0
QnJlYWtMb2NhbGVJRCgpCit7CisgICAgcmV0dXJuICJlbl91cyI7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VH
dGsuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVlNWEwNWZhNDkxOTVmYjMwYmY2OWRlZDU2MmQ1NDNi
OGI2MTAxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQor
eworICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICIi
OworfQorCitjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQoreworICAgIC8v
IEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICJlbl91cyI7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzM4OGZkYmY3Y2E0OWJhNjU5ODk0Mzc3ZjJiMWM1NmFkYWQwZGVjYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCkBAIC0wLDAg
KzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRl
eHRQcm92aWRlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gUmVsb2NhdGUgcG9pbnRlciBmcm9tIHNvdXJjZSBp
bnRvIGRlc3RpbmF0aW9uIGFzIHJlcXVpcmVkLgorc3RhdGljIGlubGluZSB2b2lkIGZpeFBvaW50
ZXIoY29uc3QgVVRleHQqIHNvdXJjZSwgVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiYg
cG9pbnRlcikKK3sKKyAgICBpZiAocG9pbnRlciA+PSBzb3VyY2UtPnBFeHRyYSAmJiBwb2ludGVy
IDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHNvdXJjZS0+cEV4dHJhKSArIHNvdXJjZS0+ZXh0cmFTaXpl
KSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgZXh0cmEgYnVmZmVyLgor
ICAgICAgICBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uLT5wRXh0cmEp
ICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAtIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihzb3VyY2UtPnBFeHRyYSkpOworICAgIH0gZWxzZSBpZiAocG9pbnRlciA+PSBzb3Vy
Y2UgJiYgcG9pbnRlciA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkgKyBz
b3VyY2UtPnNpemVPZlN0cnVjdCkgeworICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291
cmNlIHRleHQgc3RydWN0dXJlLCBidXQgbm90IHNvdXJjZSBleHRyYSBidWZmZXIuCisgICAgICAg
IHBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0aW5hdGlvbikgKyAoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oc291cmNlKSk7CisgICAgfQorfQorCitVVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRl
c3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBz
dGF0dXMpCit7CisgICAgQVNTRVJUX1VOVVNFRChkZWVwLCAhZGVlcCk7CisgICAgaWYgKFVfRkFJ
TFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaW50MzJfdCBleHRy
YVNpemUgPSBzb3VyY2UtPmV4dHJhU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiA9IHV0ZXh0X3NldHVw
KGRlc3RpbmF0aW9uLCBleHRyYVNpemUsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAgIHZvaWQqIGV4dHJhTmV3ID0g
ZGVzdGluYXRpb24tPnBFeHRyYTsKKyAgICBpbnQzMl90IGZsYWdzID0gZGVzdGluYXRpb24tPmZs
YWdzOworICAgIGludCBzaXplVG9Db3B5ID0gc3RkOjptaW4oc291cmNlLT5zaXplT2ZTdHJ1Y3Qs
IGRlc3RpbmF0aW9uLT5zaXplT2ZTdHJ1Y3QpOworICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291
cmNlLCBzaXplVG9Db3B5KTsKKyAgICBkZXN0aW5hdGlvbi0+cEV4dHJhID0gZXh0cmFOZXc7Cisg
ICAgZGVzdGluYXRpb24tPmZsYWdzID0gZmxhZ3M7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLT5w
RXh0cmEsIHNvdXJjZS0+cEV4dHJhLCBleHRyYVNpemUpOworICAgIGZpeFBvaW50ZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPmNvbnRleHQpOworICAgIGZpeFBvaW50ZXIoc291
cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnApOworICAgIGZpeFBvaW50ZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnEpOworICAgIEFTU0VSVCghZGVzdGluYXRpb24t
PnIpOworICAgIGNvbnN0IHZvaWQqIGNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4oZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMpOworICAgIGZpeFBvaW50ZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgY2h1bmtDb250ZW50cyk7CisgICAgZGVzdGluYXRpb24tPmNodW5rQ29u
dGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGNodW5rQ29udGVudHMpOworICAgIHJl
dHVybiBkZXN0aW5hdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwYWY5OTcyMzkwZGQwMWJjMjNl
YjAyZjZhY2Y5MmM1NDg5MzQ3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXIuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVVRleHRQcm92aWRlcl9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJfaAorCisjaW5jbHVk
ZSA8dW5pY29kZS91dGV4dC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworZW51bSBjbGFzcyBVVGV4
dFByb3ZpZGVyQ29udGV4dCB7CisgICAgTm9Db250ZXh0LAorICAgIFByaW9yQ29udGV4dCwKKyAg
ICBQcmltYXJ5Q29udGV4dAorfTsKKworaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHVUZXh0
UHJvdmlkZXJDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+YiB8fCBuYXRpdmVJbmRleCA+IHRleHQt
PmIpCisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQ7
CisgICAgaWYgKG5hdGl2ZUluZGV4ID09IHRleHQtPmIpCisgICAgICAgIHJldHVybiBmb3J3YXJk
ID8gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0IDogVVRleHRQcm92aWRlckNv
bnRleHQ6OlByaW9yQ29udGV4dDsKKyAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6OlBy
aW9yQ29udGV4dDsKK30KKworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0
UHJvdmlkZXIoVVRleHQqIHRleHQsIGNvbnN0IFVUZXh0RnVuY3MqIGZ1bmNzLCBjb25zdCB2b2lk
KiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50
IHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICB0ZXh0LT5wRnVuY3MgPSBmdW5jczsKKyAgICB0
ZXh0LT5wcm92aWRlclByb3BlcnRpZXMgPSAxIDw8IFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVO
S1M7CisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAgICB0ZXh0LT5wID0gc3RyaW5nOwor
ICAgIHRleHQtPmEgPSBsZW5ndGg7CisgICAgdGV4dC0+cSA9IHByaW9yQ29udGV4dDsKKyAgICB0
ZXh0LT5iID0gcHJpb3JDb250ZXh0TGVuZ3RoOworfQorCisvLyBTaGFyZWQgaW1wbGVtZW50YXRp
b24gZm9yIHRoZSBVVGV4dENsb25lIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK1VUZXh0KiB1
VGV4dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVC
b29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cyk7CisKKworLy8gSGVscGVycyBmb3IgdGhlIFVU
ZXh0QWNjZXNzIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK2lubGluZSBpbnQ2NF90IHVUZXh0
QWNjZXNzUGluSW5kZXgoaW50NjRfdCYgaW5kZXgsIGludDY0X3QgbGltaXQpCit7CisgICAgaWYg
KGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGVsc2UgaWYgKGluZGV4ID4gbGlt
aXQpCisgICAgICAgIGluZGV4ID0gbGltaXQ7CisgICAgcmV0dXJuIGluZGV4OworfQorCitpbmxp
bmUgYm9vbCB1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UoVVRleHQqIHRleHQsIGludDY0
X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkLCBVQm9v
bCYgaXNBY2Nlc3NpYmxlKQoreworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGlmIChuYXRp
dmVJbmRleCA+PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDwgdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCkgeworICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJ
bmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgICAgICAgICAvLyBFbnN1cmUgY2h1
bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMy
X3QgcmFuZ2UuCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpOworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG9mZnNldCkgOiAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChuYXRpdmVJbmRl
eCA+PSBuYXRpdmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBuYXRpdmVMZW5n
dGgpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7
CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID4g
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQg
aXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4K
KyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zm
c2V0KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4IDw9IDAgJiYg
IXRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEw
ZTFlODY0YjI5NzE0ODFlMzA5YzQzNTRlNDMxMDYxYjQ1YzdlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAKQEAgLTAsMCAr
MSwzOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRl
eHRQcm92aWRlckxhdGluMS5oIgorCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIExhdGlu
MSBwcm92aWRlcgorCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ2xvbmUoVVRleHQqLCBjb25z
dCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGlu
MU5hdGl2ZUxlbmd0aChVVGV4dCopOworc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVU
ZXh0KiwgaW50NjRfdCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0
KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7
CitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0
Kik7CitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMU1hcE5hdGl2ZUluZGV4VG9VVEYxNihjb25z
dCBVVGV4dCosIGludDY0X3QpOworc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4dCop
OworCitzdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdVRleHRMYXRpbjFGdW5jcyA9IHsK
KyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgdVRl
eHRMYXRpbjFDbG9uZSwKKyAgICB1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dExh
dGluMUFjY2VzcywKKyAgICB1VGV4dExhdGluMUV4dHJhY3QsCisgICAgbnVsbHB0ciwKKyAgICBu
dWxscHRyLAorICAgIHVUZXh0TGF0aW4xTWFwT2Zmc2V0VG9OYXRpdmUsCisgICAgdVRleHRMYXRp
bjFNYXBOYXRpdmVJbmRleFRvVVRGMTYsCisgICAgdVRleHRMYXRpbjFDbG9zZSwKKyAgICBudWxs
cHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIFVUZXh0KiB1VGV4
dExhdGluMUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJv
b2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwg
IWRlZXApOworCisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBVVGV4dCogcmVzdWx0ID0gdXRleHRfc2V0dXAoZGVzdGluYXRpb24sIHNpemVvZihV
Q2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSwgc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CisgICAgCisg
ICAgcmVzdWx0LT5wcm92aWRlclByb3BlcnRpZXMgPSBzb3VyY2UtPnByb3ZpZGVyUHJvcGVydGll
czsKKyAgICAKKyAgICAvLyBQb2ludCBhdCB0aGUgc2FtZSBwb3NpdGlvbiwgYnV0IHdpdGggYW4g
ZW1wdHkgYnVmZmVyLgorICAgIHJlc3VsdC0+Y2h1bmtOYXRpdmVTdGFydCA9IHNvdXJjZS0+Y2h1
bmtOYXRpdmVTdGFydDsKKyAgICByZXN1bHQtPmNodW5rTmF0aXZlTGltaXQgPSBzb3VyY2UtPmNo
dW5rTmF0aXZlU3RhcnQ7CisgICAgcmVzdWx0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc291cmNlLT5jaHVua05hdGl2ZVN0YXJ0KTsKKyAgICByZXN1bHQtPmNo
dW5rT2Zmc2V0ID0gMDsKKyAgICByZXN1bHQtPmNvbnRleHQgPSBzb3VyY2UtPmNvbnRleHQ7Cisg
ICAgcmVzdWx0LT5hID0gc291cmNlLT5hOworICAgIHJlc3VsdC0+cEZ1bmNzID0gJnVUZXh0TGF0
aW4xRnVuY3M7CisgICAgcmVzdWx0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKilyZXN1bHQtPnBF
eHRyYTsKKyAgICBtZW1zZXQoY29uc3RfY2FzdDxVQ2hhcio+KHJlc3VsdC0+Y2h1bmtDb250ZW50
cyksIDAsIHNpemVvZihVQ2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSk7CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU5hdGl2
ZUxlbmd0aChVVGV4dCogdVRleHQpCit7CisgICAgcmV0dXJuIHVUZXh0LT5hOworfQorCitzdGF0
aWMgVUJvb2wgdVRleHRMYXRpbjFBY2Nlc3MoVVRleHQqIHVUZXh0LCBpbnQ2NF90IGluZGV4LCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIGludDY0X3QgbGVuZ3RoID0gdVRleHQtPmE7CisKKyAgICBp
ZiAoZm9yd2FyZCkgeworICAgICAgICBpZiAoaW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCAmJiBpbmRleCA+PSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgLy8g
QWxyZWFkeSBpbnNpZGUgdGhlIGJ1ZmZlci4gU2V0IHRoZSBuZXcgb2Zmc2V0LgorICAgICAgICAg
ICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoICYmIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID09IGxlbmd0aCkgeworICAgICAgICAgICAgLy8gT2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwg
YnV0IHdlIGNhbid0IGdldCBpdC4KKyAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOworICAg
ICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGluZGV4IDw9IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ICYmIGluZGV4ID4gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgaW5zaWRlIHRoZSBidWZm
ZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KKyAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwor
ICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpbmRleCAm
JiAhdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgYXQg
dGhlIGJlZ2lubmluZzsgY2FuJ3QgZ28gYW55IGZhcnRoZXIuCisgICAgICAgICAgICB1VGV4dC0+
Y2h1bmtPZmZzZXQgPSAwOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIHVUZXh0LT5jaHVua05hdGl2
ZVN0YXJ0ID0gaW5kZXg7CisgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdVRleHQt
PmNodW5rTmF0aXZlU3RhcnQgKyBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eTsKKyAgICAg
ICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQorICAgICAgICAgICAgdVRl
eHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7CisKKyAgICAgICAgdVRleHQtPmNodW5rT2Zm
c2V0ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9
IGluZGV4OworICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBsZW5ndGgpCisg
ICAgICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IGxlbmd0aDsKKworICAgICAgICB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gVVRleHRX
aXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7CisgICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVT
dGFydCA8IDApCisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7CisKKyAg
ICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgfQorICAgIHVUZXh0LT5jaHVua0xlbmd0aCA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpOworCisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8
VUNoYXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4o
dVRleHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKKworICAgIHVUZXh0LT5uYXRpdmVJbmRleGlu
Z0xpbWl0ID0gdVRleHQtPmNodW5rTGVuZ3RoOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0
YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCogdVRleHQsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgbGltaXQsIFVDaGFyKiBkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwgVUVy
cm9yQ29kZSogc3RhdHVzKQoreworICAgIGludDY0X3QgbGVuZ3RoID0gdVRleHQtPmE7CisgICAg
aWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZGVz
dENhcGFjaXR5IDwgMCB8fCAoIWRlc3QgJiYgZGVzdENhcGFjaXR5ID4gMCkpIHsKKyAgICAgICAg
KnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+IGxpbWl0IHx8IChsaW1pdCAtIHN0
YXJ0KSA+IElOVDMyX01BWCkgeworICAgICAgICAqc3RhdHVzID0gVV9JTkRFWF9PVVRPRkJPVU5E
U19FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHN0YXJ0ID4gbGVu
Z3RoKQorICAgICAgICBzdGFydCA9IGxlbmd0aDsKKyAgICBpZiAobGltaXQgPiBsZW5ndGgpCisg
ICAgICAgIGxpbWl0ID0gbGVuZ3RoOworCisgICAgbGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAg
ICAKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZGVzdENh
cGFjaXR5ID4gMCAmJiAhZGVzdCkgeworICAgICAgICBpbnQzMl90IHRyaW1tZWRMZW5ndGggPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOworICAgICAgICBpZiAodHJpbW1lZExlbmd0aCA+
IGRlc3RDYXBhY2l0eSkKKyAgICAgICAgICAgIHRyaW1tZWRMZW5ndGggPSBkZXN0Q2FwYWNpdHk7
CisKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRlc3QsIHN0YXRpY19jYXN0PGNvbnN0
IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsgc3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
cmltbWVkTGVuZ3RoKSk7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCA8IGRlc3RDYXBhY2l0eSkg
eworICAgICAgICBkZXN0W2xlbmd0aF0gPSAwOworICAgICAgICBpZiAoKnN0YXR1cyA9PSBVX1NU
UklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HKQorICAgICAgICAgICAgKnN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSBkZXN0Q2FwYWNpdHkpCisgICAgICAg
ICpzdGF0dXMgPSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HOworICAgIGVsc2UKKyAg
ICAgICAgKnN0YXR1cyA9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOworCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0
aW4xTWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQqIHVUZXh0KQoreworICAgIHJldHVybiB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCArIHVUZXh0LT5jaHVua09mZnNldDsKK30KKworc3RhdGlj
IGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3QgVVRleHQqIHVU
ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KQoreworICAgIEFTU0VSVF9VTlVTRUQodVRleHQsIHVU
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID49IG5hdGl2ZUluZGV4KTsKKyAgICBBU1NFUlRfVU5VU0VE
KHVUZXh0LCBuYXRpdmVJbmRleCA8IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0KTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4obmF0aXZlSW5kZXgpOworfQorCitzdGF0aWMgdm9pZCB1
VGV4dExhdGluMUNsb3NlKFVUZXh0KiB1VGV4dCkKK3sKKyAgICB1VGV4dC0+Y29udGV4dCA9IG51
bGxwdHI7Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZm
ZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBV
RXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgeworICAg
ICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVm
ZmVyLT50ZXh0LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAg
ICB0ZXh0LT5hID0gbGVuZ3RoOworICAgIHRleHQtPnBGdW5jcyA9ICZ1VGV4dExhdGluMUZ1bmNz
OworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSAoVUNoYXIqKXRleHQtPnBFeHRyYTsKKyAgICBt
ZW1zZXQoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCAwLCBzaXplb2Yo
VUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOworCisgICAgcmV0dXJuIHRl
eHQ7Cit9CisKKworLy8gTGF0aW4xQ29udGV4dEF3YXJlIHByb3ZpZGVyCisKK3N0YXRpYyBVVGV4
dCogdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZShVVGV4dCosIGNvbnN0IFVUZXh0KiwgVUJv
b2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJl
TmF0aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7CitzdGF0aWMgaW50MzJfdCB1VGV4dExh
dGluMUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhcios
IGludDMyX3QsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ29udGV4dEF3
YXJlQ2xvc2UoVVRleHQqKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRM
YXRpbjFDb250ZXh0QXdhcmVGdW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAg
MCwKKyAgICAwLAorICAgIDAsCisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSwKKyAg
ICB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dExhdGluMUNv
bnRleHRBd2FyZUFjY2VzcywKKyAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QsCisg
ICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAg
ICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0
ciwKKyAgICBudWxscHRyCit9OworCitzdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0
IHRleHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4
dCkKK3sKKyAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMpCisgICAgICAgIHJldHVybiBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRl
bnRzID09IHRleHQtPnBFeHRyYSA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4
dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lk
IHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwg
aW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQp
Cit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKKyAg
ICBpZiAoZm9yd2FyZCkgeworICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPj0gdGV4dC0+YiAm
JiBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCk7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZl
U3RhcnQgPSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5h
dGl2ZUluZGV4ICsgdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgaWYg
KHRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBuYXRpdmVMZW5ndGgpCisgICAgICAgICAgICB0ZXh0
LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChuYXRpdmVJbmRleCA+IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVu
Z3RoKTsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4OworICAg
ICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5leHRyYVNp
emUgLyBzaXplb2YoVUNoYXIpOworICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA8
IHRleHQtPmIpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdGV4dC0+YjsK
KyAgICB9CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwg
ZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgIEFT
U0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAg
dGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAgIHRleHQtPm5h
dGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICB0ZXh0LT5jaHVua09m
ZnNldCA9IGZvcndhcmQgPyAwIDogdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgTENoYXIqPih0ZXh0LT5wKSArICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IC0g
dGV4dC0+YiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0LT5jaHVua0xlbmd0aCkpOworfQor
CitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4
dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRl
eHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9
IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cEV4dHJhKTsKKyAgICB0ZXh0TGF0aW4x
Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2
ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdh
cmVNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGlu
dDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5k
ZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNF
RChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5h
dGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBm
b3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRp
dmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNo
dW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+
YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Cisg
ICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7
CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQg
b2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJU
KG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0
LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNo
dW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRj
aFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90
IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5r
Q29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOworICAgIHRl
eHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwor
ICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZl
SW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyBVVGV4dCogdVRleHRM
YXRpbjFDb250ZXh0QXdhcmVDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBz
b3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICByZXR1cm4gdVRl
eHRDbG9uZUltcGwoZGVzdGluYXRpb24sIHNvdXJjZSwgZGVlcCwgc3RhdHVzKTsKK30KKworc3Rh
dGljIGludDY0X3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgoVVRleHQqIHRl
eHQpCit7CisgICAgcmV0dXJuIHRleHQtPmEgKyB0ZXh0LT5iOworfQorCitzdGF0aWMgVUJvb2wg
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dExhdGluMUNv
bnRleHRBd2FyZU5hdGl2ZUxlbmd0aCh0ZXh0KTsKKyAgICBVQm9vbCBpc0FjY2Vzc2libGU7Cisg
ICAgaWYgKHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwg
bmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0FjY2Vzc2libGUpKQorICAgICAgICByZXR1cm4gaXNB
Y2Nlc3NpYmxlOworICAgIG5hdGl2ZUluZGV4ID0gdVRleHRBY2Nlc3NQaW5JbmRleChuYXRpdmVJ
bmRleCwgbmF0aXZlTGVuZ3RoKTsKKyAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBjdXJyZW50Q29u
dGV4dCA9IHRleHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKKyAg
ICBVVGV4dFByb3ZpZGVyQ29udGV4dCBuZXdDb250ZXh0ID0gdVRleHRQcm92aWRlckNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIGZvcndhcmQpOworICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQpOworICAgIGlmIChuZXdDb250ZXh0ID09IGN1
cnJlbnRDb250ZXh0KSB7CisgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBVVGV4dFByb3Zp
ZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4
dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCwgZm9yd2FyZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRleHRMYXRpbjFDb250ZXh0
QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwg
Zm9yd2FyZCk7CisgICAgfSBlbHNlIGlmIChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250
ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRj
aFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmlvckNvbnRleHQpOworICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
U3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9y
d2FyZCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4
dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hh
ciosIGludDMyX3QsIFVFcnJvckNvZGUqIGVycm9yQ29kZSkKK3sKKyAgICAvLyBJbiB0aGUgcHJl
c2VudCBjb250ZXh0LCB0aGlzIHRleHQgcHJvdmlkZXIgaXMgdXNlZCBvbmx5IHdpdGggSUNVIGZ1
bmN0aW9ucworICAgIC8vIHRoYXQgZG8gbm90IHBlcmZvcm0gYW4gZXh0cmFjdCBvcGVyYXRpb24u
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgKmVycm9yQ29kZSA9IFVfVU5TVVBQT1JU
RURfRVJST1I7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ29u
dGV4dEF3YXJlQ2xvc2UoVVRleHQqIHRleHQpCit7CisgICAgdGV4dC0+Y29udGV4dCA9IG51bGxw
dHI7Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4
dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3Ro
LCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgeworICAgICAg
ICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVmZmVyLT50ZXh0
LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxV
UkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIodGV4dCwg
JnRleHRMYXRpbjFDb250ZXh0QXdhcmVGdW5jcywgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4
dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICByZXR1cm4gdGV4dDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyTGF0aW4xLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4x
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjE3YjM0ZDU2NjUzY2E0ZDdhOGNhNDE0ZTE0NzkwM2UwY2E3MjgwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVVGV4dFByb3Zp
ZGVyTGF0aW4xX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlckxhdGluMV9oCisKKyNpbmNsdWRlIDx1
bmljb2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK2NvbnN0IGludCBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSA9IDE2Owor
CitzdHJ1Y3QgVVRleHRXaXRoQnVmZmVyIHsKKyAgICBVVGV4dCB0ZXh0OworICAgIFVDaGFyIGJ1
ZmZlcltVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eV07Cit9OworCitVVGV4dCogb3Blbkxh
dGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExD
aGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKK1VUZXh0
KiBvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZmZXIqIHV0
V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBV
Q2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBz
dGF0dXMpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJM
YXRpbjFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
clVURjE2LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTFmYzJlYWI5YTQ1N2YxNzc0OWY3MjNmNTIwN2YzODFkZjI5ZmFhZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJV
VEYxNi5jcHAKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCisKKyNpbmNsdWRlICJVVGV4dFBy
b3ZpZGVyLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8g
VVRGMTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29u
dGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7
CitzdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0
Kik7CitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCosIGlu
dDY0X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRy
YWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2Rl
Kik7CitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKKwor
c3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNz
ID0geworICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAg
ICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzLAorICAgIHVU
ZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwK
KyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNs
b3NlLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyCit9OworCitzdGF0
aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1
cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQoreworICAgIGlmICghdGV4dC0+Y2h1bmtD
b250ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7
CisgICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNv
bnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1h
cnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2
ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50
cyA9PSB0ZXh0LT5wKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRp
dmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5h
dGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9
IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKKyAg
ICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlm
IGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgQVNTRVJUKGxlbmd0
aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVu
a0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8g
c3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhp
bmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZl
SW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBvZmZz
ZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFu
Z2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2
b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRl
eHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3
YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KHRleHQtPnApOworICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJ
blByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRl
eHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3Ro
LCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRl
eHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0
aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZv
cndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2
ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5k
ZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0
ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRp
dmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQg
PSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNo
dW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50
MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0
ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKwor
c3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnApOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAgIHRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKK30KKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRl
eHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JD
b2RlKiBzdGF0dXMpCit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGRlZXAsIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVU
RjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQoreworICAgIHJldHVybiB0
ZXh0LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdh
cmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQp
Cit7CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAg
aW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3Ro
KHRleHQpOworICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKKyAgICBpZiAodVRleHRBY2Nlc3NJbkNo
dW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQs
IGlzQWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7CisgICAgbmF0aXZl
SW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwor
ICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2Q29udGV4
dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQg
bmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3
YXJkKTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9D
b250ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgeworICAgICAg
ICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250
ZXh0KQorICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRl
eHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0
ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9IGVsc2UgaWYg
KG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAg
ICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5h
dGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIGVsc2UgeworICAgICAgICBB
U1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsK
KyAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwg
bmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgfQorICAgIHJldHVybiBU
UlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChV
VGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJy
b3JDb2RlKQoreworICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92
aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCisgICAgLy8gdGhhdCBkbyBub3Qg
cGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQor
eworICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOworfQorCitVVGV4dCogb3BlblVURjE2Q29u
dGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250
ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkg
eworICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgeworICAgICAgICBBU1NFUlQoIXRleHQpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRl
eHRQcm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVu
Z3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRleHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyVVRGMTYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2MyYzJjOGU2YzVmYWRhNzViNWQ1MWY5NmJi
OGFjZTBhNzA0YWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3Uv
VVRleHRQcm92aWRlclVURjE2LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVVRleHRQcm92aWRlclVURjE2X2gKKyNkZWZpbmUgVVRleHRQcm92aWRlclVURjE2X2gKKwor
I2luY2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1VUZXh0KiBv
cGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRl
eHRMZW5ndGgsIFVFcnJvckNvZGUqKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBVVGV4dFByb3ZpZGVyVVRGMTZfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9t
YWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVm
NWRhYTY0Mjg4ODIxZTIwZjI2MjhjNjg1NWVlOGU4OGEzODkyYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMu
bW0KQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGNvbnN0IGludCBtYXhMb2Nh
bGVTdHJpbmdMZW5ndGggPSAzMjsKKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UoKQoreworICAgIFJldGFpblB0cjxDRlByb3Bl
cnR5TGlzdFJlZj4gbG9jYWxlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weVZhbHVlKENGU1RS
KCJBcHBsZVRleHRCcmVha0xvY2FsZSIpLAorICAgICAgICBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxp
Y2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3Qp
KTsKKyAgICBpZiAoIWxvY2FsZSB8fCBDRkdldFR5cGVJRChsb2NhbGUuZ2V0KCkpICE9IENGU3Ry
aW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4obG9jYWxlLmdldCgpKTsKK30KKworc3RhdGljIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkKK3sKKyAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzQXJyYXkgPSBhZG9wdENGKENGTG9jYWxlQ29weVByZWZlcnJl
ZExhbmd1YWdlcygpKTsKKyAgICBpZiAoIWxhbmd1YWdlc0FycmF5KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoIUNGQXJyYXlHZXRDb3VudChsYW5ndWFnZXNBcnJheS5nZXQoKSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXNBcnJheS5nZXQoKSwgMCkpOwor
fQorCitzdGF0aWMgdm9pZCBnZXRMb2NhbGUoQ0ZTdHJpbmdSZWYgbG9jYWxlLCBjaGFyIGxvY2Fs
ZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQoreworICAgIC8vIEVtcHR5IHN0
cmluZyBtZWFucyAicm9vdCBsb2NhbGUiLCBhbmQgdGhhdCBpcyB3aGF0IHdlIHVzZSBpZiB3ZSBj
YW4ndCBnZXQgYSBwcmVmZXJlbmNlLgorICAgIGxvY2FsZVN0cmluZ0J1ZmZlclswXSA9IDA7Cisg
ICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybjsKKyAgICBDRlN0cmluZ0dldENTdHJpbmco
bG9jYWxlLCBsb2NhbGVTdHJpbmdCdWZmZXIsIG1heExvY2FsZVN0cmluZ0xlbmd0aCwga0NGU3Ry
aW5nRW5jb2RpbmdBU0NJSSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFNlYXJjaExvY2FsZShjaGFy
IGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQoreworICAgIGdldExv
Y2FsZSh0b3BMYW5ndWFnZVByZWZlcmVuY2UoKS5nZXQoKSwgbG9jYWxlU3RyaW5nQnVmZmVyKTsK
K30KKworY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICBzdGF0aWMg
Y2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXTsKKyAgICBzdGF0
aWMgYm9vbCBnb3RTZWFyY2hMb2NhbGUgPSBmYWxzZTsKKyAgICBpZiAoIWdvdFNlYXJjaExvY2Fs
ZSkgeworICAgICAgICBnZXRTZWFyY2hMb2NhbGUobG9jYWxlU3RyaW5nQnVmZmVyKTsKKyAgICAg
ICAgZ290U2VhcmNoTG9jYWxlID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGxvY2FsZVN0cmlu
Z0J1ZmZlcjsKK30KKworc3RhdGljIHZvaWQgZ2V0VGV4dEJyZWFrTG9jYWxlKGNoYXIgbG9jYWxl
U3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0pCit7CisgICAgLy8gSWYgdGhlcmUg
aXMgbm8gdGV4dCBicmVhayBsb2NhbGUsIHVzZSB0aGUgdG9wIGxhbmd1YWdlIHByZWZlcmVuY2Uu
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGUgPSB0ZXh0QnJlYWtMb2NhbGVQcmVm
ZXJlbmNlKCk7CisgICAgaWYgKGxvY2FsZSkgeworICAgICAgICBpZiAoUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjYW5vbmljYWxMb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2Fs
TGFuZ3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2NhbGUu
Z2V0KCkpKSkKKyAgICAgICAgICAgIGxvY2FsZSA9IGNhbm9uaWNhbExvY2FsZTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbG9jYWxlID0gdG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCk7CisgICAgZ2V0TG9j
YWxlKGxvY2FsZS5nZXQoKSwgbG9jYWxlU3RyaW5nQnVmZmVyKTsKK30KKworY29uc3QgY2hhciog
Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKK3sKKyAgICBzdGF0aWMgY2hhciBsb2NhbGVTdHJp
bmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXTsKKyAgICBzdGF0aWMgYm9vbCBnb3RUZXh0
QnJlYWtMb2NhbGUgPSBmYWxzZTsKKyAgICBpZiAoIWdvdFRleHRCcmVha0xvY2FsZSkgeworICAg
ICAgICBnZXRUZXh0QnJlYWtMb2NhbGUobG9jYWxlU3RyaW5nQnVmZmVyKTsKKyAgICAgICAgZ290
VGV4dEJyZWFrTG9jYWxlID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGxvY2FsZVN0cmluZ0J1
ZmZlcjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC93aW4vVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDE3ZTE3MDVl
ZjU0YjkzOTIxNGRhMTg0ODBkYjdhMzJjMzJjOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0
IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCB1
c2Ugc3lzdGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJl
bnRUZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgLy8gVXNpbmcgZW5fVVNfUE9TSVggbm93IHNv
IHdvcmQgc2VsZWN0aW9uIGluIGFkZHJlc3MgZmllbGQgd29ya3MgYXMgZXhwZWN0ZWQgYXMgYmVm
b3JlIChkb3VibGUtY2xpY2tpbmcKKyAgICAvLyBpbiBhIFVSTCBzZWxlY3RzIGEgd29yZCBkZWxp
bWl0ZWQgYnkgcGVyaW9kcyByYXRoZXIgdGhhbiBzZWxlY3RpbmcgdGhlIGVudGlyZSBVUkwpLgor
ICAgIC8vIEhvd2V2ZXIsIHRoaXMgaXMgbm90IGVudGlyZWx5IGNvcnJlY3QgLSB3ZSBzaG91bGQg
aG9ub3IgdGhlIHN5c3RlbSBsb2NhbGUgaW4gdGhlIG5vcm1hbCBjYXNlLgorICAgIC8vIEZJWE1F
OiA8cmRhcjovL3Byb2JsZW0vNjc4NjcwMz4gU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlIGZvciB0
ZXh0IGJyZWFraW5nCisgICAgcmV0dXJuICJlbl9VU19QT1NJWCI7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggOTA0Mzc3ZmNlYmRkNTZlNjBlNjYyZGU1Mjc0MDYxNTY2NTQyODc2YS4u
ZTc4YjA0MmIxMDQwMWUxZjRlZTNhMmFiMWEwNTJjMjE4YzNhMTFlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIzNzAsNyArMjM3MCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRl
ZFN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAotICAgIHBs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWMuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCiAgICAgcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC0yMzgzLDEwICsyMzgyLDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3Bw
CiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC9p
Y3UvVVRleHRQcm92aWRlci5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
TGF0aW4xLmNwcAotICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAK
LQogICAgIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZUFy
cmF5LmNwcAogICAgIHBsdWdpbnMvRE9NUGx1Z2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCAzZmU2MDM3OGMyNmNmMDhlNDVmMzczZWQ1MzM4N2RlZjc4NDU2Y2EzLi41MTQ1MDRl
NmVjMjVhYTVlNDNiOTkzOThkNWUzNWNlZWVhNzY2YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMjEyLDggKzIxMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJ
Q1UuY3BwCiAKLSAgICBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVRWZsLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFu
dC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBjMjI0MDViNzRlMTVlN2I3NWY3NGFjODBm
ODE1N2M3NzNhOWM5ZWMwLi42NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgyLDggKzE4Miw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVj
a2VyRW5jaGFudC5jcHAKIAotICAgIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1VHdGsuY3BwCi0KICAgICBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlv
bkxpYkh5cGhlbi5jcHAKIAogICAgIHBsYXRmb3JtL3VuaXgvTG9nZ2luZ1VuaXguY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDM5ODk2Zjk4NDM1MjYxMmE5ZWVkNDliMjQwMTE0YjRj
MWQ4NDk1OTguLjlmNmY0OTZiNmNjNGVmNmU0Yjc0ZDg0YWMwYWE5ZGVhNTVhMDIzN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01NjYsNyArNTY2LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KICAgICBw
bGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQotICAgIHBsYXRmb3JtL3RleHQvbWFj
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KICAgICBwbGF0Zm9ybS90ZXh0L21h
Yy9UZXh0Q29kZWNNYWMuY3BwCiAKICAgICByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggY2NiMWE1NzFlOWE2ZGU1NmFjZDA1NGE5MzM2NTM5
ZDA4ZTYwZjNmZi4uOGQ3OTBmYTcwOTFmYjYxMmYxNTE4OTU2OWM1N2Q5NmE5NWNjZDVkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwOSw4ICsxMDksNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAK
IAotICAgIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4u
Y3BwCi0KICAgICBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS93aW4vQml0
bWFwSW5mby5jcHAKICAgICBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZiYTU3Zjg0OTliMTZkYjBlMDY4ZmQ5ZDc1M2ViOTE1MjJjOWViODQuLmMxMWJjNDdlNWNh
ZDYzMGEzNjU3Y2RlMWFkOWY3Yjc2YTBhNTVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MTgsMTEgKzE1MTgsMTEgQEAK
IAkJMzdGNTdBQkExQTUwNzI2RjAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNB
OUUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwICovOyB9
OwogCQkzN0Y1N0FCQjFBNTA3MjczMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFD
QTlGMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwICovOyB9
OwogCQkzN0Y1N0FCQzFBNTA3Mjc3MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgx
Q0FBMDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgKi87
IH07CisJCTM3RjU3QUJDMUE1MDcyODQwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3Bw
ICovOyB9OwogCQkzN0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNB
QTExMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNwcCAqLzsgfTsKIAkJMzdG
NTdBQkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQUEyMTMxODIyRUMw
MEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgKi87IH07CiAJCTM3RjU3QUJGMUE1
MDcyODEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBMzEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwICovOyB9OwogCQkzN0Y1N0FD
MDFBNTA3Mjg0MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBQTQxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKLQkJMzdG
NTdBQkMxQTUwNzI4NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFBQkM0MTMx
ODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgKi87IH07CiAJ
CTM3RjU3QUMxMUE1MDcyODcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg1NzA5MjE1
Q0M1MzJEMDA2MzU1Q0QgLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwICovOyB9OwogCQkz
N0Y1N0FDMjFBNTA3MjhCMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBNTEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi87IH07CiAJCTM3RjU3QUMzMUE1
MDcyOEYwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQwOUM5ODIxMTZEMERE
RDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi87IH07CkBA
IC0xNjkzLDEwICsxNjkzLDggQEAKIAkJNDM5MDQ2REQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTE1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwICov
OyB9OwogCQk0MzkwNDZERTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0ExMkRB
MjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguaCAqLzsgfTsKIAkJNDM5MDQ2REYxMkRB
MjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQjEyREEyNUUxN0JBRjgw
QTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCAqLzsgfTsKLQkJNDM5MTc2REYxMkRB
MjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTE3NkNCMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxT
dHlsZS5jcHAgKi87IH07CiAJCTQzOTA0NkRGMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3Bw
ICovOyB9OwogCQk0MzkwNDZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzkwNDZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi87
IH07Ci0JCTQzOTE3NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0MxMkRBMjVFMTdC
QUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi87IH07CiAJCTQzOTA0NkUwMTJEQTI1RTgwMEFGODBB
MiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhN
TE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkUxMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxSb290LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOTA0NkNEMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLzsg
fTsKIAkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNFMTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmggKi87IH07CkBAIC0xNzEwLDYgKzE3MDgs
OCBAQAogCQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENjEyREEyNUU4
MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkVCMTJEQTI1RTgwMEFG
ODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0
aE1MVG9rZW4uY3BwICovOyB9OwogCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVy
TWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oICovOyB9
OworCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0IxMkRBMjVFMTdC
QUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLzsgfTsKKwkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4
MEEyIC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLzsg
fTsKIAkJNDM5RDMzNDMxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDAxM0E2OTEx
QzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oICovOyB9OwogCQk0MzlEMzM0NDEzQTY5MTFD
MDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBT
VkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovOyB9OwogCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBG
NEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JG
YWN0b3J5LmggKi87IH07CkBAIC0yODE0LDEyICsyODE0LDYgQEAKIAkJN0M3M0ZCMTExOTFFRjZG
NDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBK
U1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CiAJCTdDNzNGQjEyMTkxRUY2RjQwMDdERTA2
MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmggKi87IH07CiAJCTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTcxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDNzRENDMzMTg4
MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAv
KiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLzsgfTsKLQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmggKi87IH07Ci0JCTdDNzRENDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLzsgfTsKLQkJ
N0M3NEQ0MzgxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1
NyAvKiBVVGV4dFByb3ZpZGVyLmggKi87IH07Ci0JCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAv
KiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5jcHAgKi87IH07Ci0JCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsK
IAkJN0M3OTQxRTQxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFF
MjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsK
IAkJN0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUz
MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi87IH07CiAJ
CTdDODNERTg2MUQwNENDNUQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNG
MyAvKiBTcHJpbmdTb2x2ZXIuaCAqLzsgfTsKQEAgLTQyNzUsNyArNDI2OSw2IEBACiAJCUE1QTJB
RjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3Mjkg
LyogUGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3Mjkg
LyogUGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICov
OyB9OwogCQlBNUE3QUE0MzEzMkYwRUNDMDBEM0EzQzIgLyogV2ViQXV0b2NhcGl0YWxpemUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTdBQTQyMTMy
RjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLzsgfTsKIAkJQTVB
RkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsKQEAgLTUxMTAsNyArNTEwMyw2IEBACiAJCUIyQUZG
QzgwMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDNzgwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDYXNjYWRlQ29jb2EubW0gKi87IH07CiAJCUIyQUZGQzgzMEQwMEE1QzEwMDMwMDc0
RCAvKiBHbHlwaFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjJBRkZDN0IwRDAwQTVDMTAwMzAwNzREIC8qIEdseXBoUGFnZU1hYy5jcHAg
Ki87IH07CiAJCUIyQUZGQzk3MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzhDMEQw
MEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSAqLzsgfTsKLQkJQjJBRkZDOTgwRDAw
QTVERjAwMzAwNzREIC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RDBEMDBBNURG
MDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLzsgfTsKIAkJ
QjJBRkZDOTkwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RTBEMDBBNURGMDAzMDA3
NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLzsgfTsKIAkJQjJBRkZDOUEwRDAwQTVERjAwMzAwNzRE
IC8qIFRleHRDb2RlY01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjJBRkZDOEYwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5oICovOyB9
OwogCQlCMkIxRjcxNjBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQjFGNzE0
MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovOyB9OwpAQCAt
NTEyMiw4ICs1MTE0LDYgQEAKIAkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLzsgfTsK
IAkJQjJDM0RBMkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0Q5RkYwRDAwNkMxRDAw
RUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTM0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91
bmRhcmllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjJDM0RBMDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjJDM0RBMzYwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwNjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFr
SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlCMkMzREEzODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJD
M0RBMDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREEz
OTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTA5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0
Q29kZWMuY3BwICovOyB9OwogCQlCMkMzREEzQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEw
QTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBM0IwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY0lDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMkMzREEwQjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjSUNVLmNwcCAqLzsgfTsK
QEAgLTU4MDcsNyArNTc5Nyw2IEBACiAJCUJDRDBGQzRGMERCRDcyMEIwMEIyRjYzMCAvKiBET01S
R0JDb2xvckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0QwRkM0RTBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5o
ICovOyB9OwogCQlCQ0Q0MUFCQjBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDQxQUJBMEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0
b20uY3BwICovOyB9OwogCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0
U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92
aWRlci5oICovOyB9OwotCQlCQ0Q4QTVGMDE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNEOEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsK
IAkJQkNEOUMyNjIwQzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjVFMEMxN0FB
NjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi87IH07CiAJCUJDRDlDMjYzMEMx
N0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIg
LyogSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwICovOyB9OwogCQlCQ0Q5QzI2NDBDMTdBQTY3MDA1
QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRDlDMjYwMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20u
Y3BwICovOyB9OwpAQCAtODY5MSw2ICs4NjgwLDcgQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgz
RjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1h
cmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRV
bmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4MUFCQzQxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RTEzMTgyMkVDMDBEMTJGMkEgLyog
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4
MUNBOUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODY5OSw3ICs4Njg5LDYgQEAKIAkJMjk4MUNBQTIxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8qIEFj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjk4
MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vz
c2liaWxpdHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdl
U3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJMjk4MUNBQTYx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5ODFDQUE3MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTAzNiw4ICs5MDI1LDggQEAKIAkJ
MzFGQjFBNkIxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXZpY2VNb3Rpb25FdmVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIw
ODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMxRkY2N0RFMTk3QjU3MzkzQzQ2QUE3IC8qIFJlbmRl
ck1hdGhNTFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1h
dGhNTFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMUZGNjdERTE5N0I1
NzM5M0M0NkE3RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MUGFkZGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90
aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb24uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0M5OTEwMTc5QTc0MDAz
QjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBw
YXRoID0gTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MzExLDEwICs5MzAwLDggQEAKIAkJNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTE1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVyTWF0aE1MTWF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNB
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTE1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDM5MDQ2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzkxNzZD
QjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDQzEyREEyNUUx
N0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3R5bGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ck1hdGhNTE9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNE
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MzkwNDZDRTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1M
Um9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxSb290
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzI4LDYgKzkzMTUsOCBAQAogCQk0
MzkwNDZENjEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhPcGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZEODEyREEyNUU4MDBBRjgw
QTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyTWF0aE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM5
MTc2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFN0eWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRl
ZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NTcsMTIgKzEwNTQ2LDYgQEAKIAkJN0M3
M0ZCMEYxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8q
IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NzNGQjE3MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGlu
MS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDMyMTg4MjNBOTMwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJN0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3
IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0
YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29y
ZVNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4M0RFODUx
RDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTcHJpbmdTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyMDc1LDcgKzEyMDU4LDYgQEAKIAkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VE
ZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VE
ZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMEExODI5
NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1QTdBQTQyMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvY2FwaXRhbGl6ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFG
QjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleUV2ZW50Q29jb2EuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTA4LDcgKzEzMDkwLDYgQEAKIAkJQjJBRkZDODYwRDAw
QTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGluZ3MudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSAibWFjLWVuY29kaW5ncy50eHQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFG
RkM4NzBEMDBBNURGMDAzMDA3NEQgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAibWFrZS1jaGFyc2V0LXRhYmxlLnBsIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRC
b3VuZGFyaWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
eHRCb3VuZGFyaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkFGRkM4RDBE
MDBBNURGMDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4RTBE
MDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWNNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMkFGRkM4RjBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJCMUY3MTQwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVu
dHNIaXRSdWxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9p
bnRlckV2ZW50c0hpdFJ1bGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
MTIwLDggKzEzMTAxLDYgQEAKIAkJQjJDM0Q5RkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VnbWVu
dGVkU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0Q5RkYwRDAw
NkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VnbWVudGVkU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJvdW5kYXJpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjJDM0RBMDYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0QnJlYWtJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkMzREEwODBEMDA2QzFEMDBF
RjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENv
ZGVjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwQTBEMDA2QzFEMDBFRjZG
MjYgLyogVGV4dENvZGVjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
Q29kZWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBMEIwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRDb2RlY0lDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dENvZGVjSUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzODMxLDcgKzEzODEwLDYgQEAKIAkJQkNEMEZDNEUwREJENzIwQjAwQjJGNjMwIC8qIERPTVJH
QkNvbG9ySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUkdC
Q29sb3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q0MUFCQTBD
MDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4
ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkNEOEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0
ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCcmVh
a0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNEOUMyNUUwQzE3
QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRDlDMjVGMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1h
cEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYW1l
ZE5vZGVNYXBDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q5QzI2
MDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTg0MjUsMTkgKzE4NDAzLDYgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAv
KiBpY3UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTdD
NzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLywKLQkJCQk3Qzc0
RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovLAotCQkJCTdDNzRENDMx
MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLywKLQkJCQk3Qzc0
RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovLAotCQkJCTdD
NzRENDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovLAotCQkJ
CTdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLywKLQkJ
CSk7Ci0JCQlwYXRoID0gaWN1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJ
N0U0REUxMEIxOThCMTA4MTAwNTFDQjAyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIyMzM1LDcgKzIyMzAwLDYgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8q
IGNmICovLAotCQkJCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBpY3UgKi8sCiAJCQkJQTUx
NkU4QjIxMzZFMDRDMDAwNzZDM0MwIC8qIGlvcyAqLywKIAkJCQlCMkMzRDlGOTBEMDA2QzFEMDBF
RjZGMjYgLyogbWFjICovLAogCQkJCUIyQzNEOUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29u
dGV4dC5jcHAgKi8sCkBAIC0yMjM0Nyw3ICsyMjMxMSw2IEBACiAJCQkJNDUzRUI2MzUxNTlDNTcw
NDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggKi8sCiAJCQkJQ0VDQ0ZDM0ExNDE5NzNENTAw
MkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQz
QzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAotCQkJCUE1QUJCNzg2MTNCOTA0QkMwMEYx
OTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywKIAkJCQk4OUI1RUE5RjExRTgw
MDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJODlCNUVBQTAxMUU4MDAzRDAw
RjIzNjdFIC8qIExpbmVFbmRpbmcuaCAqLywKIAkJCQk3NjMzQTcyNDEzRDhCMzNBMDA4NTAxQjYg
LyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggKi8sCkBAIC0yMjM2Myw5ICsyMjMyNiw2IEBACiAJ
CQkJOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLywKIAkJCQkzNzJD
MDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwICovLAogCQkJCUIyQzNE
QTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovLAotCQkJCUJDRDhBNUVG
MTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCi0JCQkJQjJDM0RB
MDYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggKi8sCi0JCQkJQjJDM0RB
MDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywK
IAkJCQlBNzE1MUJENzEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCAqLywK
IAkJCQlBNzdEMDAxMTEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggKi8sCiAJCQkJ
QjJDM0RBMDkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlYy5jcHAgKi8sCkBAIC0yMjQwOSw3
ICsyMjM2OSw2IEBACiAJCQkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGlu
Z3MudHh0ICovLAogCQkJCUIyQUZGQzg3MEQwMEE1REYwMDMwMDc0RCAvKiBtYWtlLWNoYXJzZXQt
dGFibGUucGwgKi8sCiAJCQkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFy
aWVzLm1tICovLAotCQkJCUIyQUZGQzhEMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVTWFjLm1tICovLAogCQkJCUIyQUZGQzhFMEQwMEE1REYwMDMwMDc0RCAv
KiBUZXh0Q29kZWNNYWMuY3BwICovLAogCQkJCUIyQUZGQzhGMEQwMEE1REYwMDMwMDc0RCAvKiBU
ZXh0Q29kZWNNYWMuaCAqLywKIAkJCSk7CkBAIC0yNzQwMCw3ICsyNzM1OSw2IEBACiAJCQkJQkNG
RjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4
RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUI1RUFB
MjExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZF
RkFCMkExODM4MERBMDAwNTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODYyMiw4ICsyODU4MCw2IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYx
ODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkMzREEzNDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICov
LAotCQkJCUIyQzNEQTM2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQjJDM0RBMzgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYw
MDVBMEY2NCAvKiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RDAw
MTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdEQkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yODc2Niw5ICsyODcyMiw2IEBACiAJCQkJQkM4QkYxNTExMDU4MTNCRjAwQTQw
QTA3IC8qIFVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCRjE1QTEwNTgx
NDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNERjMxN0MxMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3IC8qIFVU
ZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDNzRENDNDMTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQUZC
RjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFM0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NUExNTQyODEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzIxODMsOCArMzIxMzYsNiBAQAogCQkJCTBGNTREQ0U1MTg4MTA1MUQwMDNFRURC
QiAvKiBUZXh0QXV0b1NpemluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzJDMDBDNDEyOTYx
MUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJB
RkZDOTcwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyQUZGQzk4MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEQkY4REQxMjc2
OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkMzREEzOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTNCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNJQ1UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMjMwMyw5ICszMjI1NCw2IEBACiAJCQkJN0NFNjgzNDQxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERjMxN0IxMUY4RDY4MzAwM0M1QkY4IC8q
IFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNzRE
NDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIw
IC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFM0JCRjA3MTE2MkRBMTEw
MEI5NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQw
MEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBkNTMzYzM3MGNlNjc1ZmZhNTg2NGM2NDY2YTg0
MTQ3M2JmNDFlMTY3Li5iMmQ3ZGFlNzI5NWQwYTI0ODA4ZDAwZGQzNGJiNDMzNTAyYjkzMzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5j
bHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
I2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJh
dG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGI2OTUyZTJiODZmMTljZWM2NmRj
YmFmY2U5NjYyMWI2ZDUxMTk5YjkuLmYxODY1NDk2N2RkZTU3NzU2ZTVkMzU5Nzg3M2Q1MmI5MmFj
NDc3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
U2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJ
dGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5j
bHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAppbmRleCBjYjc0YWY5NjMwZGI0ZTI1ODg1MDZlNzU3MjZlZDNhMDBmZTExY2Y2Li4w
N2FhYjYxNmNiNjdmOTZmODdlZmYxYzQ2N2ZkYmRmOTUzMDYxNDdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiU2lt
cGxlTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgog
I2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3Iu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgog
I2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiAhVUNPTkZJR19OT19DT0xMQVRJT04K
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCiAjaW5jbHVkZSA8dW5p
Y29kZS91c2VhcmNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggZWQ2YTY4YTFhYTY2NDYwMGE5
NjNjNjkyZTJjYjg4YzAzODUzZTRiZS4uZTBkYzQwNTVlYWVkZjhiMzg4YjM0ZWIyYmU4MjZiMWQ0
NTJmNmQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMzcs
NyArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1
ZGUgImh0bWxlZGl0aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAppbmRleCAwMjNhYzMzOTBmMmJkYTJiNzUzZjdhYmI4MzA2OTM5YTRkMzZmMDUyLi4zNGI0Y2Nj
YWVkN2I5ZjM1OGE5NzM2ODllM2IwNzZhYjU3YWU1N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlICJTY29wZWRF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiU2VhcmNoSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5j
bHVkZSAiVG91Y2hFdmVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggZjkyMTA4YWNhNmYxZDhhM2Q5Y2VkYWNkYjBiODA4MmRkZjM4MmM4ZC4u
Y2YyYThhODg3MDYxOGQwMGUzZjU2ZWUxMmEyYmI3NmNmZjRjNTJhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNh
YWY0MTQ1ZWQxOGNkZDA3YzViNDk4N2ZlNzc3OTBjNDAzMjYwMTkuLjg5MWI2YmJmYTljYTYzYmM1
NWQxMzBjZmJiZjA5NTEyOTg4YzA4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0
SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSAi
VGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgogI2luY2x1ZGUgIlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1lSW5wdXRUeXBl
LmgiCiAjaW5jbHVkZSAiVVJMSW5wdXRUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggYWQxZDRlMzQ4MDA2OWY3YWEwZDE3NDFkMTFiMzhkMDc0
ODQ0YzI0ZC4uMjY2ODgxMzkxOGRmNmUxZGU3ZDU5Mzg3MzY4YTEyOGMzYjE5MmQ4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNTEsNyArNTEsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlRleHRCcmVh
a0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNp
bmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5
cGUuY3BwCmluZGV4IGI1NGU5YjJlN2Q5ZDEyOGIxY2M5NTMzNjE0ZDhmMDRhNzc1Y2U2ODguLmY2
ZjAyNzZkMThkODY4MDQwZGJmYjYyNTg4MmI3MDhjMzM2NThlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0SW5wdXRUeXBlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5jbHVkZSAiVGV4
dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lj
dS91bmljb2RlL3V0ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGV4dC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDMxOTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIy
MjE1ZTY0ZmYzMzllLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ljdS91bmljb2RlL3V0ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxNjAwICswLDAgQEAKLS8qCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0qCi0qICAgQ29weXJp
Z2h0IChDKSAyMDA0LTIwMTIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKLSogICBD
b3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSoKLSoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKLSogICBmaWxlIG5hbWU6ICB1dGV4dC5oCi0qICAgZW5jb2Rpbmc6ICAg
VVMtQVNDSUkKLSogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKLSogICBpbmRlbnRhdGlvbjo0
Ci0qCi0qICAgY3JlYXRlZCBvbjogMjAwNG9jdDA2Ci0qICAgY3JlYXRlZCBieTogTWFya3VzIFcu
IFNjaGVyZXIKLSovCi0KLSNpZm5kZWYgX19VVEVYVF9IX18KLSNkZWZpbmUgX19VVEVYVF9IX18K
LQotLyoqCi0gKiBcZmlsZQotICogXGJyaWVmIEMgQVBJOiBBYnN0cmFjdCBVbmljb2RlIFRleHQg
QVBJCi0gKgotICogVGhlIFRleHQgQWNjZXNzIEFQSSBwcm92aWRlcyBhIG1lYW5zIHRvIGFsbG93
IHRleHQgdGhhdCBpcyBzdG9yZWQgaW4gYWx0ZXJuYXRpdmUKLSAqIGZvcm1hdHMgdG8gd29yayB3
aXRoIElDVSBzZXJ2aWNlcy4gIElDVSBub3JtYWxseSBvcGVyYXRlcyBvbiB0ZXh0IHRoYXQgaXMK
LSAqIHN0b3JlZCBpbiBVVEYtMTYgZm9ybWF0LCBpbiAoVUNoYXIgKikgYXJyYXlzIGZvciB0aGUg
QyBBUElzIG9yIGFzIHR5cGUKLSAqIFVuaWNvZGVTdHJpbmcgZm9yIEMrKyBBUElzLgotICoKLSAq
IElDVSBUZXh0IEFjY2VzcyBhbGxvd3Mgb3RoZXIgZm9ybWF0cywgc3VjaCBhcyBVVEYtOCBvciBu
b24tY29udGlndW91cwotICogVVRGLTE2IHN0cmluZ3MsIHRvIGJlIHBsYWNlZCBpbiBhIFVUZXh0
IHdyYXBwZXIgYW5kIHRoZW4gcGFzc2VkIHRvIElDVSBzZXJ2aWNlcy4KLSAqCi0gKiBUaGVyZSBh
cmUgdGhyZWUgZ2VuZXJhbCBjbGFzc2VzIG9mIHVzYWdlIGZvciBVVGV4dDoKLSAqCi0gKiAgICAg
QXBwbGljYXRpb24gTGV2ZWwgVXNlLiAgVGhpcyBpcyB0aGUgc2ltcGxlc3QgdXNhZ2UgLSBhcHBs
aWNhdGlvbnMgd291bGQKLSAqICAgICB1c2Ugb25lIG9mIHRoZSB1dGV4dF9vcGVuKCkgZnVuY3Rp
b25zIG9uIHRoZWlyIGlucHV0IHRleHQsIGFuZCBwYXNzCi0gKiAgICAgdGhlIHJlc3VsdGluZyBV
VGV4dCB0byB0aGUgZGVzaXJlZCBJQ1Ugc2VydmljZS4KLSAqCi0gKiAgICAgU2Vjb25kIGlzIHVz
YWdlIGluIElDVSBTZXJ2aWNlcywgc3VjaCBhcyBicmVhayBpdGVyYXRpb24sIHRoYXQgd2lsbCBu
ZWVkIHRvCi0gKiAgICAgb3BlcmF0ZSBvbiBpbnB1dCBwcmVzZW50ZWQgdG8gdGhlbSBhcyBhIFVU
ZXh0LiAgVGhlc2UgaW1wbGVtZW50YXRpb25zCi0gKiAgICAgd2lsbCBuZWVkIHRvIHVzZSB0aGUg
aXRlcmF0aW9uIGFuZCByZWxhdGVkIFVUZXh0IGZ1bmN0aW9ucyB0byBnYWluCi0gKiAgICAgYWNj
ZXNzIHRvIHRoZSBhY3R1YWwgdGV4dC4KLSAqCi0gKiAgICAgVGhlIHRoaXJkIGNsYXNzIG9mIFVU
ZXh0IHVzZXJzIGFyZSAidGV4dCBwcm92aWRlcnMuIiAgVGhlc2UgYXJlIHRoZQotICogICAgIFVU
ZXh0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdGV4dCBzdG9yYWdlIGZvcm1hdHMu
ICBBbiBhcHBsaWNhdGlvbgotICogICAgIG9yIHN5c3RlbSB3aXRoIGEgdW5pcXVlIHRleHQgc3Rv
cmFnZSBmb3JtYXQgY2FuIGltcGxlbWVudCBhIHNldCBvZgotICogICAgIFVUZXh0IHByb3ZpZGVy
IGZ1bmN0aW9ucyBmb3IgdGhhdCBmb3JtYXQsIHdoaWNoIHdpbGwgdGhlbiBhbGxvdwotICogICAg
IElDVSBzZXJ2aWNlcyB0byBvcGVyYXRlIG9uIHRoYXQgZm9ybWF0LgotICoKLSAqCi0gKiA8ZW0+
SXRlcmF0aW5nIG92ZXIgdGV4dDwvZW0+Ci0gKgotICogSGVyZSBpcyBzYW1wbGUgY29kZSBmb3Ig
YSBmb3J3YXJkIGl0ZXJhdGlvbiBvdmVyIHRoZSBjb250ZW50cyBvZiBhIFVUZXh0Ci0gKgotICog
XGNvZGUKLSAqICAgIFVDaGFyMzIgIGM7Ci0gKiAgICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZlcigp
OwotICoKLSAqICAgIGZvciAoYz11dGV4dF9uZXh0MzJGcm9tKHV0LCAwKTsgYz49MDsgYz11dGV4
dF9uZXh0MzIodXQpKSB7Ci0gKiAgICAgICAvLyBkbyB3aGF0ZXZlciB3aXRoIHRoZSBjb2RlcG9p
bnQgYyBoZXJlLgotICogICAgfQotICogXGVuZGNvZGUKLSAqCi0gKiBBbmQgaGVyZSBpcyBzaW1p
bGFyIGNvZGUgdG8gaXRlcmF0ZSBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGZyb20gdGhlIGVu
ZAotICogb2YgdGhlIHRleHQgdG93YXJkcyB0aGUgYmVnaW5uaW5nLgotICoKLSAqIFxjb2RlCi0g
KiAgICBVQ2hhcjMyICBjOwotICogICAgVVRleHQgICAgKnV0ID0gd2hhdGV2ZXIoKTsKLSAqICAg
IGludCAgICAgIHRleHRMZW5ndGggPSB1dGV4dF9uYXRpdmVMZW5ndGgodXQpOwotICogICAgZm9y
IChjPXV0ZXh0X3ByZXZpb3VzMzJGcm9tKHV0LCB0ZXh0TGVuZ3RoKTsgYz49MDsgYz11dGV4dF9w
cmV2aW91czMyKHV0KSkgewotICogICAgICAgLy8gZG8gd2hhdGV2ZXIgd2l0aCB0aGUgY29kZXBv
aW50IGMgaGVyZS4KLSAqICAgIH0KLSAqIFxlbmRjb2RlCi0gKgotICogPGVtPkNoYXJhY3RlcnMg
YW5kIEluZGV4aW5nPC9lbT4KLSAqCi0gKiBJbmRleGluZyBpbnRvIHRleHQgYnkgVVRleHQgZnVu
Y3Rpb25zIGlzIG5lYXJseSBhbHdheXMgaW4gdGVybXMgb2YgdGhlIG5hdGl2ZQotICogaW5kZXhp
bmcgb2YgdGhlIHVuZGVybHlpbmcgdGV4dCBzdG9yYWdlLiAgVGhlIHN0b3JhZ2UgZm9ybWF0IGNv
dWxkIGJlIFVURi04Ci0gKiBvciBVVEYtMzIsIGZvciBleGFtcGxlLiAgV2hlbiBjb2RpbmcgdG8g
dGhlIFVUZXh0IGFjY2VzcyBBUEksIG5vIGFzc3VtcHRpb25zCi0gKiBjYW4gYmUgbWFkZSByZWdh
cmRpbmcgdGhlIHNpemUgb2YgY2hhcmFjdGVycywgb3IgaG93IGZhciBhbiBpbmRleAotICogbWF5
IG1vdmUgd2hlbiBpdGVyYXRpbmcgYmV0d2VlbiBjaGFyYWN0ZXJzLgotICoKLSAqIEFsbCBpbmRp
Y2VzIHN1cHBsaWVkIHRvIFVUZXh0IGZ1bmN0aW9ucyBhcmUgcGlubmVkIHRvIHRoZSBsZW5ndGgg
b2YgdGhlCi0gKiB0ZXh0LiAgQW4gb3V0LW9mLWJvdW5kcyBpbmRleCBpcyBub3QgY29uc2lkZXJl
ZCB0byBiZSBhbiBlcnJvciwgYnV0IGlzCi0gKiBhZGp1c3RlZCB0byBiZSBpbiB0aGUgcmFuZ2Ug
IDAgPD0gaW5kZXggPD0gbGVuZ3RoIG9mIGlucHV0IHRleHQuCi0gKgotICoKLSAqIFdoZW4gYW4g
aW5kZXggcG9zaXRpb24gaXMgcmV0dXJuZWQgZnJvbSBhIFVUZXh0IGZ1bmN0aW9uLCBpdCB3aWxs
IGJlCi0gKiBhIG5hdGl2ZSBpbmRleCB0byB0aGUgdW5kZXJseWluZyB0ZXh0LiAgSW4gdGhlIGNh
c2Ugb2YgbXVsdGktdW5pdCBjaGFyYWN0ZXJzLAotICogaXQgd2lsbCAgYWx3YXlzIHJlZmVyIHRv
IHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyLAotICogbmV2ZXIgdG8gdGhlIGlu
dGVyaW9yLiAgVGhpcyBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSB0aGluZyBhcyBzYXlpbmcgdGhh
dAotICogYSByZXR1cm5lZCBpbmRleCB3aWxsIGFsd2F5cyBwb2ludCB0byBhIGJvdW5kYXJ5IGJl
dHdlZW4gY2hhcmFjdGVycy4KLSAqCi0gKiBXaGVuIGEgbmF0aXZlIGluZGV4IGlzIHN1cHBsaWVk
IHRvIGEgVVRleHQgZnVuY3Rpb24sIGFsbCBpbmRpY2VzIHRoYXQKLSAqIHJlZmVyIHRvIGFueSBw
YXJ0IG9mIGEgbXVsdGktdW5pdCBjaGFyYWN0ZXIgcmVwcmVzZW50YXRpb24gYXJlIGNvbnNpZGVy
ZWQKLSAqIHRvIGJlIGVxdWl2YWxlbnQuICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11bml0IGNoYXJh
Y3RlcnMsIGFuIGluY29taW5nIGluZGV4Ci0gKiB3aWxsIGJlIGxvZ2ljYWxseSBub3JtYWxpemVk
IHRvIHJlZmVyIHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgotICogCi0gKiBJdCBpcyBw
b3NzaWJsZSB0byB0ZXN0IHdoZXRoZXIgYSBuYXRpdmUgaW5kZXggaXMgb24gYSBjb2RlIHBvaW50
IGJvdW5kYXJ5Ci0gKiBieSBkb2luZyBhIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCkgZm9sbG93ZWQg
YnkgYSB1dGV4dF9nZXROYXRpdmVJbmRleCgpLgotICogSWYgdGhlIGluZGV4IGlzIHJldHVybmVk
IHVuY2hhbmdlZCwgaXQgd2FzIG9uIGEgY29kZSBwb2ludCBib3VuZGFyeS4gIElmCi0gKiBhbiBh
ZGp1c3RlZCBpbmRleCBpcyByZXR1cm5lZCwgdGhlIG9yaWdpbmFsIGluZGV4IHJlZmVycmVkIHRv
IHRoZQotICogaW50ZXJpb3Igb2YgYSBjaGFyYWN0ZXIuCi0gKgotICogPGVtPkNvbnZlbnRpb25z
IGZvciBjYWxsaW5nIFVUZXh0IGZ1bmN0aW9uczwvZW0+Ci0gKgotICogTW9zdCBVVGV4dCBhY2Nl
c3MgZnVuY3Rpb25zIGhhdmUgYXMgdGhlaXIgZmlyc3QgcGFyYW1ldGVyIGEgKFVUZXh0ICopIHBv
aW50ZXIsCi0gKiB3aGljaCBzcGVjaWZpZXMgdGhlIFVUZXh0IHRvIGJlIHVzZWQuICBVbmxlc3Mg
b3RoZXJ3aXNlIG5vdGVkLCB0aGUKLSAqIHBvaW50ZXIgbXVzdCByZWZlciB0byBhIHZhbGlkLCBv
cGVuIFVUZXh0LiAgQXR0ZW1wdGluZyB0bwotICogdXNlIGEgY2xvc2VkIFVUZXh0IG9yIHBhc3Np
bmcgYSBOVUxMIHBvaW50ZXIgaXMgYSBwcm9ncmFtbWluZyBlcnJvciBhbmQKLSAqIHdpbGwgcHJv
ZHVjZSB1bmRlZmluZWQgcmVzdWx0cyBvciBOVUxMIHBvaW50ZXIgZXhjZXB0aW9ucy4KLSAqIAot
ICogVGhlIFVUZXh0X09wZW4gZmFtaWx5IG9mIGZ1bmN0aW9ucyBjYW4gZWl0aGVyIG9wZW4gYW4g
ZXhpc3RpbmcgKGNsb3NlZCkKLSAqIFVUZXh0LCBvciBoZWFwIGFsbG9jYXRlIGEgbmV3IFVUZXh0
LiAgSGVyZSBpcyBzYW1wbGUgY29kZSBmb3IgY3JlYXRpbmcKLSAqIGEgc3RhY2stYWxsb2NhdGVk
IFVUZXh0LgotICoKLSAqIFxjb2RlCi0gKiAgICBjaGFyICAgICAqcyA9IHdoYXRldmVyKCk7ICAv
LyBBIHV0Zi04IHN0cmluZyAKLSAqICAgIFVfRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAqICAgIFVUZXh0ICAgIHV0ID0gVVRFWFRfSU5JVElBTElaRVI7Ci0gKiAgICB1dGV4dF9v
cGVuVVRGOCh1dCwgcywgLTEsICZzdGF0dXMpOwotICogICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gKiAgICAgICAgLy8gZXJyb3IgaGFuZGxpbmcKLSAqICAgIH0gZWxzZSB7Ci0gKiAgICAg
ICAgLy8gd29yayB3aXRoIHRoZSBVVGV4dAotICogICAgfQotICogXGVuZGNvZGUKLSAqCi0gKiBB
bnkgZXhpc3RpbmcgVVRleHQgcGFzc2VkIHRvIGFuIG9wZW4gZnVuY3Rpb24gX211c3RfIGhhdmUg
YmVlbiBpbml0aWFsaXplZCwgCi0gKiBlaXRoZXIgYnkgdGhlIFVURVhUX0lOSVRJQUxJWkVSLCBv
ciBieSBoYXZpbmcgYmVlbiBvcmlnaW5hbGx5IGhlYXAtYWxsb2NhdGVkCi0gKiBieSBhbiBvcGVu
IGZ1bmN0aW9uLiAgUGFzc2luZyBOVUxMIHdpbGwgY2F1c2UgdGhlIG9wZW4gZnVuY3Rpb24gdG8K
LSAqIGhlYXAtYWxsb2NhdGUgYW5kIGZ1bGx5IGluaXRpYWxpemUgYSBuZXcgVVRleHQuCi0gKgot
ICovCi0KLQotCi0jaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKLSNpbmNsdWRlICJ1bmljb2Rl
L3VjaGFyLmgiCi0jaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKLSNpbmNsdWRlICJ1bmljb2RlL2xv
Y2FscG9pbnRlci5oIgotI2luY2x1ZGUgInVuaWNvZGUvcmVwLmgiCi0jaW5jbHVkZSAidW5pY29k
ZS91bmlzdHIuaCIKLSNpbmNsdWRlICJ1bmljb2RlL2NoYXJpdGVyLmgiCi0jZW5kaWYKLQotCi1V
X0NERUNMX0JFR0lOCi0KLXN0cnVjdCBVVGV4dDsKLXR5cGVkZWYgc3RydWN0IFVUZXh0IFVUZXh0
OyAvKio8IEMgdHlwZWRlZiBmb3Igc3RydWN0IFVUZXh0LiBAc3RhYmxlIElDVSAzLjYgKi8KLQot
Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogICBDIEZ1bmN0aW9ucyBm
b3IgY3JlYXRpbmcgVVRleHQgd3JhcHBlcnMgYXJvdW5kIHZhcmlvdXMga2luZHMgb2YgdGV4dCBz
dHJpbmdzLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLS8qKgot
ICAqIENsb3NlIGZ1bmN0aW9uIGZvciBVVGV4dCBpbnN0YW5jZXMuCi0gICogQ2xlYW5zIHVwLCBy
ZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGJlaW5nIGhlbGQgYnkgYW4gb3BlbiBVVGV4dC4KLSAgKiA8
cD4KLSAgKiAgIElmIHRoZSBVVGV4dCB3YXMgb3JpZ2luYWxseSBhbGxvY2F0ZWQgYnkgb25lIG9m
IHRoZSB1dGV4dF9vcGVuIGZ1bmN0aW9ucywKLSAgKiAgIHRoZSBzdG9yYWdlIGFzc29jaWF0ZWQg
d2l0aCB0aGUgdXRleHQgd2lsbCBhbHNvIGJlIGZyZWVkLgotICAqICAgSWYgdGhlIFVUZXh0IHN0
b3JhZ2Ugb3JpZ2luYXRlZCB3aXRoIHRoZSBhcHBsaWNhdGlvbiwgYXMgaXQgd291bGQgd2l0aAot
ICAqICAgYSBsb2NhbCBvciBzdGF0aWMgaW5zdGFuY2UsIHRoZSBzdG9yYWdlIHdpbGwgbm90IGJl
IGRlbGV0ZWQuCi0gICoKLSAgKiAgIEFuIG9wZW4gVVRleHQgY2FuIGJlIHJlc2V0IHRvIHJlZmVy
IHRvIG5ldyBzdHJpbmcgYnkgdXNpbmcgb25lIG9mIHRoZSB1dGV4dF9vcGVuKCkKLSAgKiAgIGZ1
bmN0aW9ucyB3aXRob3V0IGZpcnN0IGNsb3NpbmcgdGhlIFVUZXh0LiAgCi0gICoKLSAgKiBAcGFy
YW0gdXQgIFRoZSBVVGV4dCB0byBiZSBjbG9zZWQuCi0gICogQHJldHVybiAgICBOVUxMIGlmIHRo
ZSBVVGV4dCBzdHJ1Y3Qgd2FzIGRlbGV0ZWQgYnkgdGhlIGNsb3NlLiAgSWYgdGhlIFVUZXh0IHN0
cnVjdAotICAqICAgICAgICAgICAgd2FzIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnkgdGhlIGNhbGxl
ciB0byB0aGUgb3BlbiBmdW5jdGlvbiwgaXQgaXMKLSAgKiAgICAgICAgICAgIHJldHVybmVkIGJ5
IHRoaXMgZnVuY3Rpb24sIGFuZCBtYXkgYmUgc2FmZWx5IHVzZWQgYWdhaW4gaW4KLSAgKiAgICAg
ICAgICAgIGEgc3Vic2VxdWVudCB1dGV4dF9vcGVuLgotICAqCi0gICogQHN0YWJsZSBJQ1UgMy40
Ci0gICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfY2xvc2UoVVRleHQgKnV0
KTsKLQotI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCi0KLVVfTkFNRVNQQUNFX0JFR0lOCi0KLS8q
KgotICogXGNsYXNzIExvY2FsVVRleHRQb2ludGVyCi0gKiAiU21hcnQgcG9pbnRlciIgY2xhc3Ms
IGNsb3NlcyBhIFVUZXh0IHZpYSB1dGV4dF9jbG9zZSgpLgotICogRm9yIG1vc3QgbWV0aG9kcyBz
ZWUgdGhlIExvY2FsUG9pbnRlckJhc2UgYmFzZSBjbGFzcy4KLSAqCi0gKiBAc2VlIExvY2FsUG9p
bnRlckJhc2UKLSAqIEBzZWUgTG9jYWxQb2ludGVyCi0gKiBAc3RhYmxlIElDVSA0LjQKLSAqLwot
VV9ERUZJTkVfTE9DQUxfT1BFTl9QT0lOVEVSKExvY2FsVVRleHRQb2ludGVyLCBVVGV4dCwgdXRl
eHRfY2xvc2UpOwotCi1VX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmCi0KLS8qKgotICogT3BlbiBh
IHJlYWQtb25seSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBmb3IgVVRGLTggc3RyaW5ncy4KLSAqIAot
ICogXGh0bWxvbmx5Ci0gKiBBbnkgaW52YWxpZCBVVEYtOCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBo
YW5kbGVkIGluIHRoaXMgd2F5OgotICogYSBzZXF1ZW5jZSBvZiBieXRlcyB0aGF0IGhhcyB0aGUg
Zm9ybSBvZiBhIHRydW5jYXRlZCwgYnV0IG90aGVyd2lzZSB2YWxpZCwKLSAqIFVURi04IHNlcXVl
bmNlIHdpbGwgYmUgcmVwbGFjZWQgYnkgYSBzaW5nbGUgdW5pY29kZSByZXBsYWNlbWVudCBjaGFy
YWN0ZXIsIFx1RkZGRC4gCi0gKiBBbnkgb3RoZXIgaWxsZWdhbCBieXRlcyB3aWxsIGVhY2ggYmUg
cmVwbGFjZWQgYnkgYSBcdUZGRkQuCi0gKiBcZW5kaHRtbG9ubHkKLSAqIAotICogQHBhcmFtIHV0
ICAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2ls
bCBiZSBjcmVhdGVkLgotICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCByZWZlciB0
byBhbiBpbml0aWFsaXplZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdpbGwgdGhlbgotICogICAgICAg
ICAgICAgICBiZSByZXNldCB0byByZWZlcmVuY2UgdGhlIHNwZWNpZmllZCBVVEYtOCBzdHJpbmcu
Ci0gKiBAcGFyYW0gcyAgICAgIEEgVVRGLTggc3RyaW5nLiAgTXVzdCBub3QgYmUgTlVMTC4KLSAq
IEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgVVRGLTggc3RyaW5nIGluIGJ5dGVzLCBv
ciAtMSBpZiB0aGUgc3RyaW5nIGlzCi0gKiAgICAgICAgICAgICAgIHplcm8gdGVybWluYXRlZC4K
LSAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgotICogQHJldHVybiAg
ICAgICBBIHBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYgYSBwcmUtYWxsb2NhdGVkIFVUZXh0IHdh
cyBwcm92aWRlZCwgaXQKLSAqICAgICAgICAgICAgICAgd2lsbCBhbHdheXMgYmUgdXNlZCBhbmQg
cmV0dXJuZWQuCi0gKiBAc3RhYmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VY
UE9SVDIKLXV0ZXh0X29wZW5VVEY4KFVUZXh0ICp1dCwgY29uc3QgY2hhciAqcywgaW50NjRfdCBs
ZW5ndGgsIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotLyoqCi0gKiBPcGVuIGEgcmVhZC1vbmx5
IFVUZXh0IGZvciBVQ2hhciAqIHN0cmluZy4KLSAqIAotICogQHBhcmFtIHV0ICAgICBQb2ludGVy
IHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVk
LgotICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVzdCByZWZlciB0byBhbiBpbml0aWFs
aXplZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdpbGwgdGhlbgotICogICAgICAgICAgICAgICBiZSBy
ZXNldCB0byByZWZlcmVuY2UgdGhlIHNwZWNpZmllZCBVQ2hhciBzdHJpbmcuCi0gKiBAcGFyYW0g
cyAgICAgIEEgVUNoYXIgKFVURi0xNikgc3RyaW5nCi0gKiBAcGFyYW0gbGVuZ3RoIFRoZSBudW1i
ZXIgb2YgVUNoYXJzIGluIHRoZSBpbnB1dCBzdHJpbmcsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMK
LSAqICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgotICogQHBhcmFtIHN0YXR1cyBFcnJv
cnMgYXJlIHJldHVybmVkIGhlcmUuCi0gKiBAcmV0dXJuICAgICAgIEEgcG9pbnRlciB0byB0aGUg
VVRleHQuICBJZiBhIHByZS1hbGxvY2F0ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBpdAotICogICAg
ICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KLSAqIEBzdGFibGUg
SUNVIDMuNAotICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfb3BlblVDaGFy
cyhVVGV4dCAqdXQsIGNvbnN0IFVDaGFyICpzLCBpbnQ2NF90IGxlbmd0aCwgVUVycm9yQ29kZSAq
c3RhdHVzKTsKLQotCi0jaWYgVV9TSE9XX0NQTFVTUExVU19BUEkKLS8qKgotICogT3BlbiBhIHdy
aXRhYmxlIFVUZXh0IGZvciBhIG5vbi1jb25zdCBVbmljb2RlU3RyaW5nLiAKLSAqIAotICogQHBh
cmFtIHV0ICAgICAgUG9pbnRlciB0byBhIFVUZXh0IHN0cnVjdC4gIElmIE5VTEwsIGEgbmV3IFVU
ZXh0IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVz
dCByZWZlciB0byBhbiBpbml0aWFsaXplZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdpbGwgdGhlbgot
ICogICAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIGlu
cHV0IHN0cmluZy4KLSAqIEBwYXJhbSBzICAgICAgIEEgVW5pY29kZVN0cmluZy4KLSAqIEBwYXJh
bSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgotICogQHJldHVybiAgICAgICAgUG9p
bnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwgdGhp
cwotICogICAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVybmVkLgot
ICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVUZXh0ICogVV9FWFBPUlQyCi11dGV4
dF9vcGVuVW5pY29kZVN0cmluZyhVVGV4dCAqdXQsIGljdTo6VW5pY29kZVN0cmluZyAqcywgVUVy
cm9yQ29kZSAqc3RhdHVzKTsKLQotCi0vKioKLSAqIE9wZW4gYSBVVGV4dCBmb3IgYSBjb25zdCBV
bmljb2RlU3RyaW5nLiAgIFRoZSByZXN1bHRpbmcgVVRleHQgd2lsbCBub3QgYmUgd3JpdGFibGUu
Ci0gKiAKLSAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVM
TCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgotICogICAgICAgICAgICAgICBJZiBub24t
TlVMTCwgbXVzdCByZWZlciB0byBhbiBpbml0aWFsaXplZCBVVGV4dCBzdHJ1Y3QsIHdoaWNoIHdp
bGwgdGhlbgotICogICAgICAgICAgICAgICBiZSByZXNldCB0byByZWZlcmVuY2UgdGhlIHNwZWNp
ZmllZCBpbnB1dCBzdHJpbmcuCi0gKiBAcGFyYW0gcyAgICAgIEEgY29uc3QgVW5pY29kZVN0cmlu
ZyB0byBiZSB3cmFwcGVkLgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhl
cmUuCi0gKiBAcmV0dXJuICAgICAgIFBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYgYSBVVGV4dCB3
YXMgc3VwcGxpZWQgYXMgaW5wdXQsIHRoaXMKLSAqICAgICAgICAgICAgICAgd2lsbCBhbHdheXMg
YmUgdXNlZCBhbmQgcmV0dXJuZWQuCi0gKiBAc3RhYmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUg
VVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X29wZW5Db25zdFVuaWNvZGVTdHJpbmcoVVRleHQgKnV0
LCBjb25zdCBpY3U6OlVuaWNvZGVTdHJpbmcgKnMsIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQot
LyoqCi0gKiBPcGVuIGEgd3JpdGFibGUgVVRleHQgaW1wbGVtZW50YXRpb24gZm9yIGFuIElDVSBS
ZXBsYWNlYWJsZSBvYmplY3QuCi0gKiBAcGFyYW0gdXQgICAgUG9pbnRlciB0byBhIFVUZXh0IHN0
cnVjdC4gIElmIE5VTEwsIGEgbmV3IFVUZXh0IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAgICAg
ICAgICAgSWYgbm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4
dCwgd2hpY2ggd2lsbCB0aGVuCi0gKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5j
ZSB0aGUgc3BlY2lmaWVkIHJlcGxhY2VhYmxlIHRleHQuCi0gKiBAcGFyYW0gcmVwICAgIEEgUmVw
bGFjZWFibGUgdGV4dCBvYmplY3QuCi0gKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJu
ZWQgaGVyZS4KLSAqIEByZXR1cm4gICAgICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVU
ZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwgdGhpcwotICogICAgICAgICAgICAgICB3aWxsIGFs
d2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KLSAqIEBzZWUgUmVwbGFjZWFibGUKLSAqIEBzdGFi
bGUgSUNVIDMuNAotICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfb3BlblJl
cGxhY2VhYmxlKFVUZXh0ICp1dCwgaWN1OjpSZXBsYWNlYWJsZSAqcmVwLCBVRXJyb3JDb2RlICpz
dGF0dXMpOwotCi0vKioKLSAqIE9wZW4gYSAgVVRleHQgaW1wbGVtZW50YXRpb24gb3ZlciBhbiBJ
Q1UgQ2hhcmFjdGVySXRlcmF0b3IuCi0gKiBAcGFyYW0gdXQgICAgUG9pbnRlciB0byBhIFVUZXh0
IHN0cnVjdC4gIElmIE5VTEwsIGEgbmV3IFVUZXh0IHdpbGwgYmUgY3JlYXRlZC4KLSAqICAgICAg
ICAgICAgICAgSWYgbm9uLU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBV
VGV4dCwgd2hpY2ggd2lsbCB0aGVuCi0gKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVy
ZW5jZSB0aGUgc3BlY2lmaWVkIHJlcGxhY2VhYmxlIHRleHQuCi0gKiBAcGFyYW0gY2kgICAgIEEg
Q2hhcmFjdGVyIEl0ZXJhdG9yLgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVk
IGhlcmUuCi0gKiBAcmV0dXJuICAgICAgIFBvaW50ZXIgdG8gdGhlIFVUZXh0LiAgSWYgYSBVVGV4
dCB3YXMgc3VwcGxpZWQgYXMgaW5wdXQsIHRoaXMKLSAqICAgICAgICAgICAgICAgd2lsbCBhbHdh
eXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCi0gKiBAc2VlIFJlcGxhY2VhYmxlCi0gKiBAc3RhYmxl
IElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X29wZW5DaGFy
YWN0ZXJJdGVyYXRvcihVVGV4dCAqdXQsIGljdTo6Q2hhcmFjdGVySXRlcmF0b3IgKmNpLCBVRXJy
b3JDb2RlICpzdGF0dXMpOwotCi0jZW5kaWYKLQotCi0vKioKLSAgKiAgQ2xvbmUgYSBVVGV4dC4g
IFRoaXMgaXMgbXVjaCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3aGVyZSB0aGUgc291cmNlIHRleHQg
aXMgaXRzZWxmCi0gICogIGFub3RoZXIgVVRleHQuCi0gICoKLSAgKiAgQSBkZWVwIGNsb25lIHdp
bGwgY29weSBib3RoIHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSB1bmRlcmx5aW5n
IHRleHQuCi0gICogIFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVkIFVUZXh0IHdpbGwgb3BlcmF0ZSBj
b21wbGV0ZWx5IGluZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlvbnMKLSAgKiAgbWFkZSB0byB0aGUg
dGV4dCBpbiBvbmUgd2lsbCBub3QgYWZmZWN0IHRoZSBvdGhlci4gIFRleHQgcHJvdmlkZXJzIGFy
ZSBub3QKLSAgKiAgcmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVwIGNsb25lcy4gIFRoZSB1c2VyIG9m
IGNsb25lKCkgbXVzdCBjaGVjayB0aGUgc3RhdHVzIHJldHVybgotICAqICBhbmQgYmUgcHJlcGFy
ZWQgdG8gaGFuZGxlIGZhaWx1cmVzLgotICAqCi0gICogIFRoZSBzdGFuZGFyZCBVVGV4dCBpbXBs
ZW1lbnRhdGlvbnMgZm9yIFVURjgsIFVDaGFyICosIFVuaWNvZGVTdHJpbmcgYW5kCi0gICogIFJl
cGxhY2VhYmxlIGFsbCBzdXBwb3J0IGRlZXAgY2xvbmluZy4KLSAgKgotICAqICBUaGUgVVRleHQg
cmV0dXJuZWQgZnJvbSBhIGRlZXAgY2xvbmUgd2lsbCBiZSB3cml0YWJsZSwgYXNzdW1pbmcgdGhh
dCB0aGUgdGV4dAotICAqICBwcm92aWRlciBpcyBhYmxlIHRvIHN1cHBvcnQgd3JpdGluZywgZXZl
biBpZiB0aGUgc291cmNlIFVUZXh0IGhhZCBiZWVuIG1hZGUKLSAgKiAgbm9uLXdyaXRhYmxlIGJ5
IG1lYW5zIG9mIFVUZXh0X2ZyZWV6ZSgpLgotICAqCi0gICogIEEgc2hhbGxvdyBjbG9uZSByZXBs
aWNhdGVzIG9ubHkgdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlczsgaXQgZG9lcyBub3QgbWFrZQot
ICAqICBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgdGV4dC4gIFNoYWxsb3cgY2xvbmVzIGNhbiBi
ZSB1c2VkIGFzIGFuIGVmZmljaWVudCB3YXkgdG8gCi0gICogIGhhdmUgbXVsdGlwbGUgaXRlcmF0
b3JzIGFjdGl2ZSBpbiBhIHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0IGlzIG5vdCBiZWluZwotICAq
ICBtb2RpZmllZC4KLSAgKgotICAqICBBIHNoYWxsb3cgY2xvbmUgb3BlcmF0aW9uIHdpbGwgbm90
IGZhaWwsIGJhcnJpbmcgdHJ1bHkgZXhjZXB0aW9uYWwgY29uZGl0aW9ucyBzdWNoCi0gICogIGFz
IG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLgotICAqCi0gICogIFNoYWxsb3cgVVRleHQgY2xv
bmVzIHNob3VsZCBiZSBhdm9pZGVkIGlmIHRoZSBVVGV4dCBmdW5jdGlvbnMgdGhhdCBtb2RpZnkg
dGhlCi0gICogIHRleHQgYXJlIGV4cGVjdGVkIHRvIGJlIHVzZWQsIGVpdGhlciBvbiB0aGUgb3Jp
Z2luYWwgb3IgdGhlIGNsb25lZCBVVGV4dC4KLSAgKiAgQW55IHN1Y2ggbW9kaWZpY2F0aW9ucyAg
Y2FuIGNhdXNlIHVucHJlZGljdGFibGUgYmVoYXZpb3IuICBSZWFkIE9ubHkKLSAgKiAgc2hhbGxv
dyBjbG9uZXMgcHJvdmlkZSBzb21lIHByb3RlY3Rpb24gYWdhaW5zdCBlcnJvcnMgb2YgdGhpcyB0
eXBlIGJ5Ci0gICogIGRpc2FibGluZyB0ZXh0IG1vZGlmaWNhdGlvbiB2aWEgdGhlIGNsb25lZCBV
VGV4dC4KLSAgKgotICAqICBBIHNoYWxsb3cgY2xvbmUgbWFkZSB3aXRoIHRoZSByZWFkT25seSBw
YXJhbWV0ZXIgPT0gRkFMU0Ugd2lsbCBwcmVzZXJ2ZSB0aGUgCi0gICogIHV0ZXh0X2lzV3JpdGFi
bGUoKSBzdGF0ZSBvZiB0aGUgc291cmNlIG9iamVjdC4gIE5vdGUsIGhvd2V2ZXIsIHRoYXQKLSAg
KiAgd3JpdGUgb3BlcmF0aW9ucyBtdXN0IGJlIGF2b2lkZWQgd2hpbGUgbW9yZSB0aGFuIG9uZSBV
VGV4dCBleGlzdHMgdGhhdCByZWZlcgotICAqICB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIHRleHQu
Ci0gICoKLSAgKiAgQSBVVGV4dCBhbmQgaXRzIGNsb25lIG1heSBiZSBzYWZlbHkgY29uY3VycmVu
dGx5IGFjY2Vzc2VkIGJ5IHNlcGFyYXRlIHRocmVhZHMuCi0gICogIFRoaXMgaXMgdHJ1ZSBmb3Ig
cmVhZCBhY2Nlc3Mgb25seSB3aXRoIHNoYWxsb3cgY2xvbmVzLCBhbmQgZm9yIGJvdGggcmVhZCBh
bmQKLSAgKiAgd3JpdGUgYWNjZXNzIHdpdGggZGVlcCBjbG9uZXMuCi0gICogIEl0IGlzIHRoZSBy
ZXNwb25zaWJpbGl0eSBvZiB0aGUgVGV4dCBQcm92aWRlciB0byBlbnN1cmUgdGhhdCB0aGlzIHRo
cmVhZCBzYWZldHkKLSAgKiAgY29uc3RyYWludCBpcyBtZXQuCi0gICoKLSAgKiAgQHBhcmFtIGRl
c3QgICBBIFVUZXh0IHN0cnVjdCB0byBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgcmVzdWx0IG9mIHRo
ZSBjbG9uZSBvcGVyYXRpb24sCi0gICogICAgICAgICAgICAgICAgb3IgTlVMTCBpZiB0aGUgY2xv
bmUgZnVuY3Rpb24gc2hvdWxkIGhlYXAtYWxsb2NhdGUgYSBuZXcgVVRleHQgc3RydWN0LgotICAq
ICAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGFscmVhZHkgZXhp
c3RpbmcgVVRleHQsIHdoaWNoIHdpbGwgdGhlbgotICAqICAgICAgICAgICAgICAgIGJlIHJlc2V0
IHRvIGJlY29tZSB0aGUgY2xvbmUuCi0gICogIEBwYXJhbSBzcmMgICAgVGhlIFVUZXh0IHRvIGJl
IGNsb25lZC4KLSAgKiAgQHBhcmFtIGRlZXAgICBUUlVFIHRvIHJlcXVlc3QgYSBkZWVwIGNsb25l
LCBGQUxTRSBmb3IgYSBzaGFsbG93IGNsb25lLgotICAqICBAcGFyYW0gcmVhZE9ubHkgVFJVRSB0
byByZXF1ZXN0IHRoYXQgdGhlIGNsb25lZCBVVGV4dCBoYXZlIHJlYWQgb25seSBhY2Nlc3MgdG8g
dGhlIAotICAqICAgICAgICAgICAgICAgIHVuZGVybHlpbmcgdGV4dC4gIAotCi0gICogIEBwYXJh
bSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLiAgRm9yIGRlZXAgY2xvbmVzLCBVX1VO
U1VQUE9SVEVEX0VSUk9SCi0gICogICAgICAgICAgICAgICAgd2lsbCBiZSByZXR1cm5lZCBpZiB0
aGUgdGV4dCBwcm92aWRlciBpcyB1bmFibGUgdG8gY2xvbmUgdGhlCi0gICogICAgICAgICAgICAg
ICAgb3JpZ2luYWwgdGV4dC4KLSAgKiAgQHJldHVybiAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBj
bG9uZSwgb3IgTlVMTCBpZiB0aGUgY2xvbmUgb3BlcmF0aW9uIGZhaWxlZC4KLSAgKiAgQHN0YWJs
ZSBJQ1UgMy40Ci0gICovCi1VX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgotdXRleHRfY2xvbmUo
VVRleHQgKmRlc3QsIGNvbnN0IFVUZXh0ICpzcmMsIFVCb29sIGRlZXAsIFVCb29sIHJlYWRPbmx5
LCBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0KLS8qKgotICAqICBDb21wYXJlIHR3byBVVGV4dCBv
YmplY3RzIGZvciBlcXVhbGl0eS4KLSAgKiAgVVRleHRzIGFyZSBlcXVhbCBpZiB0aGV5IGFyZSBp
dGVyYXRpbmcgb3ZlciB0aGUgc2FtZSB0ZXh0LCBhbmQKLSAgKiAgICBoYXZlIHRoZSBzYW1lIGl0
ZXJhdGlvbiBwb3NpdGlvbiB3aXRoaW4gdGhlIHRleHQuCi0gICogICAgSWYgZWl0aGVyIG9yIGJv
dGggb2YgdGhlIHBhcmFtZXRlcnMgYXJlIE5VTEwsIHRoZSBjb21wYXJpc29uIGlzIEZBTFNFLgot
ICAqCi0gICogIEBwYXJhbSBhICAgVGhlIGZpcnN0IG9mIHRoZSB0d28gVVRleHRzIHRvIGNvbXBh
cmUuCi0gICogIEBwYXJhbSBiICAgVGhlIG90aGVyIFVUZXh0IHRvIGJlIGNvbXBhcmVkLgotICAq
ICBAcmV0dXJuICAgIFRSVUUgaWYgdGhlIHR3byBVVGV4dHMgYXJlIGVxdWFsLgotICAqICBAc3Rh
YmxlIElDVSAzLjYKLSAgKi8KLVVfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgotdXRleHRfZXF1YWxz
KGNvbnN0IFVUZXh0ICphLCBjb25zdCBVVGV4dCAqYik7Ci0KLQotLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCi0gKgotICogICBGdW5jdGlvbnMgdG8gd29yayB3aXRoIHRoZSB0ZXh0IHJlcHJlc2V0ZWQg
YnkgYSBVVGV4dCB3cmFwcGVyCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKioKLSAg
KiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4gIERlcGVuZGluZyBvbiB0aGUgY2hhcmFjdGVy
aXN0aWNzCi0gICogb2YgdGhlIHVuZGVybHlpbmcgdGV4dCByZXByZXNlbnRhdGlvbiwgdGhpcyBt
YXkgYmUgZXhwZW5zaXZlLiAgCi0gICogQHNlZSAgdXRleHRfaXNMZW5ndGhFeHBlbnNpdmUoKQot
ICAqCi0gICoKLSAgKiBAcGFyYW0gdXQgIHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICAqIEBy
ZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCwgZXhwcmVzc2VkIGluIG5hdGl2ZSB1bml0cy4K
LSAgKgotICAqIEBzdGFibGUgSUNVIDMuNAotICAqLwotVV9TVEFCTEUgaW50NjRfdCBVX0VYUE9S
VDIKLXV0ZXh0X25hdGl2ZUxlbmd0aChVVGV4dCAqdXQpOwotCi0vKioKLSAqICBSZXR1cm4gVFJV
RSBpZiBjYWxjdWxhdGluZyB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGNvdWxkIGJlIGV4cGVuc2l2
ZS4KLSAqICBGaW5kaW5nIHRoZSBsZW5ndGggb2YgTlVMIHRlcm1pbmF0ZWQgc3RyaW5ncyBpcyBj
b25zaWRlcmVkIHRvIGJlIGV4cGVuc2l2ZS4KLSAqCi0gKiAgTm90ZSB0aGF0IHRoZSB2YWx1ZSBv
ZiB0aGlzIGZ1bmN0aW9uIG1heSBjaGFuZ2UKLSAqICBhcyB0aGUgcmVzdWx0IG9mIG90aGVyIG9w
ZXJhdGlvbnMgb24gYSBVVGV4dC4KLSAqICBPbmNlIHRoZSBsZW5ndGggb2YgYSBzdHJpbmcgaGFz
IGJlZW4gZGlzY292ZXJlZCwgaXQgd2lsbCBubyBsb25nZXIKLSAqICBiZSBleHBlbnNpdmUgdG8g
cmVwb3J0IGl0LgotICoKLSAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KLSAq
IEByZXR1cm4gVFJVRSBpZiBkZXRlcm1pbmluZyB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGNvdWxk
IGJlIHRpbWUgY29uc3VtaW5nLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVC
b29sIFVfRVhQT1JUMgotdXRleHRfaXNMZW5ndGhFeHBlbnNpdmUoY29uc3QgVVRleHQgKnV0KTsK
LQotLyoqCi0gKiBSZXR1cm5zIHRoZSBjb2RlIHBvaW50IGF0IHRoZSByZXF1ZXN0ZWQgaW5kZXgs
Ci0gKiBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQgaXMgb3V0IG9mIGJvdW5kcy4KLSAqCi0gKiBJ
ZiB0aGUgc3BlY2lmaWVkIGluZGV4IHBvaW50cyB0byB0aGUgaW50ZXJpb3Igb2YgYSBtdWx0aS11
bml0Ci0gKiBjaGFyYWN0ZXIgLSBvbmUgb2YgdGhlIHRyYWlsIGJ5dGVzIG9mIGEgVVRGLTggc2Vx
dWVuY2UsIGZvciBleGFtcGxlIC0KLSAqIHRoZSBjb21wbGV0ZSBjb2RlIHBvaW50IHdpbGwgYmUg
cmV0dXJuZWQuCi0gKgotICogVGhlIGl0ZXJhdGlvbiBwb3NpdGlvbiB3aWxsIGJlIHNldCB0byB0
aGUgc3RhcnQgb2YgdGhlIHJldHVybmVkIGNvZGUgcG9pbnQuCi0gKgotICogVGhpcyBmdW5jdGlv
biBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhlIHRoZSBzZXF1ZW5jZQotICogICAgdXRleHRf
c2V0TmF0aXZlSW5kZXgoaW5kZXgpOwotICogICAgdXRleHRfY3VycmVudDMyKCk7Ci0gKiAoVGhl
cmUgaXMgYSBzdWJ0bGUgZGlmZmVyZW5jZSBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIGJvdW5kcyBi
eSBiZWluZyBsZXNzIHRoYW4gemVybyAtIAotICogdXRleHRfc2V0TmF0aXZlSW5kZXgobmVnYXRp
dmUgdmFsdWUpIHNldHMgdGhlIGluZGV4IHRvIHplcm8sIGFmdGVyIHdoaWNoIHV0ZXh0X2N1cnJl
bnQoKQotICogd2lsbCByZXR1cm4gdGhlIGNoYXIgYXQgemVyby4gIHV0ZXh0X2NoYXIzMkF0KG5l
Z2F0aXZlIGluZGV4KSwgb24gdGhlIG90aGVyIGhhbmQsIHdpbGwKLSAqIHJldHVybiB0aGUgVV9T
RU5USU5FTCB2YWx1ZSBvZiAtMS4pCi0gKiAKLSAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBh
Y2Nlc3NlZAotICogQHBhcmFtIG5hdGl2ZUluZGV4IHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNo
YXJhY3RlciB0byBiZSBhY2Nlc3NlZC4gIElmIHRoZSBpbmRleCBwb2ludHMKLSAqICAgICAgICB0
byBvdGhlciB0aGFuIHRoZSBmaXJzdCB1bml0IG9mIGEgbXVsdGktdW5pdCBjaGFyYWN0ZXIsIGl0
IHdpbGwgYmUgYWRqdXN0ZWQKLSAqICAgICAgICB0byB0aGUgc3RhcnQgb2YgdGhlIGNoYXJhY3Rl
ci4KLSAqIEByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhlIHNwZWNpZmllZCBpbmRleC4KLSAq
IEBzdGFibGUgSUNVIDMuNAotICovCi1VX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgotdXRleHRf
Y2hhcjMyQXQoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KTsKLQotCi0vKioKLSAqCi0g
KiBHZXQgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uLAot
ICogb3IgVV9TRU5USU5FTCAoLTEpIGlmIHRoZSBpdGVyYXRpb24gaGFzIHJlYWNoZWQgdGhlIGVu
ZCBvZgotICogdGhlIGlucHV0IHRleHQuCi0gKgotICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJl
IGFjY2Vzc2VkLgotICogQHJldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGF0IHRoZSBjdXJy
ZW50IGl0ZXJhdG9yIHBvc2l0aW9uLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxF
IFVDaGFyMzIgVV9FWFBPUlQyCi11dGV4dF9jdXJyZW50MzIoVVRleHQgKnV0KTsKLQotCi0vKioK
LSAqIEdldCB0aGUgY29kZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24g
b2YgdGhlIFVUZXh0LCBhbmQKLSAqIGFkdmFuY2UgdGhlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBp
bmRleCBmb2xsb3dpbmcgdGhlIGNoYXJhY3Rlci4KLSAqCi0gKiBJZiB0aGUgcG9zaXRpb24gaXMg
YXQgdGhlIGVuZCBvZiB0aGUgdGV4dCAodGhlIGluZGV4IGZvbGxvd2luZwotICogdGhlIGxhc3Qg
Y2hhcmFjdGVyLCB3aGljaCBpcyBhbHNvIHRoZSBsZW5ndGggb2YgdGhlIHRleHQpLCAKLSAqIHJl
dHVybiBVX1NFTlRJTkVMICgtMSkgYW5kIGRvIG5vdCBhZHZhbmNlIHRoZSBpbmRleC4gCi0gKgot
ICogVGhpcyBpcyBhIHBvc3QtaW5jcmVtZW50IG9wZXJhdGlvbi4KLSAqCi0gKiBBbiBpbmxpbmUg
bWFjcm8gdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLCBVVEVYVF9ORVhUMzIoKSwgCi0gKiBpcyBh
dmFpbGFibGUgZm9yIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHVzZS4KLSAqCi0gKiBAcGFyYW0gdXQg
dGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCi0gKiBAcmV0dXJuIHRoZSBVbmljb2RlIGNvZGUgcG9p
bnQgYXQgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbi4KLSAqIEBzZWUgVVRFWFRfTkVYVDMyCi0gKiBA
c3RhYmxlIElDVSAzLjQKLSAqLwotVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXV0ZXh0X25l
eHQzMihVVGV4dCAqdXQpOwotCi0KLS8qKgotICogIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc2l0aW9u
IHRvIHRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9pbnQpIHdob3NlCi0gKiAgaW5kZXggcHJlY2VkZXMg
dGhlIGN1cnJlbnQgcG9zaXRpb24sIGFuZCByZXR1cm4gdGhhdCBjaGFyYWN0ZXIuCi0gKiAgVGhp
cyBpcyBhIHByZS1kZWNyZW1lbnQgb3BlcmF0aW9uLgotICoKLSAqICBJZiB0aGUgaW5pdGlhbCBw
b3NpdGlvbiBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgKGluZGV4IG9mIDApIAotICogIHJl
dHVybiBVX1NFTlRJTkVMICgtMSksIGFuZCBsZWF2ZSB0aGUgcG9zaXRpb24gdW5jaGFuZ2VkLgot
ICoKLSAqICBBbiBpbmxpbmUgbWFjcm8gdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLCBVVEVYVF9Q
UkVWSU9VUzMyKCksIAotICogIGlzIGF2YWlsYWJsZSBmb3IgcGVyZm9ybWFuY2UgY3JpdGljYWwg
dXNlLgotICoKLSAqICBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCi0gKiAgQHJl
dHVybiB0aGUgcHJldmlvdXMgVUNoYXIzMiBjb2RlIHBvaW50LCBvciBVX1NFTlRJTkVMICgtMSkg
Ci0gKiAgICAgICAgICBpZiB0aGUgaXRlcmF0aW9uIGhhcyByZWFjaGVkIHRoZSBzdGFydCBvZiB0
aGUgdGV4dC4KLSAqICBAc2VlIFVURVhUX1BSRVZJT1VTMzIKLSAqICBAc3RhYmxlIElDVSAzLjQK
LSAqLwotVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKLXV0ZXh0X3ByZXZpb3VzMzIoVVRleHQg
KnV0KTsKLQotCi0vKioKLSAgKiBTZXQgdGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgcmV0dXJuIHRo
ZSBjb2RlIHBvaW50IGF0IHRoYXQgaW5kZXguIAotICAqIExlYXZlIHRoZSBpdGVyYXRpb24gaW5k
ZXggYXQgdGhlIHN0YXJ0IG9mIHRoZSBmb2xsb3dpbmcgY29kZSBwb2ludC4KLSAgKgotICAqIFRo
aXMgZnVuY3Rpb24gaXMgdGhlIG1vc3QgZWZmaWNpZW50IGFuZCBjb252ZW5pZW50IHdheSB0bwot
ICAqIGJlZ2luIGEgZm9yd2FyZCBpdGVyYXRpb24uICBUaGUgcmVzdWx0cyBhcmUgaWRlbnRpY2Fs
IHRvIHRoZSB0aG9zZQotICAqIGZyb20gdGhlIHNlcXVlbmNlCi0gICogXGNvZGUKLSAgKiAgICB1
dGV4dF9zZXRJbmRleCgpOwotICAqICAgIHV0ZXh0X25leHQzMigpOwotICAqIFxlbmRjb2RlCi0g
ICoKLSAgKiAgQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICAqICBAcGFyYW0g
bmF0aXZlSW5kZXggSXRlcmF0aW9uIGluZGV4LCBpbiB0aGUgbmF0aXZlIHVuaXRzIG9mIHRoZSB0
ZXh0IHByb3ZpZGVyLgotICAqICBAcmV0dXJuIENvZGUgcG9pbnQgd2hpY2ggc3RhcnRzIGF0IG9y
IGJlZm9yZSBpbmRleCwKLSAgKiAgICAgICAgIG9yIFVfU0VOVElORUwgKC0xKSBpZiBpdCBpcyBv
dXQgb2YgYm91bmRzLgotICAqIEBzdGFibGUgSUNVIDMuNAotICAqLwotVV9TVEFCTEUgVUNoYXIz
MiBVX0VYUE9SVDIKLXV0ZXh0X25leHQzMkZyb20oVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUlu
ZGV4KTsKLQotCi0KLS8qKgotICAqIFNldCB0aGUgaXRlcmF0aW9uIGluZGV4LCBhbmQgcmV0dXJu
IHRoZSBjb2RlIHBvaW50IHByZWNlZGluZyB0aGUKLSAgKiBvbmUgc3BlY2lmaWVkIGJ5IHRoZSBp
bml0aWFsIGluZGV4LiAgTGVhdmUgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbgotICAqIGF0IHRoZSBz
dGFydCBvZiB0aGUgcmV0dXJuZWQgY29kZSBwb2ludC4KLSAgKgotICAqIFRoaXMgZnVuY3Rpb24g
aXMgdGhlIG1vc3QgZWZmaWNpZW50IGFuZCBjb252ZW5pZW50IHdheSB0bwotICAqIGJlZ2luIGEg
YmFja3dhcmRzIGl0ZXJhdGlvbi4KLSAgKgotICAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBh
Y2Nlc3NlZC4KLSAgKiBAcGFyYW0gbmF0aXZlSW5kZXggSXRlcmF0aW9uIGluZGV4IGluIHRoZSBu
YXRpdmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCi0gICogQHJldHVybiBDb2RlIHBvaW50
IHByZWNlZGluZyB0aGUgb25lIGF0IHRoZSBpbml0aWFsIGluZGV4LAotICAqICAgICAgICAgb3Ig
VV9TRU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCi0gICoKLSAgKiBAc3RhYmxl
IElDVSAzLjQKLSAgKi8KLVVfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCi11dGV4dF9wcmV2aW91
czMyRnJvbShVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOwotCi0vKioKLSAgKiBHZXQg
dGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24sIHdoaWNoIGNhbiByYW5nZSBmcm9tIDAgdG8g
Ci0gICogdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4KLSAgKiBUaGUgcG9zaXRpb24gaXMgYSBuYXRp
dmUgaW5kZXggaW50byB0aGUgaW5wdXQgdGV4dCwgaW4gd2hhdGV2ZXIgZm9ybWF0IGl0Ci0gICog
bWF5IGhhdmUgKHBvc3NpYmx5IFVURi04IGZvciBleGFtcGxlKSwgYW5kIG1heSBub3QgYWx3YXlz
IGJlIHRoZSBzYW1lIGFzCi0gICogdGhlIGNvcnJlc3BvbmRpbmcgVUNoYXIgKFVURi0xNikgaW5k
ZXguCi0gICogVGhlIHJldHVybmVkIHBvc2l0aW9uIHdpbGwgYWx3YXlzIGJlIGFsaWduZWQgdG8g
YSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAKLSAgKgotICAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBi
ZSBhY2Nlc3NlZC4KLSAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGluZGV4IHBvc2l0aW9uLCBpbiB0
aGUgbmF0aXZlIHVuaXRzIG9mIHRoZSB0ZXh0IHByb3ZpZGVyLgotICAqIEBzdGFibGUgSUNVIDMu
NAotICAqLwotVV9TVEFCTEUgaW50NjRfdCBVX0VYUE9SVDIKLXV0ZXh0X2dldE5hdGl2ZUluZGV4
KGNvbnN0IFVUZXh0ICp1dCk7Ci0KLS8qKgotICogU2V0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBw
b3NpdGlvbiB0byB0aGUgbmVhcmVzdCBjb2RlIHBvaW50Ci0gKiBib3VuZGFyeSBhdCBvciBwcmVj
ZWRpbmcgdGhlIHNwZWNpZmllZCBpbmRleC4KLSAqIFRoZSBpbmRleCBpcyBpbiB0aGUgbmF0aXZl
IHVuaXRzIG9mIHRoZSBvcmlnaW5hbCBpbnB1dCB0ZXh0LgotICogSWYgdGhlIGluZGV4IGlzIG91
dCBvZiByYW5nZSwgaXQgd2lsbCBiZSBwaW5uZWQgdG8gYmUgd2l0aGluCi0gKiB0aGUgcmFuZ2Ug
b2YgdGhlIGlucHV0IHRleHQuCi0gKiA8cD4KLSAqIEl0IHdpbGwgdXN1YWxseSBiZSBtb3JlIGVm
ZmljaWVudCB0byBiZWdpbiBhbiBpdGVyYXRpb24KLSAqIHVzaW5nIHRoZSBmdW5jdGlvbnMgdXRl
eHRfbmV4dDMyRnJvbSgpIG9yIHV0ZXh0X3ByZXZpb3VzMzJGcm9tKCkKLSAqIHJhdGhlciB0aGFu
IHNldEluZGV4KCkuCi0gKiA8cD4KLSAqIE1vdmluZyB0aGUgaW5kZXggcG9zaXRpb24gdG8gYW4g
YWRqYWNlbnQgY2hhcmFjdGVyIGlzIGJlc3QgZG9uZQotICogd2l0aCB1dGV4dF9uZXh0MzIoKSwg
dXRleHRfcHJldmlvdXMzMigpIG9yIHV0ZXh0X21vdmVJbmRleDMyKCkuCi0gKiBBdHRlbXB0aW5n
IHRvIGRvIGRpcmVjdCBhcml0aG1ldGljIG9uIHRoZSBpbmRleCBwb3NpdGlvbiBpcwotICogY29t
cGxpY2F0ZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgc2l6ZSAoaW4gbmF0aXZlIHVuaXRzKSBvZiBh
Ci0gKiBjaGFyYWN0ZXIgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZyByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgY2hhcmFjdGVyCi0gKiAoVVRGLTgsIFVURi0xNiwgVVRGLTMyLCBhcmJpdHJhcnkgY29k
ZXBhZ2UpLCBhbmQgaXMgbm90Ci0gKiBlYXNpbHkga25vd2FibGUuCi0gKgotICogQHBhcmFtIHV0
IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgotICogQHBhcmFtIG5hdGl2ZUluZGV4IHRoZSBuYXRp
dmUgdW5pdCBpbmRleCBvZiB0aGUgbmV3IGl0ZXJhdGlvbiBwb3NpdGlvbi4KLSAqIEBzdGFibGUg
SUNVIDMuNAotICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdXRleHRfc2V0TmF0aXZlSW5k
ZXgoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KTsKLQotLyoqCi0gKiBNb3ZlIHRoZSBp
dGVyYXRvciBwb3N0aW9uIGJ5IGRlbHRhIGNvZGUgcG9pbnRzLiAgVGhlIG51bWJlciBvZiBjb2Rl
IHBvaW50cwotICogaXMgYSBzaWduZWQgbnVtYmVyOyBhIG5lZ2F0aXZlIGRlbHRhIHdpbGwgbW92
ZSB0aGUgaXRlcmF0b3IgYmFja3dhcmRzLAotICogdG93YXJkcyB0aGUgc3RhcnQgb2YgdGhlIHRl
eHQuCi0gKiA8cD4KLSAqIFRoZSBpbmRleCBpcyBtb3ZlZCBieSA8Y29kZT5kZWx0YTwvY29kZT4g
Y29kZSBwb2ludHMKLSAqIGZvcndhcmQgb3IgYmFja3dhcmQsIGJ1dCBubyBmdXJ0aGVyIGJhY2t3
YXJkIHRoYW4gdG8gMCBhbmQKLSAqIG5vIGZ1cnRoZXIgZm9yd2FyZCB0aGFuIHRvIHV0ZXh0X25h
dGl2ZUxlbmd0aCgpLgotICogVGhlIHJlc3VsdGluZyBpbmRleCB2YWx1ZSB3aWxsIGJlIGluIGJl
dHdlZW4gMCBhbmQgbGVuZ3RoLCBpbmNsdXNpdmUuCi0gKgotICogQHBhcmFtIHV0IHRoZSB0ZXh0
IHRvIGJlIGFjY2Vzc2VkLgotICogQHBhcmFtIGRlbHRhIHRoZSBzaWduZWQgbnVtYmVyIG9mIGNv
ZGUgcG9pbnRzIHRvIG1vdmUgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbi4KLSAqIEByZXR1cm4gVFJV
RSBpZiB0aGUgcG9zaXRpb24gY291bGQgYmUgbW92ZWQgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Yg
cG9zaXRpb25zIHdoaWxlCi0gKiAgICAgICAgICAgICAgc3RheWluZyB3aXRoaW4gdGhlIHJhbmdl
IFswIC0gdGV4dCBsZW5ndGhdLgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLVVfU1RBQkxFIFVC
b29sIFVfRVhQT1JUMgotdXRleHRfbW92ZUluZGV4MzIoVVRleHQgKnV0LCBpbnQzMl90IGRlbHRh
KTsKLQotLyoqCi0gKiBHZXQgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHByZWNl
ZWRpbmcgdGhlIGN1cnJlbnQgcG9zaXRpb24uCi0gKiBJZiB0aGUgaXRlcmF0aW9uIHBvc2l0aW9u
IGlzIGFscmVhZHkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LCB6ZXJvCi0gKiBpcyByZXR1cm5l
ZC4KLSAqIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9idGFpbmVkIGZy
b20gdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSwKLSAqIGJ1dCB3aXRob3V0IHRoZSBzaWRlIGVmZmVj
dCBvZiBjaGFuZ2luZyB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uLgotICogICAKLSAqIFxjb2RlCi0g
KiAgICBVVGV4dCAgKnV0ID0gd2hhdGV2ZXI7Ci0gKiAgICAgIC4uLgotICogICAgdXRleHRfcHJl
dmlvdXModXQpCi0gKiAgICB1dGV4dF9nZXROYXRpdmVJbmRleCh1dCk7Ci0gKiBcZW5kY29kZQot
ICoKLSAqIFRoaXMgZnVuY3Rpb24gaXMgbW9zdCB1c2VmdWwgZHVyaW5nIGZvcndhcmRzIGl0ZXJh
dGlvbiwgd2hlcmUgaXQgd2lsbCBnZXQgdGhlCi0gKiAgIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hh
cmFjdGVyIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgZnJvbSB1dGV4dF9uZXh0KCkuCi0gKgotICog
QHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkCi0gKiBAcmV0dXJuIHRoZSBuYXRpdmUg
aW5kZXggb2YgdGhlIGNoYXJhY3RlciBwcmVjZWVkaW5nIHRoZSBjdXJyZW50IGluZGV4IHBvc2l0
aW9uLAotICogICAgICAgICBvciB6ZXJvIGlmIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGF0IHRo
ZSBzdGFydCBvZiB0aGUgdGV4dC4KLSAqIEBzdGFibGUgSUNVIDMuNgotICovCi1VX1NUQUJMRSBp
bnQ2NF90IFVfRVhQT1JUMgotdXRleHRfZ2V0UHJldmlvdXNOYXRpdmVJbmRleChVVGV4dCAqdXQp
OyAKLQotCi0vKioKLSAqCi0gKiBFeHRyYWN0IHRleHQgZnJvbSBhIFVUZXh0IGludG8gYSBVQ2hh
ciBidWZmZXIuICBUaGUgcmFuZ2Ugb2YgdGV4dCB0byBiZSBleHRyYWN0ZWQKLSAqIGlzIHNwZWNp
ZmllZCBpbiB0aGUgbmF0aXZlIGluZGljZXMgb2YgdGhlIFVUZXh0IHByb3ZpZGVyLiAgVGhlc2Ug
bWF5IG5vdCBuZWNlc3NhcmlseQotICogYmUgVVRGLTE2IGluZGljZXMuCi0gKiA8cD4KLSAqIFRo
ZSBzaXplIChudW1iZXIgb2YgMTYgYml0IFVDaGFycykgb2YgdGhlIGRhdGEgdG8gYmUgZXh0cmFj
dGVkIGlzIHJldHVybmVkLiAgVGhlCi0gKiBmdWxsIG51bWJlciBvZiBVQ2hhcnMgaXMgcmV0dXJu
ZWQsIGV2ZW4gd2hlbiB0aGUgZXh0cmFjdGVkIHRleHQgaXMgdHJ1bmNhdGVkCi0gKiBiZWNhdXNl
IHRoZSBzcGVjaWZpZWQgYnVmZmVyIHNpemUgaXMgdG9vIHNtYWxsLgotICogPHA+Ci0gKiBUaGUg
ZXh0cmFjdGVkIHN0cmluZyB3aWxsIChpZiB5b3UgYXJlIGEgdXNlcikgLyBtdXN0IChpZiB5b3Ug
YXJlIGEgdGV4dCBwcm92aWRlcikKLSAqIGJlIE5VTC10ZXJtaW5hdGVkIGlmIHRoZXJlIGlzIHN1
ZmZpY2llbnQgc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4gIFRoaXMKLSAqIHRlcm1p
bmF0aW5nIE5VTCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIGxlbmd0aC4KLSAqIDxw
PgotICogVGhlIGl0ZXJhdGlvbiBpbmRleCBpcyBsZWZ0IGF0IHRoZSBwb3NpdGlvbiBmb2xsb3dp
bmcgdGhlIGxhc3QgZXh0cmFjdGVkIGNoYXJhY3Rlci4KLSAqCi0gKiBAcGFyYW0gIHV0ICAgIHRo
ZSBVVGV4dCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgZGF0YS4KLSAqIEBwYXJhbSAgbmF0aXZlU3Rh
cnQgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIGV4dHJhY3QuXAot
ICogICAgICAgICAgICAgICBJZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG91dCBvZiByYW5nZSwK
LSAqICAgICAgICAgICAgICAgaXQgd2lsbCBiZSBwaW5uZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0g
aW5kZXggPD0gdGV4dExlbmd0aAotICogQHBhcmFtICBuYXRpdmVMaW1pdCB0aGUgbmF0aXZlIHN0
cmluZyBpbmRleCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0Ci0gKiAgICAgICAg
ICAgICAgIGNoYXJhY3RlciB0byBleHRyYWN0LiAgSWYgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBv
dXQgb2YgcmFuZ2UsCi0gKiAgICAgICAgICAgICAgIGl0IHdpbGwgYmUgcGlubmVkIHRvIHRvIGJl
IHdpdGhpbiAwIDw9IGluZGV4IDw9IHRleHRMZW5ndGguCi0gKiAgICAgICAgICAgICAgIG5hdGl2
ZUxpbWl0IG11c3QgYmUgPj0gbmF0aXZlU3RhcnQuCi0gKiBAcGFyYW0gIGRlc3QgIHRoZSBVQ2hh
ciAoVVRGLTE2KSBidWZmZXIgaW50byB3aGljaCB0aGUgZXh0cmFjdGVkIHRleHQgaXMgcGxhY2Vk
Ci0gKiBAcGFyYW0gIGRlc3RDYXBhY2l0eSAgVGhlIHNpemUsIGluIFVDaGFycywgb2YgdGhlIGRl
c3RpbmF0aW9uIGJ1ZmZlci4gIE1heSBiZSB6ZXJvCi0gKiAgICAgICAgICAgICAgIGZvciBwcmVj
b21wdXRpbmcgdGhlIHJlcXVpcmVkIHNpemUuCi0gKiBAcGFyYW0gIHN0YXR1cyByZWNlaXZlcyBh
bnkgZXJyb3Igc3RhdHVzLgotICogICAgICAgICBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjogdGhl
IGV4dHJhY3RlZCB0ZXh0IHdhcyB0cnVuY2F0ZWQgYmVjYXVzZSB0aGUgCi0gKiAgICAgICAgIGJ1
ZmZlciB3YXMgdG9vIHNtYWxsLiAgUmV0dXJucyBudW1iZXIgb2YgVUNoYXJzIGZvciBwcmVmbGln
aHRpbmcuCi0gKiBAcmV0dXJuIE51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGRhdGEgdG8gYmUgZXh0
cmFjdGVkLiAgRG9lcyBub3QgaW5jbHVkZSBhIHRyYWlsaW5nIE5VTC4KLSAqCi0gKiBAc3RhYmxl
IElDVSAzLjQKLSAqLwotVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKLXV0ZXh0X2V4dHJhY3Qo
VVRleHQgKnV0LAotICAgICAgICAgICAgIGludDY0X3QgbmF0aXZlU3RhcnQsIGludDY0X3QgbmF0
aXZlTGltaXQsCi0gICAgICAgICAgICAgVUNoYXIgKmRlc3QsIGludDMyX3QgZGVzdENhcGFjaXR5
LAotICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotCi0vKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCi0gKgotICogICNkZWZpbmUgaW5saW5lIHZlcnNpb25zIG9mIHNlbGVj
dGVkIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHRleHQgYWNjZXNzIGZ1bmN0aW9ucwotICogICAgICAg
ICAgQ2F1dGlvbjogIGRvIG5vdCB1c2UgYXV0byBpbmNyZW1lbnQrKyBvciBkZWNyZW1lbnQtLSBl
eHByZXNzaW9ucwotICogICAgICAgICAgICAgICAgICAgIGFzIHBhcmFtZXRlcnMgdG8gdGhlc2Ug
bWFjcm9zLgotICoKLSAqICAgICAgICAgIEZvciBtb3N0IHVzZSwgd2hlcmUgdGhlcmUgaXMgbm8g
ZXh0cmVtZSBwZXJmb3JtYW5jZSBjb25zdHJhaW50LCB0aGUKLSAqICAgICAgICAgIG5vcm1hbCwg
bm9uLWlubGluZSBmdW5jdGlvbnMgYXJlIGEgYmV0dGVyIGNob2ljZS4gIFRoZSByZXN1bHRpbmcg
Y29kZQotICogICAgICAgICAgd2lsbCBiZSBzbWFsbGVyLCBhbmQsIGlmIHRoZSBuZWVkIGV2ZXIg
YXJpc2VzLCBlYXNpZXIgdG8gZGVidWcuCi0gKgotICogICAgICAgICAgVGhlc2UgYXJlIGltcGxl
bWVudGVkIGFzICNkZWZpbmVzIHJhdGhlciB0aGFuIHJlYWwgZnVuY3Rpb25zCi0gKiAgICAgICAg
ICBiZWNhdXNlIHRoZXJlIGlzIG5vIGZ1bGx5IHBvcnRhYmxlIHdheSB0byBkbyBpbmxpbmUgZnVu
Y3Rpb25zIGluIHBsYWluIEMuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQot
I2lmbmRlZiBVX0hJREVfSU5URVJOQUxfQVBJCi0vKioKLSAqIGlubGluZSB2ZXJzaW9uIG9mIHV0
ZXh0X2N1cnJlbnQzMigpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4KLSAq
Ci0gKiBHZXQgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9u
IG9mIHRoZSBVVGV4dC4KLSAqIFJldHVybnMgVV9TRU5USU5FTCAoLTEpIGlmIHRoZSBwb3NpdGlv
biBpcyBhdCB0aGUgZW5kIG9mIHRoZQotICogdGV4dC4KLSAqCi0gKiBAaW50ZXJuYWwgSUNVIDQu
NCB0ZWNobm9sb2d5IHByZXZpZXcKLSAqLwotI2RlZmluZSBVVEVYVF9DVVJSRU5UMzIodXQpICBc
Ci0gICAgKCh1dCktPmNodW5rT2Zmc2V0IDwgKHV0KS0+Y2h1bmtMZW5ndGggJiYgKCh1dCktPmNo
dW5rQ29udGVudHMpWyh1dCktPmNodW5rT2Zmc2V0XTwweGQ4MDAgPyBcCi0gICAgKCh1dCktPmNo
dW5rQ29udGVudHMpWygodXQpLT5jaHVua09mZnNldCldIDogdXRleHRfY3VycmVudDMyKHV0KSkK
LSNlbmRpZiAgLyogVV9ISURFX0lOVEVSTkFMX0FQSSAqLwotCi0vKioKLSAqIGlubGluZSB2ZXJz
aW9uIG9mIHV0ZXh0X25leHQzMigpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9u
cy4KLSAqCi0gKiBHZXQgdGhlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBv
c2l0aW9uIG9mIHRoZSBVVGV4dCwgYW5kCi0gKiBhZHZhbmNlIHRoZSBwb3NpdGlvbiB0byB0aGUg
Zmlyc3QgaW5kZXggZm9sbG93aW5nIHRoZSBjaGFyYWN0ZXIuCi0gKiBUaGlzIGlzIGEgcG9zdC1p
bmNyZW1lbnQgb3BlcmF0aW9uLgotICogUmV0dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBv
c2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhlCi0gKiB0ZXh0LgotICoKLSAqIEBzdGFibGUgSUNV
IDMuNAotICovCi0jZGVmaW5lIFVURVhUX05FWFQzMih1dCkgIFwKLSAgICAoKHV0KS0+Y2h1bmtP
ZmZzZXQgPCAodXQpLT5jaHVua0xlbmd0aCAmJiAoKHV0KS0+Y2h1bmtDb250ZW50cylbKHV0KS0+
Y2h1bmtPZmZzZXRdPDB4ZDgwMCA/IFwKLSAgICAoKHV0KS0+Y2h1bmtDb250ZW50cylbKCh1dCkt
PmNodW5rT2Zmc2V0KSsrXSA6IHV0ZXh0X25leHQzMih1dCkpCi0KLS8qKgotICogaW5saW5lIHZl
cnNpb24gb2YgdXRleHRfcHJldmlvdXMzMigpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0
dWF0aW9ucy4KLSAqCi0gKiAgTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJh
Y3RlciAoY29kZSBwb2ludCkgd2hvc2UKLSAqICBpbmRleCBwcmVjZWRlcyB0aGUgY3VycmVudCBw
b3NpdGlvbiwgYW5kIHJldHVybiB0aGF0IGNoYXJhY3Rlci4KLSAqICBUaGlzIGlzIGEgcHJlLWRl
Y3JlbWVudCBvcGVyYXRpb24uCi0gKiAgUmV0dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBv
c2l0aW9uIGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgIHRleHQuCi0gKgotICogQHN0YWJsZSBJQ1Ug
My40Ci0gKi8KLSNkZWZpbmUgVVRFWFRfUFJFVklPVVMzMih1dCkgIFwKLSAgICAoKHV0KS0+Y2h1
bmtPZmZzZXQgPiAwICYmIFwKLSAgICAgKHV0KS0+Y2h1bmtDb250ZW50c1sodXQpLT5jaHVua09m
ZnNldC0xXSA8IDB4ZDgwMCA/IFwKLSAgICAgICAgICAodXQpLT5jaHVua0NvbnRlbnRzWy0tKCh1
dCktPmNodW5rT2Zmc2V0KV0gIDogIHV0ZXh0X3ByZXZpb3VzMzIodXQpKQotCi0vKioKLSAgKiAg
aW5saW5lIHZlcnNpb24gb2YgdXRleHRfZ2V0TmF0aXZlSW5kZXgoKSwgZm9yIHBlcmZvcm1hbmNl
LWNyaXRpY2FsIHNpdHVhdGlvbnMuCi0gICoKLSAgKiBHZXQgdGhlIGN1cnJlbnQgaXRlcmF0b3Ig
cG9zaXRpb24sIHdoaWNoIGNhbiByYW5nZSBmcm9tIDAgdG8gCi0gICogdGhlIGxlbmd0aCBvZiB0
aGUgdGV4dC4KLSAgKiBUaGUgcG9zaXRpb24gaXMgYSBuYXRpdmUgaW5kZXggaW50byB0aGUgaW5w
dXQgdGV4dCwgaW4gd2hhdGV2ZXIgZm9ybWF0IGl0Ci0gICogbWF5IGhhdmUgKHBvc3NpYmx5IFVU
Ri04IGZvciBleGFtcGxlKSwgYW5kIG1heSBub3QgYWx3YXlzIGJlIHRoZSBzYW1lIGFzCi0gICog
dGhlIGNvcnJlc3BvbmRpbmcgVUNoYXIgKFVURi0xNikgaW5kZXguCi0gICogVGhlIHJldHVybmVk
IHBvc2l0aW9uIHdpbGwgYWx3YXlzIGJlIGFsaWduZWQgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5
LiAKLSAgKgotICAqIEBzdGFibGUgSUNVIDMuNgotICAqLwotI2RlZmluZSBVVEVYVF9HRVROQVRJ
VkVJTkRFWCh1dCkgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKHV0KS0+Y2h1bmtPZmZz
ZXQgPD0gKHV0KS0+bmF0aXZlSW5kZXhpbmdMaW1pdD8gICBcCi0gICAgICAgICh1dCktPmNodW5r
TmF0aXZlU3RhcnQrKHV0KS0+Y2h1bmtPZmZzZXQgOiAgICAgXAotICAgICAgICAodXQpLT5wRnVu
Y3MtPm1hcE9mZnNldFRvTmF0aXZlKHV0KSkgICAgCi0KLS8qKgotICAqICBpbmxpbmUgdmVyc2lv
biBvZiB1dGV4dF9zZXROYXRpdmVJbmRleCgpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0
dWF0aW9ucy4KLSAgKgotICAqIFNldCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8g
dGhlIG5lYXJlc3QgY29kZSBwb2ludAotICAqIGJvdW5kYXJ5IGF0IG9yIHByZWNlZGluZyB0aGUg
c3BlY2lmaWVkIGluZGV4LgotICAqIFRoZSBpbmRleCBpcyBpbiB0aGUgbmF0aXZlIHVuaXRzIG9m
IHRoZSBvcmlnaW5hbCBpbnB1dCB0ZXh0LgotICAqIElmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFu
Z2UsIGl0IHdpbGwgYmUgcGlubmVkIHRvIGJlIHdpdGhpbgotICAqIHRoZSByYW5nZSBvZiB0aGUg
aW5wdXQgdGV4dC4KLSAgKgotICAqIEBzdGFibGUgSUNVIDMuOAotICAqLwotI2RlZmluZSBVVEVY
VF9TRVROQVRJVkVJTkRFWCh1dCwgaXgpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyBp
bnQ2NF90IF9fb2Zmc2V0ID0gKGl4KSAtICh1dCktPmNodW5rTmF0aXZlU3RhcnQ7IFwKLSAgICAg
IGlmIChfX29mZnNldD49MCAmJiBfX29mZnNldDw9KGludDY0X3QpKHV0KS0+bmF0aXZlSW5kZXhp
bmdMaW1pdCkgeyBcCi0gICAgICAgICAgKHV0KS0+Y2h1bmtPZmZzZXQ9KGludDMyX3QpX19vZmZz
ZXQ7IFwKLSAgICAgIH0gZWxzZSB7IFwKLSAgICAgICAgICB1dGV4dF9zZXROYXRpdmVJbmRleCgo
dXQpLCAoaXgpKTsgfSB9Ci0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgot
ICogICBGdW5jdGlvbnMgcmVsYXRlZCB0byB3cml0aW5nIG9yIG1vZGlmeWluZyB0aGUgdGV4dC4K
LSAqICAgVGhlc2Ugd2lsbCB3b3JrIG9ubHkgd2l0aCBtb2RpZmlhYmxlIFVUZXh0cy4gIEF0dGVt
cHRpbmcgdG8KLSAqICAgbW9kaWZ5IGEgcmVhZC1vbmx5IFVUZXh0IHdpbGwgcmV0dXJuIGFuIGVy
cm9yIHN0YXR1cy4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0KLS8qKgot
ICogIFJldHVybiBUUlVFIGlmIHRoZSB0ZXh0IGNhbiBiZSB3cml0dGVuIChtb2RpZmllZCkgd2l0
aCB1dGV4dF9yZXBsYWNlKCkgb3IKLSAqICB1dGV4dF9jb3B5KCkuICBGb3IgdGhlIHRleHQgdG8g
YmUgd3JpdGFibGUsIHRoZSB0ZXh0IHByb3ZpZGVyIG11c3QKLSAqICBiZSBvZiBhIHR5cGUgdGhh
dCBzdXBwb3J0cyB3cml0aW5nIGFuZCB0aGUgVVRleHQgbXVzdCBub3QgYmUgZnJvemVuLgotICoK
LSAqICBBdHRlbXB0aW5nIHRvIG1vZGlmeSB0ZXh0IHdoZW4gdXRleHRfaXNXcml0ZWFibGUoKSBp
cyBGQUxTRSB3aWxsIGZhaWwgLQotICogIHRoZSB0ZXh0IHdpbGwgbm90IGJlIG1vZGlmaWVkLCBh
bmQgYW4gZXJyb3Igd2lsbCBiZSByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbgotICogIHRoYXQg
YXR0ZW1wdGVkIHRoZSBtb2RpZmljYXRpb24uCi0gKgotICogQHBhcmFtICB1dCAgIHRoZSBVVGV4
dCB0byBiZSB0ZXN0ZWQuCi0gKiBAcmV0dXJuIFRSVUUgaWYgdGhlIHRleHQgaXMgbW9kaWZpYWJs
ZS4KLSAqCi0gKiBAc2VlICAgIHV0ZXh0X2ZyZWV6ZSgpCi0gKiBAc2VlICAgIHV0ZXh0X3JlcGxh
Y2UoKQotICogQHNlZSAgICB1dGV4dF9jb3B5KCkKLSAqIEBzdGFibGUgSUNVIDMuNAotICoKLSAq
LwotVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCi11dGV4dF9pc1dyaXRhYmxlKGNvbnN0IFVUZXh0
ICp1dCk7Ci0KLQotLyoqCi0gICogVGVzdCB3aGV0aGVyIHRoZXJlIGlzIG1ldGEgZGF0YSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIHRleHQuCi0gICogQHNlZSBSZXBsYWNlYWJsZTo6aGFzTWV0YURhdGEo
KQotICAqCi0gICogQHBhcmFtIHV0IFRoZSBVVGV4dCB0byBiZSB0ZXN0ZWQKLSAgKiBAcmV0dXJu
IFRSVUUgaWYgdGhlIHVuZGVybHlpbmcgdGV4dCBpbmNsdWRlcyBtZXRhIGRhdGEuCi0gICogQHN0
YWJsZSBJQ1UgMy40Ci0gICovCi1VX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKLXV0ZXh0X2hhc01l
dGFEYXRhKGNvbnN0IFVUZXh0ICp1dCk7Ci0KLQotLyoqCi0gKiBSZXBsYWNlIGEgcmFuZ2Ugb2Yg
dGhlIG9yaWdpbmFsIHRleHQgd2l0aCBhIHJlcGxhY2VtZW50IHRleHQuCi0gKgotICogTGVhdmVz
IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUgcG9zaXRpb24gZm9sbG93aW5n
IHRoZQotICogIG5ld2x5IGluc2VydGVkIHJlcGxhY2VtZW50IHRleHQuCi0gKgotICogVGhpcyBm
dW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3Jp
dGluZywKLSAqIHRoYXQgaXMsIG9uZXMgd2hlcmUgdXRleHRfaXNXcml0YWJsZSgpIHJldHVybnMg
VFJVRS4KLSAqCi0gKiBXaGVuIHVzaW5nIHRoaXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBv
bmx5IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBvbnRvIHRoZQotICogdW5kZXJseWluZyBuYXRpdmUg
dGV4dCBzdHJpbmcuICBCZWhhdmlvciBhZnRlciBhIHJlcGxhY2Ugb3BlcmF0aW9uCi0gKiBvbiBh
IFVUZXh0IGlzIHVuZGVmaW5lZCBmb3IgYW55IG90aGVyIGFkZGl0aW9uYWwgVVRleHRzIHRoYXQg
cmVmZXIgdG8gdGhlCi0gKiBtb2RpZmllZCBzdHJpbmcuCi0gKgotICogQHBhcmFtIHV0ICAgICAg
ICAgICAgICAgdGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBv
bi4KLSAqIEBwYXJhbSBuYXRpdmVTdGFydCAgICAgIHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIHN0
YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgcmVwbGFjZWQKLSAqIEBwYXJhbSBuYXRpdmVMaW1pdCAg
ICAgIHRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lv
biB0byBiZSByZXBsYWNlZC4KLSAqIEBwYXJhbSByZXBsYWNlbWVudFRleHQgIHBvaW50ZXIgdG8g
dGhlIHJlcGxhY2VtZW50IHRleHQKLSAqIEBwYXJhbSByZXBsYWNlbWVudExlbmd0aCBsZW5ndGgg
b2YgdGhlIHJlcGxhY2VtZW50IHRleHQsIG9yIC0xIGlmIHRoZSB0ZXh0IGlzIE5VTCB0ZXJtaW5h
dGVkLgotICogQHBhcmFtIHN0YXR1cyAgICAgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1
cy4gIFBvc3NpYmxlIGVycm9ycyBpbmNsdWRlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICBV
X05PX1dSSVRFX1BFUk1JU1NJT04KLSAqCi0gKiBAcmV0dXJuIFRoZSBzaWduZWQgbnVtYmVyIG9m
IChuYXRpdmUpIHN0b3JhZ2UgdW5pdHMgYnkgd2hpY2gKLSAqICAgICAgICAgdGhlIGxlbmd0aCBv
ZiB0aGUgdGV4dCBleHBhbmRlZCBvciBjb250cmFjdGVkLgotICoKLSAqIEBzdGFibGUgSUNVIDMu
NAotICovCi1VX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgotdXRleHRfcmVwbGFjZShVVGV4dCAq
dXQsCi0gICAgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1p
dCwKLSAgICAgICAgICAgICBjb25zdCBVQ2hhciAqcmVwbGFjZW1lbnRUZXh0LCBpbnQzMl90IHJl
cGxhY2VtZW50TGVuZ3RoLAotICAgICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQot
Ci0vKioKLSAqCi0gKiBDb3B5IG9yIG1vdmUgYSBzdWJzdHJpbmcgZnJvbSBvbmUgcG9zaXRpb24g
dG8gYW5vdGhlciB3aXRoaW4gdGhlIHRleHQsCi0gKiB3aGlsZSByZXRhaW5pbmcgYW55IG1ldGFk
YXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4KLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0
byBkdXBsaWNhdGUgb3IgcmVvcmRlciBzdWJzdHJpbmdzLgotICogVGhlIGRlc3RpbmF0aW9uIGlu
ZGV4IG11c3Qgbm90IG92ZXJsYXAgdGhlIHNvdXJjZSByYW5nZS4KLSAqCi0gKiBUaGUgdGV4dCB0
byBiZSBjb3BpZWQgb3IgbW92ZWQgaXMgaW5zZXJ0ZWQgYXQgZGVzdEluZGV4OwotICogaXQgZG9l
cyBub3QgcmVwbGFjZSBvciBvdmVyd3JpdGUgYW55IGV4aXN0aW5nIHRleHQuCi0gKgotICogVGhl
IGl0ZXJhdGlvbiBwb3NpdGlvbiBpcyBsZWZ0IGZvbGxvd2luZyB0aGUgbmV3bHkgaW5zZXJ0ZWQg
dGV4dAotICogYXQgdGhlIGRlc3RpbmF0aW9uIHBvc2l0aW9uLgotICoKLSAqIFRoaXMgZnVuY3Rp
b24gaXMgb25seSBhdmFpbGFibGUgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcs
Ci0gKiB0aGF0IGlzLCBvbmVzIHdoZXJlIHV0ZXh0X2lzV3JpdGFibGUoKSByZXR1cm5zIFRSVUUu
Ci0gKgotICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBh
IHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKLSAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQg
c3RyaW5nLiAgQmVoYXZpb3IgYWZ0ZXIgYSBjb3B5IG9wZXJhdGlvbgotICogb24gYSBVVGV4dCBp
cyB1bmRlZmluZWQgaW4gYW55IG90aGVyIGFkZGl0aW9uYWwgVVRleHRzIHRoYXQgcmVmZXIgdG8g
dGhlCi0gKiBtb2RpZmllZCBzdHJpbmcuCi0gKgotICogQHBhcmFtIHV0ICAgICAgICAgICBUaGUg
VVRleHQgcmVwcmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgotICogQHBhcmFt
IG5hdGl2ZVN0YXJ0ICBUaGUgbmF0aXZlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgcmVnaW9u
IHRvIGJlIGNvcGllZCBvciBtb3ZlZAotICogQHBhcmFtIG5hdGl2ZUxpbWl0ICBUaGUgbmF0aXZl
IGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gZm9sbG93aW5nIHRoZSByZWdpb24KLSAq
ICAgICAgICAgICAgICAgICAgICAgdG8gYmUgY29waWVkLgotICogQHBhcmFtIGRlc3RJbmRleCAg
ICBUaGUgbmF0aXZlIGRlc3RpbmF0aW9uIGluZGV4IHRvIHdoaWNoIHRoZSBzb3VyY2Ugc3Vic3Ry
aW5nIGlzCi0gKiAgICAgICAgICAgICAgICAgICAgIGNvcGllZCBvciBtb3ZlZC4KLSAqIEBwYXJh
bSBtb3ZlICAgICAgICAgSWYgVFJVRSwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBub3Qg
Y29waWVkL2R1cGxpY2F0ZWQuCi0gKiBAcGFyYW0gc3RhdHVzICAgICAgIHJlY2VpdmVzIGFueSBl
cnJvciBzdGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX05PX1dSSVRFX1BFUk1JU1NJ
T04KLSAqICAgICAgICAgICAgICAgICAgICAgICAKLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi1V
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdXRleHRfY29weShVVGV4dCAqdXQsCi0gICAgICAgICAg
aW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKLSAgICAgICAgICBpbnQ2
NF90IGRlc3RJbmRleCwKLSAgICAgICAgICBVQm9vbCBtb3ZlLAotICAgICAgICAgIFVFcnJvckNv
ZGUgKnN0YXR1cyk7Ci0KLQotLyoqCi0gICogIDxwPgotICAqICBGcmVlemUgYSBVVGV4dC4gIFRo
aXMgcHJldmVudHMgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgdW5kZXJseWluZyB0ZXh0IGl0c2Vs
ZgotICAqICBieSBtZWFucyBvZiBmdW5jdGlvbnMgb3BlcmF0aW5nIG9uIHRoaXMgVVRleHQuCi0g
ICogIDwvcD4KLSAgKiAgPHA+Ci0gICogIE9uY2UgZnJvemVuLCBhIFVUZXh0IGNhbiBub3QgYmUg
dW5mcm96ZW4uICBUaGUgaW50ZW50IGlzIHRvIGVuc3VyZQotICAqICB0aGF0IGEgdGhlIHRleHQg
dW5kZXJseWluZyBhIGZyb3plbiBVVGV4dCB3cmFwcGVyIGNhbm5vdCBiZSBtb2RpZmllZCB2aWEg
dGhhdCBVVGV4dC4KLSAgKiAgPC9wPgotICAqICA8cD4KLSAgKiAgQ2F1dGlvbjogIGZyZWV6aW5n
IGEgVVRleHQgd2lsbCBkaXNhYmxlIGNoYW5nZXMgbWFkZSB2aWEgdGhlIHNwZWNpZmljCi0gICog
ICBmcm96ZW4gVVRleHQgd3JhcHBlciBvbmx5OyBpdCB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3Qg
b24gdGhlIGFiaWxpdHkgdG8KLSAgKiAgIGRpcmVjdGx5IG1vZGlmeSB0aGUgdGV4dCBieSBieXBh
c3NpbmcgdGhlIFVUZXh0LiAgQW55IHN1Y2ggYmFja2Rvb3IgbW9kaWZpY2F0aW9ucwotICAqICAg
YXJlIGFsd2F5cyBhbiBlcnJvciB3aGlsZSBVVGV4dCBhY2Nlc3MgaXMgb2NjdXJpbmcgYmVjYXVz
ZSB0aGUgdW5kZXJseWluZwotICAqICAgdGV4dCBjYW4gZ2V0IG91dCBvZiBzeW5jIHdpdGggVVRl
eHQncyBidWZmZXJpbmcuCi0gICogIDwvcD4KLSAgKgotICAqICBAcGFyYW0gdXQgIFRoZSBVVGV4
dCB0byBiZSBmcm96ZW4uCi0gICogIEBzZWUgICB1dGV4dF9pc1dyaXRhYmxlKCkKLSAgKiAgQHN0
YWJsZSBJQ1UgMy42Ci0gICovCi1VX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgotdXRleHRfZnJlZXpl
KFVUZXh0ICp1dCk7Ci0KLQotLyoqCi0gKiBVVGV4dCBwcm92aWRlciBwcm9wZXJ0aWVzIChiaXQg
ZmllbGQgaW5kZXhlcykuCi0gKgotICogQHNlZSBVVGV4dAotICogQHN0YWJsZSBJQ1UgMy40Ci0g
Ki8KLWVudW0gewotICAgIC8qKgotICAgICAqIEl0IGlzIHBvdGVudGlhbGx5IHRpbWUgY29uc3Vt
aW5nIGZvciB0aGUgcHJvdmlkZXIgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2YgdGhlIHRleHQu
Ci0gICAgICogQHN0YWJsZSBJQ1UgMy40Ci0gICAgICovCi0gICAgVVRFWFRfUFJPVklERVJfTEVO
R1RIX0lTX0VYUEVOU0lWRSA9IDEsCi0gICAgLyoqCi0gICAgICogVGV4dCBjaHVua3MgcmVtYWlu
IHZhbGlkIGFuZCB1c2FibGUgdW50aWwgdGhlIHRleHQgb2JqZWN0IGlzIG1vZGlmaWVkIG9yCi0g
ICAgICogZGVsZXRlZCwgbm90IGp1c3QgdW50aWwgdGhlIG5leHQgdGltZSB0aGUgYWNjZXNzKCkg
ZnVuY3Rpb24gaXMgY2FsbGVkCi0gICAgICogKHdoaWNoIGlzIHRoZSBkZWZhdWx0KS4KLSAgICAg
KiBAc3RhYmxlIElDVSAzLjQKLSAgICAgKi8KLSAgICBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hV
TktTID0gMiwKLSAgICAvKioKLSAgICAgKiBUaGUgcHJvdmlkZXIgc3VwcG9ydHMgbW9kaWZ5aW5n
IHRoZSB0ZXh0IHZpYSB0aGUgcmVwbGFjZSgpIGFuZCBjb3B5KCkKLSAgICAgKiBmdW5jdGlvbnMu
Ci0gICAgICogQHNlZSBSZXBsYWNlYWJsZQotICAgICAqIEBzdGFibGUgSUNVIDMuNAotICAgICAq
LwotICAgIFVURVhUX1BST1ZJREVSX1dSSVRBQkxFID0gMywKLSAgICAvKioKLSAgICAgKiBUaGVy
ZSBpcyBtZXRhIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgotICAgICAqIEBzZWUgUmVw
bGFjZWFibGU6Omhhc01ldGFEYXRhKCkKLSAgICAgKiBAc3RhYmxlIElDVSAzLjQKLSAgICAgKi8g
Ci0gICAgVVRFWFRfUFJPVklERVJfSEFTX01FVEFfREFUQSA9IDQsCi0gICAgLyoqCi0gICAgICog
VGV4dCBwcm92aWRlciBvd25zIHRoZSB0ZXh0IHN0b3JhZ2UuCi0gICAgICogIEdlbmVyYWxseSBv
Y2N1cnMgYXMgdGhlIHJlc3VsdCBvZiBhIGRlZXAgY2xvbmUgb2YgdGhlIFVUZXh0LgotICAgICAq
ICBXaGVuIGNsb3NpbmcgdGhlIFVUZXh0LCB0aGUgYXNzb2NpYXRlZCB0ZXh0IG11c3QKLSAgICAg
KiAgYWxzbyBiZSBjbG9zZWQvZGVsZXRlZC9mcmVlZC8gd2hhdGV2ZXIgaXMgYXBwcm9wcmlhdGUu
Ci0gICAgICogQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgIFVURVhUX1BST1ZJREVSX09X
TlNfVEVYVCA9IDUKLX07Ci0KLS8qKgotICAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9y
IFVUZXh0LmNsb25lKCkuCi0gICoKLSAgKiAgY2xvbmUgYSBVVGV4dC4gIE11Y2ggbGlrZSBvcGVu
aW5nIGEgVVRleHQgd2hlcmUgdGhlIHNvdXJjZSB0ZXh0IGlzIGl0c2VsZgotICAqICBhbm90aGVy
IFVUZXh0LgotICAqCi0gICogIEEgZGVlcCBjbG9uZSB3aWxsIGNvcHkgYm90aCB0aGUgVVRleHQg
ZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGUgdW5kZXJseWluZyB0ZXh0LgotICAqICBUaGUgb3JpZ2lu
YWwgYW5kIGNsb25lZCBVVGV4dCB3aWxsIG9wZXJhdGUgY29tcGxldGVseSBpbmRlcGVuZGVudGx5
OyBtb2RpZmljYXRpb25zCi0gICogIG1hZGUgdG8gdGhlIHRleHQgaW4gb25lIHdpbGwgbm90IGVm
ZmVjdCB0aGUgb3RoZXIuICBUZXh0IHByb3ZpZGVycyBhcmUgbm90Ci0gICogIHJlcXVpcmVkIHRv
IHN1cHBvcnQgZGVlcCBjbG9uZXMuICBUaGUgdXNlciBvZiBjbG9uZSgpIG11c3QgY2hlY2sgdGhl
IHN0YXR1cyByZXR1cm4KLSAgKiAgYW5kIGJlIHByZXBhcmVkIHRvIGhhbmRsZSBmYWlsdXJlcy4K
LSAgKgotICAqICBBIHNoYWxsb3cgY2xvbmUgcmVwbGljYXRlcyBvbmx5IHRoZSBVVGV4dCBkYXRh
IHN0cnVjdHVyZXM7IGl0IGRvZXMgbm90IG1ha2UKLSAgKiAgYSBjb3B5IG9mIHRoZSB1bmRlcmx5
aW5nIHRleHQuICBTaGFsbG93IGNsb25lcyBjYW4gYmUgdXNlZCBhcyBhbiBlZmZpY2llbnQgd2F5
IHRvIAotICAqICBoYXZlIG11bHRpcGxlIGl0ZXJhdG9ycyBhY3RpdmUgaW4gYSBzaW5nbGUgdGV4
dCBzdHJpbmcgdGhhdCBpcyBub3QgYmVpbmcKLSAgKiAgbW9kaWZpZWQuCi0gICoKLSAgKiAgQSBz
aGFsbG93IGNsb25lIG9wZXJhdGlvbiBtdXN0IG5vdCBmYWlsIGV4Y2VwdCBmb3IgdHJ1bHkgZXhj
ZXB0aW9uYWwgY29uZGl0aW9ucyBzdWNoCi0gICogIGFzIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1
cmVzLgotICAqCi0gICogIEEgVVRleHQgYW5kIGl0cyBjbG9uZSBtYXkgYmUgc2FmZWx5IGNvbmN1
cnJlbnRseSBhY2Nlc3NlZCBieSBzZXBhcmF0ZSB0aHJlYWRzLgotICAqICBUaGlzIGlzIHRydWUg
Zm9yIGJvdGggc2hhbGxvdyBhbmQgZGVlcCBjbG9uZXMuCi0gICogIEl0IGlzIHRoZSByZXNwb25z
aWJpbGl0eSBvZiB0aGUgVGV4dCBQcm92aWRlciB0byBlbnN1cmUgdGhhdCB0aGlzIHRocmVhZCBz
YWZldHkKLSAgKiAgY29uc3RyYWludCBpcyBtZXQuCi0KLSAgKgotICAqICBAcGFyYW0gZGVzdCAg
IEEgVVRleHQgc3RydWN0IHRvIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGNs
b25lIG9wZXJhdGlvbiwKLSAgKiAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZSBjbG9uZSBm
dW5jdGlvbiBzaG91bGQgaGVhcC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBzdHJ1Y3QuCi0gICogIEBw
YXJhbSBzcmMgICAgVGhlIFVUZXh0IHRvIGJlIGNsb25lZC4KLSAgKiAgQHBhcmFtIGRlZXAgICBU
UlVFIHRvIHJlcXVlc3QgYSBkZWVwIGNsb25lLCBGQUxTRSBmb3IgYSBzaGFsbG93IGNsb25lLgot
ICAqICBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4gIEZvciBkZWVwIGNs
b25lcywgVV9VTlNVUFBPUlRFRF9FUlJPUgotICAqICAgICAgICAgICAgICAgIHNob3VsZCBiZSBy
ZXR1cm5lZCBpZiB0aGUgdGV4dCBwcm92aWRlciBpcyB1bmFibGUgdG8gY2xvbmUgdGhlCi0gICog
ICAgICAgICAgICAgICAgb3JpZ2luYWwgdGV4dC4KLSAgKiAgQHJldHVybiAgICAgICBUaGUgbmV3
bHkgY3JlYXRlZCBjbG9uZSwgb3IgTlVMTCBpZiB0aGUgY2xvbmUgb3BlcmF0aW9uIGZhaWxlZC4K
LSAgKgotICAqIEBzdGFibGUgSUNVIDMuNAotICAqLwotdHlwZWRlZiBVVGV4dCAqIFVfQ0FMTENP
TlYKLVVUZXh0Q2xvbmUoVVRleHQgKmRlc3QsIGNvbnN0IFVUZXh0ICpzcmMsIFVCb29sIGRlZXAs
IFVFcnJvckNvZGUgKnN0YXR1cyk7Ci0KLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0
aW9uIGZvciBVVGV4dC5uYXRpdmVMZW5ndGgoKS4KLSAqCi0gKiBAcGFyYW0gdXQgdGhlIFVUZXh0
IHRvIGdldCB0aGUgbGVuZ3RoIG9mLgotICogQHJldHVybiB0aGUgbGVuZ3RoLCBpbiB0aGUgbmF0
aXZlIHVuaXRzIG9mIHRoZSBvcmlnaW5hbCB0ZXh0IHN0cmluZy4KLSAqIEBzZWUgVVRleHQKLSAq
IEBzdGFibGUgSUNVIDMuNAotICovCi10eXBlZGVmIGludDY0X3QgVV9DQUxMQ09OVgotVVRleHRO
YXRpdmVMZW5ndGgoVVRleHQgKnV0KTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0
aW9uIGZvciBVVGV4dC5hY2Nlc3MoKS4gIEdldCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHRleHQg
Y2h1bmsKLSAqICBjb250YWluaW5nIHRoZSB0ZXh0IGF0IGEgcmVxdWVzdGVkIG5hdGl2ZSBpbmRl
eC4gIFRoZSBVVGV4dCdzIGl0ZXJhdGlvbgotICogIHBvc2l0aW9uIHdpbGwgYmUgbGVmdCBhdCB0
aGUgcmVxdWVzdGVkIGluZGV4LiAgSWYgdGhlIGluZGV4IGlzIG91dAotICogIG9mIGJvdW5kcywg
dGhlIGl0ZXJhdGlvbiBwb3NpdGlvbiB3aWxsIGJlIGxlZnQgYXQgdGhlIHN0YXJ0IG9yIGVuZAot
ICogIG9mIHRoZSBzdHJpbmcsIGFzIGFwcHJvcHJpYXRlLgotICoKLSAqICBDaHVua3MgbXVzdCBi
ZWdpbiBhbmQgZW5kIG9uIGNvZGUgcG9pbnQgYm91bmRhcmllcy4gIEEgc2luZ2xlIGNvZGUgcG9p
bnQKLSAqICBjb21wcmlzZWQgb2YgbXVsdGlwbGUgc3RvcmFnZSB1bml0cyBtdXN0IG5ldmVyIHNw
YW4gYSBjaHVuayBib3VuZGFyeS4KLSAqCi0gKgotICogQHBhcmFtIHV0ICAgICAgICAgIHRoZSBV
VGV4dCBiZWluZyBhY2Nlc3NlZC4KLSAqIEBwYXJhbSBuYXRpdmVJbmRleCBSZXF1ZXN0ZWQgaW5k
ZXggb2YgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCi0gKiBAcGFyYW0gZm9yd2FyZCAgICAgSWYg
VFJVRSwgdGhlbiB0aGUgcmV0dXJuZWQgY2h1bmsgbXVzdCBjb250YWluIHRleHQKLSAqICAgICAg
ICAgICAgICAgICAgICBzdGFydGluZyBmcm9tIHRoZSBpbmRleCwgc28gdGhhdCBzdGFydDw9aW5k
ZXg8bGltaXQuCi0gKiAgICAgICAgICAgICAgICAgICAgSWYgRkFMU0UsIHRoZW4gdGhlIHJldHVy
bmVkIGNodW5rIG11c3QgY29udGFpbiB0ZXh0Ci0gKiAgICAgICAgICAgICAgICAgICAgYmVmb3Jl
IHRoZSBpbmRleCwgc28gdGhhdCBzdGFydDxpbmRleDw9bGltaXQuCi0gKiBAcmV0dXJuICAgICAg
ICAgICAgVHJ1ZSBpZiB0aGUgcmVxdWVzdGVkIGluZGV4IGNvdWxkIGJlIGFjY2Vzc2VkLiAgVGhl
IGNodW5rCi0gKiAgICAgICAgICAgICAgICAgICAgd2lsbCBjb250YWluIHRoZSByZXF1ZXN0ZWQg
dGV4dC4KLSAqICAgICAgICAgICAgICAgICAgICBGYWxzZSB2YWx1ZSBpZiBhIGNodW5rIGNhbm5v
dCBiZSBhY2Nlc3NlZAotICogICAgICAgICAgICAgICAgICAgICh0aGUgcmVxdWVzdGVkIGluZGV4
IGlzIG91dCBvZiBib3VuZHMpLgotICoKLSAqIEBzZWUgVVRleHQKLSAqIEBzdGFibGUgSUNVIDMu
NAotICovCi10eXBlZGVmIFVCb29sIFVfQ0FMTENPTlYKLVVUZXh0QWNjZXNzKFVUZXh0ICp1dCwg
aW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCk7Ci0KLS8qKgotICogRnVuY3Rpb24g
dHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuZXh0cmFjdCgpLgotICoKLSAqIEV4dHJhY3QgdGV4
dCBmcm9tIGEgVVRleHQgaW50byBhIFVDaGFyIGJ1ZmZlci4gIFRoZSByYW5nZSBvZiB0ZXh0IHRv
IGJlIGV4dHJhY3RlZAotICogaXMgc3BlY2lmaWVkIGluIHRoZSBuYXRpdmUgaW5kaWNlcyBvZiB0
aGUgVVRleHQgcHJvdmlkZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vzc2FyaWx5Ci0gKiBiZSBVVEYt
MTYgaW5kaWNlcy4KLSAqIDxwPgotICogVGhlIHNpemUgKG51bWJlciBvZiAxNiBiaXQgVUNoYXJz
KSBpbiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJuZWQuICBUaGUKLSAqIGZ1bGwg
YW1vdW50IGlzIHJldHVybmVkLCBldmVuIHdoZW4gdGhlIHNwZWNpZmllZCBidWZmZXIgc2l6ZSBp
cyBzbWFsbGVyLgotICogPHA+Ci0gKiBUaGUgZXh0cmFjdGVkIHN0cmluZyB3aWxsIChpZiB5b3Ug
YXJlIGEgdXNlcikgLyBtdXN0IChpZiB5b3UgYXJlIGEgdGV4dCBwcm92aWRlcikKLSAqIGJlIE5V
TC10ZXJtaW5hdGVkIGlmIHRoZXJlIGlzIHN1ZmZpY2llbnQgc3BhY2UgaW4gdGhlIGRlc3RpbmF0
aW9uIGJ1ZmZlci4KLSAqCi0gKiBAcGFyYW0gIHV0ICAgICAgICAgICAgdGhlIFVUZXh0IGZyb20g
d2hpY2ggdG8gZXh0cmFjdCBkYXRhLgotICogQHBhcmFtICBuYXRpdmVTdGFydCAgIHRoZSBuYXRp
dmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY2VyIHRvIGV4dHJhY3QuCi0gKiBAcGFyYW0gIG5h
dGl2ZUxpbWl0ICAgdGhlIG5hdGl2ZSBzdHJpbmcgaW5kZXggb2YgdGhlIHBvc2l0aW9uIGZvbGxv
d2luZyB0aGUgbGFzdAotICogICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciB0byBleHRy
YWN0LgotICogQHBhcmFtICBkZXN0ICAgICAgICAgIHRoZSBVQ2hhciAoVVRGLTE2KSBidWZmZXIg
aW50byB3aGljaCB0aGUgZXh0cmFjdGVkIHRleHQgaXMgcGxhY2VkCi0gKiBAcGFyYW0gIGRlc3RD
YXBhY2l0eSAgVGhlIHNpemUsIGluIFVDaGFycywgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4g
IE1heSBiZSB6ZXJvCi0gKiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHByZWNvbXB1dGluZyB0
aGUgcmVxdWlyZWQgc2l6ZS4KLSAqIEBwYXJhbSAgc3RhdHVzICAgICAgICByZWNlaXZlcyBhbnkg
ZXJyb3Igc3RhdHVzLgotICogICAgICAgICAgICAgICAgICAgICAgIElmIFVfQlVGRkVSX09WRVJG
TE9XX0VSUk9SOiBSZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMgZm9yCi0gKiAgICAgICAgICAgICAg
ICAgICAgICAgcHJlZmxpZ2h0aW5nLgotICogQHJldHVybiBOdW1iZXIgb2YgVUNoYXJzIGluIHRo
ZSBkYXRhLiAgRG9lcyBub3QgaW5jbHVkZSBhIHRyYWlsaW5nIE5VTC4KLSAqCi0gKiBAc3RhYmxl
IElDVSAzLjQKLSAqLwotdHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKLVVUZXh0RXh0cmFjdChV
VGV4dCAqdXQsCi0gICAgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRp
dmVMaW1pdCwKLSAgICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHks
Ci0gICAgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0
eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5yZXBsYWNlKCkuCi0gKgotICogUmVwbGFjZSBhIHJh
bmdlIG9mIHRoZSBvcmlnaW5hbCB0ZXh0IHdpdGggYSByZXBsYWNlbWVudCB0ZXh0LgotICoKLSAq
IExlYXZlcyB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gYXQgdGhlIHBvc2l0aW9uIGZv
bGxvd2luZyB0aGUKLSAqICBuZXdseSBpbnNlcnRlZCByZXBsYWNlbWVudCB0ZXh0LgotICoKLSAq
IFRoaXMgZnVuY3Rpb24gbmVlZCBvbmx5IGJlIGltcGxlbWVudGVkIG9uIFVUZXh0IHR5cGVzIHRo
YXQgc3VwcG9ydCB3cml0aW5nLgotICoKLSAqIFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhl
cmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRleHQgb3BlbmVkIG9udG8gdGhlCi0gKiB1bmRl
cmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIFRoZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBm
b3IgdXBkYXRpbmcgdGhlCi0gKiB0ZXh0IGNodW5rIHdpdGhpbiB0aGUgVVRleHQgdG8gcmVmbGVj
dCB0aGUgdXBkYXRlZCBpdGVyYXRpb24gcG9zaXRpb24sCi0gKiB0YWtpbmcgaW50byBhY2NvdW50
IGFueSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIHN0cmluZydzIHN0cnVjdHVyZSBjYXVzZWQK
LSAqIGJ5IHRoZSByZXBsYWNlIG9wZXJhdGlvbi4KLSAqCi0gKiBAcGFyYW0gdXQgICAgICAgICAg
ICAgICB0aGUgVVRleHQgcmVwcmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgot
ICogQHBhcmFtIG5hdGl2ZVN0YXJ0ICAgICAgdGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUg
cmVnaW9uIHRvIGJlIHJlcGxhY2VkCi0gKiBAcGFyYW0gbmF0aXZlTGltaXQgICAgICB0aGUgaW5k
ZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNlZC4K
LSAqIEBwYXJhbSByZXBsYWNlbWVudFRleHQgIHBvaW50ZXIgdG8gdGhlIHJlcGxhY2VtZW50IHRl
eHQKLSAqIEBwYXJhbSByZXBsYWNtZW50TGVuZ3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQg
dGV4dCBpbiBVQ2hhcnMsIG9yIC0xIGlmIHRoZSB0ZXh0IGlzIE5VTCB0ZXJtaW5hdGVkLgotICog
QHBhcmFtIHN0YXR1cyAgICAgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3Np
YmxlIGVycm9ycyBpbmNsdWRlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICBVX05PX1dSSVRF
X1BFUk1JU1NJT04KLSAqCi0gKiBAcmV0dXJuIFRoZSBzaWduZWQgbnVtYmVyIG9mIChuYXRpdmUp
IHN0b3JhZ2UgdW5pdHMgYnkgd2hpY2gKLSAqICAgICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgdGV4
dCBleHBhbmRlZCBvciBjb250cmFjdGVkLgotICoKLSAqIEBzdGFibGUgSUNVIDMuNAotICovCi10
eXBlZGVmIGludDMyX3QgVV9DQUxMQ09OVgotVVRleHRSZXBsYWNlKFVUZXh0ICp1dCwKLSAgICAg
ICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAotICAgICAg
ICAgICAgIGNvbnN0IFVDaGFyICpyZXBsYWNlbWVudFRleHQsIGludDMyX3QgcmVwbGFjbWVudExl
bmd0aCwKLSAgICAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0vKioKLSAqIEZ1bmN0
aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmNvcHkoKS4KLSAqCi0gKiBDb3B5IG9yIG1v
dmUgYSBzdWJzdHJpbmcgZnJvbSBvbmUgcG9zaXRpb24gdG8gYW5vdGhlciB3aXRoaW4gdGhlIHRl
eHQsCi0gKiB3aGlsZSByZXRhaW5pbmcgYW55IG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUg
dGV4dC4KLSAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkdXBsaWNhdGUgb3IgcmVvcmRlciBz
dWJzdHJpbmdzLgotICogVGhlIGRlc3RpbmF0aW9uIGluZGV4IG11c3Qgbm90IG92ZXJsYXAgdGhl
IHNvdXJjZSByYW5nZS4KLSAqCi0gKiBUaGUgdGV4dCB0byBiZSBjb3BpZWQgb3IgbW92ZWQgaXMg
aW5zZXJ0ZWQgYXQgZGVzdEluZGV4OwotICogaXQgZG9lcyBub3QgcmVwbGFjZSBvciBvdmVyd3Jp
dGUgYW55IGV4aXN0aW5nIHRleHQuCi0gKgotICogVGhpcyBmdW5jdGlvbiBuZWVkIG9ubHkgYmUg
aW1wbGVtZW50ZWQgZm9yIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0aW5nLgotICoKLSAq
IFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUg
VVRleHQgb3BlbmVkIG9udG8gdGhlCi0gKiB1bmRlcmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4g
IFRoZSBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlCi0gKiB0ZXh0IGNo
dW5rIHdpdGhpbiB0aGUgVVRleHQgdG8gcmVmbGVjdCB0aGUgdXBkYXRlZCBpdGVyYXRpb24gcG9z
aXRpb24sCi0gKiB0YWtpbmcgaW50byBhY2NvdW50IGFueSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5
aW5nIHN0cmluZydzIHN0cnVjdHVyZSBjYXVzZWQKLSAqIGJ5IHRoZSByZXBsYWNlIG9wZXJhdGlv
bi4KLSAqCi0gKiBAcGFyYW0gdXQgICAgICAgICAgIFRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhl
IHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCi0gKiBAcGFyYW0gbmF0aXZlU3RhcnQgIFRoZSBpbmRl
eCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJlZ2lvbiB0byBiZSBjb3BpZWQgb3IgbW92ZWQKLSAqIEBw
YXJhbSBuYXRpdmVMaW1pdCAgVGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRo
ZSByZWdpb24gdG8gYmUgcmVwbGFjZWQuCi0gKiBAcGFyYW0gbmF0aXZlRGVzdCAgIFRoZSBkZXN0
aW5hdGlvbiBpbmRleCB0byB3aGljaCB0aGUgc291cmNlIHN1YnN0cmluZyBpcyBjb3BpZWQgb3Ig
bW92ZWQuCi0gKiBAcGFyYW0gbW92ZSAgICAgICAgIElmIFRSVUUsIHRoZW4gdGhlIHN1YnN0cmlu
ZyBpcyBtb3ZlZCwgbm90IGNvcGllZC9kdXBsaWNhdGVkLgotICogQHBhcmFtIHN0YXR1cyAgICAg
ICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUgVV9O
T19XUklURV9QRVJNSVNTSU9OCi0gKgotICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLXR5cGVkZWYg
dm9pZCBVX0NBTExDT05WCi1VVGV4dENvcHkoVVRleHQgKnV0LAotICAgICAgICAgIGludDY0X3Qg
bmF0aXZlU3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCi0gICAgICAgICAgaW50NjRfdCBuYXRp
dmVEZXN0LAotICAgICAgICAgIFVCb29sIG1vdmUsCi0gICAgICAgICAgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKLQotLyoqCi0gKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5tYXBP
ZmZzZXRUb05hdGl2ZSgpLgotICogTWFwIGZyb20gdGhlIGN1cnJlbnQgVUNoYXIgb2Zmc2V0IHdp
dGhpbiB0aGUgY3VycmVudCB0ZXh0IGNodW5rIHRvCi0gKiAgdGhlIGNvcnJlc3BvbmRpbmcgbmF0
aXZlIGluZGV4IGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGV4dC4KLSAqCi0gKiBUaGlzIGlzIHJl
cXVpcmVkIG9ubHkgZm9yIHRleHQgcHJvdmlkZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRpdmUgVVRG
LTE2IGluZGV4ZXMuCi0gKgotICogQHBhcmFtIHV0ICAgICB0aGUgVVRleHQuCi0gKiBAcmV0dXJu
IEFic29sdXRlIChuYXRpdmUpIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gY2h1bmtPZmZzZXQgaW4g
dGhlIGN1cnJlbnQgY2h1bmsuCi0gKiAgICAgICAgIFRoZSByZXR1cm5lZCBuYXRpdmUgaW5kZXgg
c2hvdWxkIGFsd2F5cyBiZSB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuCi0gKgotICogQHN0YWJs
ZSBJQ1UgMy40Ci0gKi8KLXR5cGVkZWYgaW50NjRfdCBVX0NBTExDT05WCi1VVGV4dE1hcE9mZnNl
dFRvTmF0aXZlKGNvbnN0IFVUZXh0ICp1dCk7Ci0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNs
YXJhdGlvbiBmb3IgVVRleHQubWFwSW5kZXhUb1VURjE2KCkuCi0gKiBNYXAgZnJvbSBhIG5hdGl2
ZSBpbmRleCB0byBhIFVDaGFyIG9mZnNldCB3aXRoaW4gYSB0ZXh0IGNodW5rLgotICogQmVoYXZp
b3IgaXMgdW5kZWZpbmVkIGlmIHRoZSBuYXRpdmUgaW5kZXggZG9lcyBub3QgZmFsbCB3aXRoaW4g
dGhlCi0gKiAgIGN1cnJlbnQgY2h1bmsuCi0gKgotICogVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJl
ZCBvbmx5IGZvciB0ZXh0IHByb3ZpZGVycyB0aGF0IGRvIG5vdCB1c2UgbmF0aXZlIFVURi0xNiBp
bmRleGVzLgotICoKLSAqIEBwYXJhbSB1dCAgICAgICAgICBUaGUgVVRleHQgY29udGFpbmluZyB0
aGUgdGV4dCBjaHVuay4KLSAqIEBwYXJhbSBuYXRpdmVJbmRleCBBYnNvbHV0ZSAobmF0aXZlKSB0
ZXh0IGluZGV4LCBjaHVuay0+c3RhcnQ8PWluZGV4PD1jaHVuay0+bGltaXQuCi0gKiBAcmV0dXJu
ICAgICAgICAgICAgQ2h1bmstcmVsYXRpdmUgVVRGLTE2IG9mZnNldCBjb3JyZXNwb25kaW5nIHRv
IHRoZSBzcGVjaWZpZWQgbmF0aXZlCi0gKiAgICAgICAgICAgICAgICAgICAgaW5kZXguCi0gKgot
ICogQHN0YWJsZSBJQ1UgMy40Ci0gKi8KLXR5cGVkZWYgaW50MzJfdCBVX0NBTExDT05WCi1VVGV4
dE1hcE5hdGl2ZUluZGV4VG9VVEYxNihjb25zdCBVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5k
ZXgpOwotCi0KLS8qKgotICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQudXRl
eHRDbG9zZSgpLgotICoKLSAqIEEgVGV4dCBQcm92aWRlciBjbG9zZSBmdW5jdGlvbiBpcyBvbmx5
IHJlcXVpcmVkIGZvciBwcm92aWRlciB0eXBlcyB0aGF0IG1ha2UKLSAqICBhbGxvY2F0aW9ucyBp
biB0aGVpciBvcGVuIGZ1bmN0aW9uIChvciBvdGhlciBmdW5jdGlvbnMpIHRoYXQgbXVzdCBiZSAK
LSAqICBjbGVhbmVkIHdoZW4gdGhlIFVUZXh0IGlzIGNsb3NlZC4KLSAqCi0gKiBUaGUgYWxsb2Nh
dGlvbiBvZiB0aGUgVVRleHQgc3RydWN0IGl0c2VsZiBhbmQgYW55ICJleHRyYSIgc3RvcmFnZQot
ICogYXNzb2NpYXRlZCB3aXRoIHRoZSBVVGV4dCBpcyBoYW5kbGVkIGJ5IHRoZSBjb21tb24gVVRl
eHQgaW1wbGVtZW50YXRpb24KLSAqIGFuZCBkb2VzIG5vdCByZXF1aXJlIHByb3ZpZGVyIHNwZWNp
ZmljIGNsZWFudXAgaW4gYSBjbG9zZSBmdW5jdGlvbi4KLSAqCi0gKiBNb3N0IFVUZXh0IHByb3Zp
ZGVyIGltcGxlbWVudGF0aW9ucyBkbyBub3QgbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBmdW5jdGlv
bi4KLSAqCi0gKiBAcGFyYW0gdXQgQSBVVGV4dCBvYmplY3QgdG8gYmUgY2xvc2VkLgotICoKLSAq
IEBzdGFibGUgSUNVIDMuNAotICovCi10eXBlZGVmIHZvaWQgVV9DQUxMQ09OVgotVVRleHRDbG9z
ZShVVGV4dCAqdXQpOwotCi0KLS8qKgotICAqICAgKHB1YmxpYykgIEZ1bmN0aW9uIGRpc3BhdGNo
IHRhYmxlIGZvciBVVGV4dC4KLSAgKiAgICAgICAgICAgICBDb25jZXB0dWFsbHkgdmVyeSBtdWNo
IGxpa2UgYSBDKysgVmlydHVhbCBGdW5jdGlvbiBUYWJsZS4KLSAgKiAgICAgICAgICAgICBUaGlz
IHN0cnVjdCBkZWZpbmVzIHRoZSBvcmdhbml6YXRpb24gb2YgdGhlIHRhYmxlLgotICAqICAgICAg
ICAgICAgIEVhY2ggdGV4dCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgYW4K
LSAgKiAgICAgICAgICAgICAgYWN0dWFsIHRhYmxlIHRoYXQgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0
aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb25zCi0gICogICAgICAgICAgICAgIGZvciB0aGUgdHlwZSBv
ZiB0ZXh0IGJlaW5nIGhhbmRsZWQuCi0gICogICBAc3RhYmxlIElDVSAzLjYKLSAgKi8KLXN0cnVj
dCBVVGV4dEZ1bmNzIHsKLSAgICAvKioKLSAgICAgKiAgIChwdWJsaWMpICBGdW5jdGlvbiB0YWJs
ZSBzaXplLCBzaXplb2YoVVRleHRGdW5jcykKLSAgICAgKiAgICAgICAgICAgICBJbnRlbmRlZCBm
b3IgdXNlIHNob3VsZCB0aGUgdGFibGUgZ3JvdyB0byBhY2NvbW9kYXRlIGFkZGVkCi0gICAgICog
ICAgICAgICAgICAgZnVuY3Rpb25zIGluIHRoZSBmdXR1cmUsIHRvIGFsbG93IHRlc3RzIGZvciBv
bGRlciBmb3JtYXQKLSAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbiB0YWJsZXMgdGhhdCBkbyBu
b3QgY29udGFpbiB0aGUgZXh0ZW5zaW9ucy4KLSAgICAgKgotICAgICAqICAgICAgICAgICAgIEZp
ZWxkcyBhcmUgcGxhY2VkIGZvciBvcHRpbWFsIGFsaWdubWVudCBvbgotICAgICAqICAgICAgICAg
ICAgIDMyLzY0LzEyOC1iaXQtcG9pbnRlciBtYWNoaW5lcywgYnkgbm9ybWFsbHkgZ3JvdXBpbmcg
dG9nZXRoZXIKLSAgICAgKiAgICAgICAgICAgICA0IDMyLWJpdCBmaWVsZHMsCi0gICAgICogICAg
ICAgICAgICAgNCBwb2ludGVycywKLSAgICAgKiAgICAgICAgICAgICAyIDY0LWJpdCBmaWVsZHMK
LSAgICAgKiAgICAgICAgICAgICBpbiBzZXF1ZW5jZS4KLSAgICAgKiAgIEBzdGFibGUgSUNVIDMu
NgotICAgICAqLwotICAgIGludDMyX3QgICAgICAgdGFibGVTaXplOwotCi0gICAgLyoqCi0gICAg
ICAqICAgKHByaXZhdGUpICBBbGlnbm1lbnQgcGFkZGluZy4KLSAgICAgICogICAgICAgICAgICAg
IERvIG5vdCB1c2UsIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yayBvbmx5
LgotICAgICAgKiAgIEBpbnRlcm5hbAotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgIHJlc2Vy
dmVkMSwgLyoqIEBpbnRlcm5hbCAqLyByZXNlcnZlZDIsIC8qKiBAaW50ZXJuYWwgKi8gcmVzZXJ2
ZWQzOwotCi0KLSAgICAvKioKLSAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBV
VGV4dENsb25lCi0gICAgICoKLSAgICAgKiBAc2VlIFVUZXh0Q2xvbmUKLSAgICAgKiBAc3RhYmxl
IElDVSAzLjYKLSAgICAgKi8KLSAgICBVVGV4dENsb25lICpjbG9uZTsKLQotICAgIC8qKgotICAg
ICAqIChwdWJsaWMpIGZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0TGVuZ3RoCi0gICAgICogTWF5
IGJlIGV4cGVuc2l2ZSB0byBjb21wdXRlIQotICAgICAqCi0gICAgICogQHNlZSBVVGV4dExlbmd0
aAotICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIFVUZXh0TmF0aXZlTGVuZ3Ro
ICpuYXRpdmVMZW5ndGg7Ci0KLSAgICAvKioKLSAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2lu
dGVyIGZvciBVVGV4dEFjY2Vzcy4KLSAgICAgKgotICAgICAqIEBzZWUgVVRleHRBY2Nlc3MKLSAg
ICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBVVGV4dEFjY2VzcyAqYWNjZXNzOwot
Ci0gICAgLyoqCi0gICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRFeHRy
YWN0LgotICAgICAqCi0gICAgICogQHNlZSBVVGV4dEV4dHJhY3QKLSAgICAgKiBAc3RhYmxlIElD
VSAzLjYKLSAgICAgKi8KLSAgICBVVGV4dEV4dHJhY3QgKmV4dHJhY3Q7Ci0KLSAgICAvKioKLSAg
ICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dFJlcGxhY2UuCi0gICAgICoK
LSAgICAgKiBAc2VlIFVUZXh0UmVwbGFjZQotICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAq
LwotICAgIFVUZXh0UmVwbGFjZSAqcmVwbGFjZTsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMp
IEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0Q29weS4KLSAgICAgKgotICAgICAqIEBzZWUgVVRl
eHRDb3B5Ci0gICAgICogQHN0YWJsZSBJQ1UgMy42Ci0gICAgICovCi0gICAgVVRleHRDb3B5ICpj
b3B5OwotCi0gICAgLyoqCi0gICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRl
eHRNYXBPZmZzZXRUb05hdGl2ZS4KLSAgICAgKgotICAgICAqIEBzZWUgVVRleHRNYXBPZmZzZXRU
b05hdGl2ZQotICAgICAqIEBzdGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIFVUZXh0TWFwT2Zm
c2V0VG9OYXRpdmUgKm1hcE9mZnNldFRvTmF0aXZlOwotCi0gICAgLyoqCi0gICAgICogKHB1Ymxp
YykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRNYXBOYXRpdmVJbmRleFRvVVRGMTYuCi0gICAg
ICoKLSAgICAgKiBAc2VlIFVUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2Ci0gICAgICogQHN0YWJs
ZSBJQ1UgMy42Ci0gICAgICovCi0gICAgVVRleHRNYXBOYXRpdmVJbmRleFRvVVRGMTYgKm1hcE5h
dGl2ZUluZGV4VG9VVEYxNjsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBv
aW50ZXIgZm9yIFVUZXh0Q2xvc2UuCi0gICAgICAqCi0gICAgICAqIEBzZWUgVVRleHRDbG9zZQot
ICAgICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAgVVRleHRDbG9zZSAgKmNsb3Nl
OwotCi0gICAgLyoqCi0gICAgICAqIChwcml2YXRlKSAgU3BhcmUgZnVuY3Rpb24gcG9pbnRlcgot
ICAgICAgKiBAaW50ZXJuYWwKLSAgICAgICovCi0gICAgVVRleHRDbG9zZSAgKnNwYXJlMTsKLSAg
ICAKLSAgICAvKioKLSAgICAgICogKHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCi0g
ICAgICAqIEBpbnRlcm5hbAotICAgICAgKi8KLSAgICBVVGV4dENsb3NlICAqc3BhcmUyOwotCi0g
ICAgLyoqCi0gICAgICAqIChwcml2YXRlKSAgU3BhcmUgZnVuY3Rpb24gcG9pbnRlcgotICAgICAg
KiBAaW50ZXJuYWwKLSAgICAgICovCi0gICAgVVRleHRDbG9zZSAgKnNwYXJlMzsKLQotfTsKLS8q
KgotICogRnVuY3Rpb24gZGlzcGF0Y2ggdGFibGUgZm9yIFVUZXh0Ci0gKiBAc2VlIFVUZXh0RnVu
Y3MKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgVVRleHRGdW5jcyBVVGV4dEZ1bmNzOwotCi0gLyoqCi0g
ICogICBVVGV4dCBzdHJ1Y3QuICBQcm92aWRlcyB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGdl
bmVyaWMgVVRleHQgYWNjZXNzIGNvZGUKLSAgKiAgICAgICAgICAgICAgICAgIGFuZCB0aGUgVVRl
eHQgcHJvdmlkZXIgY29kZSB0aGF0IHdvcmtzIG9uIHNwZWNpZmljIGtpbmRzIG9mCi0gICogICAg
ICAgICAgICAgICAgICB0ZXh0ICAoVVRGLTgsIG5vbmNvbnRpZ3VvdXMgVVRGLTE2LCB3aGF0ZXZl
ci4pCi0gICoKLSAgKiAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9ucyB0aGF0IGFyZSB1c2lu
ZyBwcmVkZWZpbmVkIHR5cGVzIG9mIHRleHQgcHJvdmlkZXJzCi0gICogICAgICAgICAgICAgICAg
ICB0byBwYXNzIHRleHQgZGF0YSB0byBJQ1Ugc2VydmljZXMgd2lsbCBoYXZlIG5vIG5lZWQgdG8g
dmlldyB0aGUKLSAgKiAgICAgICAgICAgICAgICAgIGludGVybmFscyBvZiB0aGUgVVRleHQgc3Ry
dWN0cyB0aGF0IHRoZXkgb3Blbi4KLSAgKgotICAqIEBzdGFibGUgSUNVIDMuNgotICAqLwotc3Ry
dWN0IFVUZXh0IHsKLSAgICAvKioKLSAgICAgKiAgICAgKHByaXZhdGUpICBNYWdpYy4gIFVzZWQg
dG8gaGVscCBkZXRlY3Qgd2hlbiBVVGV4dCBmdW5jdGlvbnMgYXJlIGhhbmRlZAotICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgaW52YWxpZCBvciB1bml0aWFsaXplZCBVVGV4dCBzdHJ1Y3Rz
LgotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdXRleHRfb3BlblhZWigpIGZ1bmN0aW9u
cyB0YWtlIGFuIGluaXRpYWxpemVkLAotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgYnV0
IG5vdCBuZWNlc3NhcmlseSBvcGVuLCBVVGV4dCBzdHJ1Y3QgYXMgYW4KLSAgICAgKiAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIGZpbGwtaW4gcGFyYW1ldGVyLiAgVGhpcyBtYWdpYyBm
aWVsZAotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCB0byBjaGVjayBmb3Ig
dGhhdCBpbml0aWFsaXphdGlvbi4KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQg
cHJvdmlkZXIgY2xvc2UgZnVuY3Rpb25zIG11c3QgTk9UIGNsZWFyCi0gICAgICogICAgICAgICAg
ICAgICAgICAgICAgICB0aGUgbWFnaWMgZmllbGQgYmVjYXVzZSB0aGF0IHdvdWxkIHByZXZlbnQK
LSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlIG9mIHRoZSBVVGV4dCBzdHJ1Y3Qu
Ci0gICAgICogQGludGVybmFsCi0gICAgICovCi0gICAgdWludDMyX3QgICAgICAgbWFnaWM7Ci0K
LQotICAgIC8qKgotICAgICAqICAgICAocHJpdmF0ZSkgIEZsYWdzIGZvciBtYW5hZ2luZyB0aGUg
YWxsb2NhdGlvbiBhbmQgZnJlZWluZyBvZgotICAgICAqICAgICAgICAgICAgICAgIG1lbW9yeSBh
c3NvY2lhdGVkIHdpdGggdGhpcyBVVGV4dC4KLSAgICAgKiBAaW50ZXJuYWwKLSAgICAgKi8KLSAg
ICBpbnQzMl90ICAgICAgICBmbGFnczsKLQotCi0gICAgLyoqCi0gICAgICAqICBUZXh0IHByb3Zp
ZGVyIHByb3BlcnRpZXMuICBUaGlzIHNldCBvZiBmbGFncyBpcyBtYWludGFpbnRlZCBieSB0aGUK
LSAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgcHJvdmlkZXIgaW1wbGVt
ZW50YXRpb24uCi0gICAgICAqICBAc3RhYmxlIElDVSAzLjQKLSAgICAgICovCi0gICAgaW50MzJf
dCAgICAgICAgIHByb3ZpZGVyUHJvcGVydGllczsKLQotICAgIC8qKgotICAgICAqIChwdWJsaWMp
IHNpemVPZlN0cnVjdD1zaXplb2YoVVRleHQpCi0gICAgICogQWxsb3dzIHBvc3NpYmxlIGJhY2t3
YXJkIGNvbXBhdGlibGUgZXh0ZW5zaW9uLgotICAgICAqCi0gICAgICogQHN0YWJsZSBJQ1UgMy40
Ci0gICAgICovCi0gICAgaW50MzJfdCAgICAgICAgIHNpemVPZlN0cnVjdDsKLSAgICAKLSAgICAv
KiAtLS0tLS0gMTYgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnkgLS0tLS0tLS0tLS0gICovCi0gICAg
Ci0KLSAgICAvKioKLSAgICAgICogIChwcm90ZWN0ZWQpIE5hdGl2ZSBpbmRleCBvZiB0aGUgZmly
c3QgY2hhcmFjdGVyIHBvc2l0aW9uIGZvbGxvd2luZwotICAgICAgKiAgICAgICAgICAgICAgdGhl
IGN1cnJlbnQgY2h1bmsuCi0gICAgICAqICBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAg
aW50NjRfdCAgICAgICAgIGNodW5rTmF0aXZlTGltaXQ7Ci0KLSAgICAvKioKLSAgICAgKiAgIChw
cm90ZWN0ZWQpICBTaXplIGluIGJ5dGVzIG9mIHRoZSBleHRyYSBzcGFjZSAocEV4dHJhKS4KLSAg
ICAgKiAgQHN0YWJsZSBJQ1UgMy40Ci0gICAgICovCi0gICAgaW50MzJfdCAgICAgICAgZXh0cmFT
aXplOwotCi0gICAgLyoqCi0gICAgICAqICAgIChwcm90ZWN0ZWQpIFRoZSBoaWdoZXN0IGNodW5r
IG9mZnNldCB3aGVyZSBuYXRpdmUgaW5kZXhpbmcgYW5kCi0gICAgICAqICAgIGNodW5rIChVVEYt
MTYpIGluZGV4aW5nIGNvcnJlc3BvbmQuICBGb3IgVVRGLTE2IHNvdXJjZXMsIHZhbHVlCi0gICAg
ICAqICAgIHdpbGwgYmUgZXF1YWwgdG8gY2h1bmtMZW5ndGguCi0gICAgICAqCi0gICAgICAqICAg
IEBzdGFibGUgSUNVIDMuNgotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgbmF0aXZlSW5k
ZXhpbmdMaW1pdDsKLQotICAgIC8qIC0tLS0gMTYgYnl0ZSBhbGlnbm1lbnQgYm91bmRhcnktLS0t
LS0gKi8KLSAgICAKLSAgICAvKioKLSAgICAgKiAgKHByb3RlY3RlZCkgTmF0aXZlIGluZGV4IG9m
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgY2h1bmsuCi0gICAgICogIEBzdGFibGUg
SUNVIDMuNgotICAgICAqLwotICAgIGludDY0X3QgICAgICAgICBjaHVua05hdGl2ZVN0YXJ0Owot
Ci0gICAgLyoqCi0gICAgICogIChwcm90ZWN0ZWQpIEN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9u
IHdpdGhpbiB0aGUgdGV4dCBjaHVuayAoVVRGLTE2IGJ1ZmZlcikuCi0gICAgICogIFRoaXMgaXMg
dGhlIGluZGV4IHRvIHRoZSBjaGFyYWN0ZXIgdGhhdCB3aWxsIGJlIHJldHVybmVkIGJ5IHV0ZXh0
X25leHQzMigpLgotICAgICAqICBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBpbnQzMl90
ICAgICAgICAgY2h1bmtPZmZzZXQ7Ci0KLSAgICAvKioKLSAgICAgKiAgKHByb3RlY3RlZCkgTGVu
Z3RoIHRoZSB0ZXh0IGNodW5rIChVVEYtMTYgYnVmZmVyKSwgaW4gVUNoYXJzLgotICAgICAqICBA
c3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgY2h1bmtMZW5ndGg7
Ci0KLSAgICAvKiAtLS0tIDE2ICBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tICovCi0gICAgCi0K
LSAgICAvKioKLSAgICAgKiAgKHByb3RlY3RlZCkgIHBvaW50ZXIgdG8gYSBjaHVuayBvZiB0ZXh0
IGluIFVURi0xNiBmb3JtYXQuCi0gICAgICogIE1heSByZWZlciBlaXRoZXIgdG8gb3JpZ2luYWwg
c3RvcmFnZSBvZiB0aGUgc291cmNlIG9mIHRoZSB0ZXh0LCBvcgotICAgICAqICBpZiBjb252ZXJz
aW9uIHdhcyByZXF1aXJlZCwgdG8gYSBidWZmZXIgb3duZWQgYnkgdGhlIFVUZXh0LgotICAgICAq
ICBAc3RhYmxlIElDVSAzLjYKLSAgICAgKi8KLSAgICBjb25zdCBVQ2hhciAgICAqY2h1bmtDb250
ZW50czsKLQotICAgICAvKioKLSAgICAgICogKHB1YmxpYykgICAgIFBvaW50ZXIgdG8gRGlzcGF0
Y2ggdGFibGUgZm9yIGFjY2Vzc2luZyBmdW5jdGlvbnMgZm9yIHRoaXMgVVRleHQuCi0gICAgICAq
IEBzdGFibGUgSUNVIDMuNgotICAgICAgKi8KLSAgICBjb25zdCBVVGV4dEZ1bmNzICAgICAqcEZ1
bmNzOwotCi0gICAgLyoqCi0gICAgICogIChwcm90ZWN0ZWQpICBQb2ludGVyIHRvIGFkZGl0aW9u
YWwgc3BhY2UgcmVxdWVzdGVkIGJ5IHRoZQotICAgICAqICAgICAgICAgICAgICAgdGV4dCBwcm92
aWRlciBkdXJpbmcgdGhlIHV0ZXh0X29wZW4gb3BlcmF0aW9uLgotICAgICAqIEBzdGFibGUgSUNV
IDMuNAotICAgICAqLwotICAgIHZvaWQgICAgICAgICAgKnBFeHRyYTsKLQotICAgIC8qKgotICAg
ICAqIChwcm90ZWN0ZWQpIFBvaW50ZXIgdG8gc3RyaW5nIG9yIHRleHQtY29udGFpbmluIG9iamVj
dCBvciBzaW1pbGFyLgotICAgICAqIFRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0aGUgdGV4dCB0aGF0
IHRoaXMgVVRleHQgaXMgd3JhcHBpbmcsIGluIGEgZm9ybWF0Ci0gICAgICogIHRoYXQgaXMga25v
d24gdG8gdGhlIHRleHQgcHJvdmlkZXIgZnVuY3Rpb25zLgotICAgICAqIEBzdGFibGUgSUNVIDMu
NAotICAgICAqLwotICAgIGNvbnN0IHZvaWQgICAqY29udGV4dDsKLQotICAgIC8qIC0tLSAxNiBi
eXRlIGFsaWdubWVudCBib3VuZGFyeS0tLSAqLwotCi0gICAgLyoqCi0gICAgICogKHByb3RlY3Rl
ZCkgUG9pbnRlciBmaWVsZHMgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIu
Ci0gICAgICogTm90IHVzZWQgYnkgVVRleHQgY29tbW9uIGNvZGUuCi0gICAgICogQHN0YWJsZSBJ
Q1UgMy42Ci0gICAgICovCi0gICAgY29uc3Qgdm9pZCAgICAgKnA7IAotICAgIC8qKgotICAgICAq
IChwcm90ZWN0ZWQpIFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0
IHByb3ZpZGVyLgotICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgotICAgICAq
IEBzdGFibGUgSUNVIDMuNgotICAgICAqLwotICAgIGNvbnN0IHZvaWQgICAgICpxOwotICAgICAv
KioKLSAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFpbGFibGUgZm9yIHVzZSBi
eSB0aGUgdGV4dCBwcm92aWRlci4KLSAgICAgKiBOb3QgdXNlZCBieSBVVGV4dCBjb21tb24gY29k
ZS4KLSAgICAgKiBAc3RhYmxlIElDVSAzLjYKLSAgICAgICovCi0gICAgY29uc3Qgdm9pZCAgICAg
KnI7Ci0KLSAgICAvKioKLSAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVy
ZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yawotICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBp
cyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCi0gICAgICAqIEBpbnRl
cm5hbCBJQ1UgMy40Ci0gICAgICAqLwotICAgIHZvaWQgICAgICAgICAgICpwcml2UDsKLQotCi0g
ICAgLyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0tICovCi0gICAgCi0KLSAgICAv
KioKLSAgICAgICogKHByb3RlY3RlZCkgSW50ZWdlciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5
IHRoZSB0ZXh0IHByb3ZpZGVyLgotICAgICAgKiBOb3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3
b3JrLCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBvZiB0aGUgVVRleHQuCi0gICAgICAqIEBzdGFi
bGUgSUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQ2NF90ICAgICAgICAgYTsKLQotICAgIC8qKgot
ICAgICAgKiAocHJvdGVjdGVkKSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhl
IHRleHQgcHJvdmlkZXIuCi0gICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmss
IG9yIGJ5IHRoZSBjbGllbnQgKHVzZXIpIG9mIHRoZSBVVGV4dC4KLSAgICAgICogQHN0YWJsZSBJ
Q1UgMy40Ci0gICAgICAqLwotICAgIGludDMyX3QgICAgICAgICBiOwotCi0gICAgLyoqCi0gICAg
ICAqIChwcm90ZWN0ZWQpIEludGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgdGV4
dCBwcm92aWRlci4KLSAgICAgICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZyYW1ld29yaywgb3Ig
YnkgdGhlIGNsaWVudCAodXNlcikgb2YgdGhlIFVUZXh0LgotICAgICAgKiBAc3RhYmxlIElDVSAz
LjQKLSAgICAgICovCi0gICAgaW50MzJfdCAgICAgICAgIGM7Ci0KLSAgICAvKiAgLS0tLSAxNiBi
eXRlIGFsaWdubWVudCBib3VuZGFyeS0tLS0gKi8KLQotCi0gICAgLyoqCi0gICAgICAqICBQcml2
YXRlIGZpZWxkIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsK
LSAgICAgICogICAgIGl0c2VsZi4gIFRoaXMgaXMgbm90IHRvIGJlIHRvdWNoZWQgYnkgdGhlIHRl
eHQgcHJvdmlkZXJzLgotICAgICAgKiBAaW50ZXJuYWwgSUNVIDMuNAotICAgICAgKi8KLSAgICBp
bnQ2NF90ICAgICAgICAgcHJpdkE7Ci0gICAgLyoqCi0gICAgICAqICBQcml2YXRlIGZpZWxkIHJl
c2VydmVkIGZvciBmdXR1cmUgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsKLSAgICAgICogICAg
IGl0c2VsZi4gIFRoaXMgaXMgbm90IHRvIGJlIHRvdWNoZWQgYnkgdGhlIHRleHQgcHJvdmlkZXJz
LgotICAgICAgKiBAaW50ZXJuYWwgSUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAg
ICAgcHJpdkI7Ci0gICAgLyoqCi0gICAgICAqICBQcml2YXRlIGZpZWxkIHJlc2VydmVkIGZvciBm
dXR1cmUgdXNlIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmsKLSAgICAgICogICAgIGl0c2VsZi4gIFRo
aXMgaXMgbm90IHRvIGJlIHRvdWNoZWQgYnkgdGhlIHRleHQgcHJvdmlkZXJzLgotICAgICAgKiBA
aW50ZXJuYWwgSUNVIDMuNAotICAgICAgKi8KLSAgICBpbnQzMl90ICAgICAgICAgcHJpdkM7Ci19
OwotCi0KLS8qKgotICogIENvbW1vbiBmdW5jdGlvbiBmb3IgdXNlIGJ5IFRleHQgUHJvdmlkZXIg
aW1wbGVtZW50YXRpb25zIHRvIGFsbG9jYXRlIGFuZC9vciBpbml0aWFsaXplCi0gKiAgYSBuZXcg
VVRleHQgc3RydWN0LiAgVG8gYmUgY2FsbGVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB1dGV4
dF9vcGVuKCkgZnVuY3Rpb25zLgotICogIElmIHRoZSBzdXBwbGllZCBVVGV4dCBwYXJhbWV0ZXIg
aXMgbnVsbCwgYSBuZXcgVVRleHQgc3RydWN0IHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBoZWFw
LgotICogIElmIHRoZSBzdXBwbGllZCBVVGV4dCBpcyBhbHJlYWR5IG9wZW4sIHRoZSBwcm92aWRl
cidzIGNsb3NlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCi0gKiAgc28gdGhhdCB0aGUgc3RydWN0
IGNhbiBiZSByZXVzZWQgYnkgdGhlIG9wZW4gdGhhdCBpcyBpbiBwcm9ncmVzcy4KLSAqCi0gKiBA
cGFyYW0gdXQgICBwb2ludGVyIHRvIGEgVVRleHQgc3RydWN0IHRvIGJlIHJlLXVzZWQsIG9yIG51
bGwgaWYgYSBuZXcgVVRleHQKLSAqICAgICAgICAgICAgIHNob3VsZCBiZSBhbGxvY2F0ZWQuCi0g
KiBAcGFyYW0gZXh0cmFTcGFjZSBUaGUgYW1vdW50IG9mIGFkZGl0aW9uYWwgc3BhY2UgdG8gYmUg
YWxsb2NhdGVkIGFzIHBhcnQKLSAqICAgICAgICAgICAgIG9mIHRoaXMgVVRleHQsIGZvciB1c2Ug
YnkgdHlwZXMgb2YgcHJvdmlkZXJzIHRoYXQgcmVxdWlyZQotICogICAgICAgICAgICAgYWRkaXRp
b25hbCBzdG9yYWdlLgotICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJldHVybmVkIGhlcmUu
Ci0gKiBAcmV0dXJuIHBvaW50ZXIgdG8gdGhlIFVUZXh0LCBhbGxvY2F0ZWQgaWYgbmVjZXNzYXJ5
LCB3aXRoIGV4dHJhIHNwYWNlIHNldCB1cCBpZiByZXF1ZXN0ZWQuCi0gKiBAc3RhYmxlIElDVSAz
LjQKLSAqLwotVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKLXV0ZXh0X3NldHVwKFVUZXh0ICp1
dCwgaW50MzJfdCBleHRyYVNwYWNlLCBVRXJyb3JDb2RlICpzdGF0dXMpOwotCi0jaWZuZGVmIFVf
SElERV9JTlRFUk5BTF9BUEkKLS8qKgotICAqIEBpbnRlcm5hbAotICAqICBWYWx1ZSB1c2VkIHRv
IGhlbHAgaWRlbnRpZnkgY29ycmVjdGx5IGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCi0gICog
IE5vdGU6ICBtdXN0IGJlIHB1YmxpY2x5IHZpc2libGUgc28gdGhhdCBVVEVYVF9JTklUSUFMSVpF
UiBjYW4gYWNjZXNzIGl0LgotICAqLwotZW51bSB7Ci0gICAgVVRFWFRfTUFHSUMgPSAweDM0NWFk
ODJjCi19OwotI2VuZGlmICAvKiBVX0hJREVfSU5URVJOQUxfQVBJICovCi0KLS8qKgotICogaW5p
dGlhbGl6ZXIgdG8gYmUgdXNlZCB3aXRoIGxvY2FsIChzdGFjaykgaW5zdGFuY2VzIG9mIGEgVVRl
eHQKLSAqICBzdHJ1Y3QuICBVVGV4dCBzdHJ1Y3RzIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3Jl
IHBhc3NpbmcKLSAqICB0aGVtIHRvIG9uZSBvZiB0aGUgdXRleHRfb3BlbiBmdW5jdGlvbnMuCi0g
KgotICogQHN0YWJsZSBJQ1UgMy42Ci0gKi8KLSNkZWZpbmUgVVRFWFRfSU5JVElBTElaRVIgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAg
ICBVVEVYVF9NQUdJQywgICAgICAgICAgLyogbWFnaWMgICAgICAgICAgICAgICAgKi8gXAotICAg
ICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGZsYWdzICAgICAgICAgICAg
ICAgICovIFwKLSAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiBwcm92
aWRlclByb3BzICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICBzaXplb2YoVVRleHQpLCAg
ICAgICAgLyogc2l6ZU9mU3RydWN0ICAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgMCwg
ICAgICAgICAgICAgICAgICAgIC8qIGNodW5rTmF0aXZlTGltaXQgICAgICovIFwKLSAgICAgICAg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiBleHRyYVNpemUgICAgICAgICAgICAq
LyBcCi0gICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogbmF0aXZlSW5k
ZXhpbmdMaW1pdCAgKi8gXAotICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAg
IC8qIGNodW5rTmF0aXZlU3RhcnQgICAgICovIFwKLSAgICAgICAgICAgICAgICAgIDAsICAgICAg
ICAgICAgICAgICAgICAvKiBjaHVua09mZnNldCAgICAgICAgICAqLyBcCi0gICAgICAgICAgICAg
ICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtMZW5ndGggICAgICAgICAgKi8gXAot
ICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIGNodW5rQ29udGVudHMg
ICAgICAgICovIFwKLSAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBw
RnVuY3MgICAgICAgICAgICAgICAqLyBcCi0gICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgLyogcEV4dHJhICAgICAgICAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAg
TlVMTCwgICAgICAgICAgICAgICAgIC8qIGNvbnRleHQgICAgICAgICAgICAgICovIFwKLSAgICAg
ICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsICAgICAvKiBwLCBxLCByICAgICAgICAgICAg
ICAqLyBcCi0gICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgLyogcHJpdlAg
ICAgICAgICAgICAgICAgKi8gXAotICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgICAgICAgICAg
ICAgIC8qIGEsIGIsIGMgICAgICAgICAgICAgICovIFwKLSAgICAgICAgICAgICAgICAgIDAsIDAs
IDAgICAgICAgICAgICAgICAvKiBwcml2QSxCLEMsICAgICAgICAgICAqLyBcCi0gICAgICAgICAg
ICAgICAgICB9Ci0KLQotVV9DREVDTF9FTkQKLQotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBmZTVlYmZlYWZmNjhjZDcxNTdh
NTU1MWY0NTFmNTkxNWUxNzAxNTBmLi41YjE4OTRlOTEyZTg0ZmM3OTczZTg5NDFlZmY0ODQwNmU0
ODViYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cApAQCAtMjksOSArMjksOSBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogI2lmIFVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IGNlZGVkNzMw
ZjQ1N2ZhZGYwZTgyMjA0ODJlMmRkZTcyODcyZjhkNDYuLmFmYThlMTJkODFiZDg1YmQ5NjNmOGRj
YjJjOGJlYzU0Nzk3NGMwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
IlN0cmluZ1RydW5jYXRvci5oIgogCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKLSNpbmNsdWRl
ICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCBiM2RkZDhjM2RmODA3OGRkY2M3N2FiNjNkNDQy
MThhNjI2YmNhNDE4Li42ZDg4Yzg4ZGQ0YWE2ZDJkMGFjMzRkMzE0YWY2ZGYyYmFlMjdkNTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApA
QCAtNDAsNiArNDAsMjAgQEAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYpOwor
fQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PgorUmV0YWluUHRyPENHQ29sb3JSZWY+
IFRpbnlMUlVDYWNoZVBvbGljeTxXZWJDb3JlOjpDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+
Pjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAg
IHJldHVybiBhZG9wdENGKFdlYkNvcmU6OmxlYWtDR0NvbG9yKGNvbG9yKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShJT1Mp
CiBzdGF0aWMgQ0dDb2xvclJlZiBjcmVhdGVDR0NvbG9yV2l0aERldmljZVJHQkEoQ0dDb2xvclJl
ZiBzb3VyY2VDb2xvcikKQEAgLTEwOCwxMiArMTIyLDYgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVh
a0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNS
R0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpOwogfQogCi10ZW1wbGF0ZTw+Ci1SZXRhaW5Q
dHI8Q0dDb2xvclJlZj4gVGlueUxSVUNhY2hlUG9saWN5PENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgcmV0
dXJuIGFkb3B0Q0YobGVha0NHQ29sb3IoY29sb3IpKTsKLX0KLQogQ0dDb2xvclJlZiBjYWNoZWRD
R0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBzd2l0Y2ggKGNvbG9yLnJnYigpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGZmMGJmODE5NzUwODE3Y2JlMmM3YmZj
YmViODFmYjQxYTkxYTdhODMuLjE3Nzc5OWVhYWM3YzFmN2IyMjZkOGVkMGU0YWNkMDcwMDRiODk4
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUg
IlJlbmRlclRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQ
b29sSUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9y
UG9vbElDVS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2Y1MGE1ZDY1ODY1YTM0
MWJmZWNmMzdjYjVjYmRjOTY2ZjM4MTg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVX2gKLSNkZWZpbmUgTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVX2gKLQotI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVS5oIgotI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgotI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvVGhy
ZWFkU3BlY2lmaWMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIExpbmVCcmVha0l0ZXJhdG9yUG9v
bCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJyZWFrSXRlcmF0b3JQb29sKTsKLXB1
YmxpYzoKLSAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7IH0KLQotICAgIHN0YXRpYyBMaW5l
QnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQotICAgIHsKLSAgICAgICAgc3RhdGljIFdU
Rjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPiogcG9vbCA9IG5ldyBXVEY6
OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD47Ci0gICAgICAgIHJldHVybiAq
KnBvb2w7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cmluZyBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5
d29yZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1v
ZGUpCi0gICAgewotICAgICAgICBTdHJpbmdCdWlsZGVyIGxvY2FsZVdpdGhLZXl3b3JkOwotICAg
ICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmQobG9jYWxlKTsKLSAgICAgICAgbG9jYWxlV2l0
aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgiQGJyZWFrPSIpOwotICAgICAgICBzd2l0Y2ggKG1vZGUp
IHsKLSAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNDoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
TGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKLSAgICAgICAgICAgIGxvY2FsZVdpdGhL
ZXl3b3JkLmFwcGVuZExpdGVyYWwoImxvb3NlIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKLSAgICAgICAgICAgIGxv
Y2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIm5vcm1hbCIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRTdHJpY3Q6Ci0gICAg
ICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJzdHJpY3QiKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBsb2NhbGVXaXRoS2V5d29y
ZC50b1N0cmluZygpOwotICAgIH0KLQotICAgIFRleHRCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBp
c0NKSykKLSAgICB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBsb2NhbGVXaXRoT3B0aW9uYWxCcmVh
a0tleXdvcmQ7Ci0gICAgICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0
KQotICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbG9jYWxlOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQg
PSBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUsIG1vZGUpOwotCi0gICAgICAgIFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9wb29sLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAobV9wb29sW2ldLmZp
cnN0ID09IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCkgewotICAgICAgICAgICAgICAg
IGl0ZXJhdG9yID0gbV9wb29sW2ldLnNlY29uZDsKLSAgICAgICAgICAgICAgICBtX3Bvb2wucmVt
b3ZlKGkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCFpdGVyYXRvcikgewotICAgICAgICAgICAgaXRlcmF0b3IgPSBvcGVu
TGluZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkLCBtb2RlLCBp
c0NKSyk7Ci0gICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKCFtX3ZlbmRlZEl0ZXJhdG9ycy5jb250
YWlucyhpdGVyYXRvcikpOwotICAgICAgICBtX3ZlbmRlZEl0ZXJhdG9ycy5zZXQoaXRlcmF0b3Is
IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCk7Ci0gICAgICAgIHJldHVybiBpdGVyYXRv
cjsKLSAgICB9Ci0KLSAgICB2b2lkIHB1dChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi0g
ICAgewotICAgICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBtX3ZlbmRlZEl0ZXJhdG9ycy5jb250
YWlucyhpdGVyYXRvcikpOwotCi0gICAgICAgIGlmIChtX3Bvb2wuc2l6ZSgpID09IGNhcGFjaXR5
KSB7Ci0gICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKG1fcG9vbFswXS5zZWNvbmQp
OwotICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1f
cG9vbC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMudGFrZShpdGVyYXRvciksIGl0ZXJh
dG9yKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2FwYWNp
dHkgPSA0OwotCi0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBUZXh0QnJlYWtJ
dGVyYXRvcio+IEVudHJ5OwotICAgIHR5cGVkZWYgVmVjdG9yPEVudHJ5LCBjYXBhY2l0eT4gUG9v
bDsKLSAgICBQb29sIG1fcG9vbDsKLSAgICBIYXNoTWFwPFRleHRCcmVha0l0ZXJhdG9yKiwgQXRv
bWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKLQotICAgIGZyaWVuZCBXVEY6OlRocmVhZFNw
ZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJhdG9yIExpbmVCcmVha0l0ZXJhdG9y
UG9vbCooKTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwCmluZGV4IGRmY2Y5YTM0NjJkNWIxYjI4NGQxOTU5OGFm
ZTAzMmIzZTRjZGNlMWIuLjQ3ZDI0NDc1YWMwOTg5NGUwMzg4NTFhNDhiYjljMDVlZGRlZjM3YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3Bw
CkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dEJv
dW5kYXJpZXMuaCIKIAotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTBhNjZjZTBiN2VkMTQ3YWU3YzZiM2Q3Yjk3MDk4MjNlN2ZlMzI1Zi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDky
OSArMCwwIEBACi0vKgotICogKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3Jj
aCBNb2JpbGUsIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0
ZXJhdG9yLmgiCi0KLSNpbmNsdWRlICJMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKLSNpbmNs
dWRlICJVVGV4dFByb3ZpZGVyTGF0aW4xLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2
LmgiCi0jaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLS8vIEZJWE1FOiBUaGlzIG5lZWRzIGEgYmV0dGVy
IG5hbWUKLSNkZWZpbmUgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUIChQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MTAwKSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBJdGVyYXRvciBpbml0aWFsaXphdGlv
bgotCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJ
dGVyYXRvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xv
Y2FsZUlEKCkpCi17Ci0gICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwot
ICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJy
ZWFrSXRlcmF0b3IqPih1YnJrX29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykp
OwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNv
dWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVu
U3RhdHVzKSwgb3BlblN0YXR1cyk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yOwotfQotCi0jaWYgIVBM
QVRGT1JNKElPUykKLQotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0
b3JXaXRoUnVsZXMoY29uc3QgY2hhciogYnJlYWtSdWxlcykKLXsKLSAgICBVUGFyc2VFcnJvciBw
YXJzZVN0YXR1czsKLSAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKGJyZWFrUnVsZXMpOwotICAgIGF1dG8gdXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oYnJlYWtSdWxlcyksIGxlbmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgVGV4
dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVy
YXRvcio+KHVicmtfb3BlblJ1bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAw
LCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShV
X1NVQ0NFU1Mob3BlblN0YXR1cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRv
cjogJXMgKCVkKSIsIHVfZXJyb3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKLSAgICBy
ZXR1cm4gaXRlcmF0b3I7Ci19Ci0KLSNlbmRpZgotCi0KLS8vIEl0ZXJhdG9yIHRleHQgc2V0dGlu
ZwotCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJl
YWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGlmIChzdHJp
bmcuaXM4Qml0KCkpIHsKLSAgICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKLSAgICAg
ICAgdGV4dExvY2FsLnRleHQgPSBVVEVYVF9JTklUSUFMSVpFUjsKLSAgICAgICAgdGV4dExvY2Fs
LnRleHQuZXh0cmFTaXplID0gc2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOwotICAgICAgICB0ZXh0
TG9jYWwudGV4dC5wRXh0cmEgPSB0ZXh0TG9jYWwuYnVmZmVyOwotCi0gICAgICAgIFVFcnJvckNv
ZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVVRleHQqIHRleHQgPSBvcGVu
TGF0aW4xVVRleHRQcm92aWRlcigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3Ry
aW5nLmxlbmd0aCgpLCAmb3BlblN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0
YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3
aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLQotICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9f
RVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVy
YXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgaWYgKFVf
RkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3Nl
dFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oJml0ZXJhdG9yKSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCksICZzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVz
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiAmaXRl
cmF0b3I7Ci19Ci0KLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4
dEZvckl0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJp
bmcsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCkKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIFVUZXh0V2l0aEJ1ZmZl
ciB0ZXh0TG9jYWw7Ci0gICAgICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7
Ci0gICAgICAgIHRleHRMb2NhbC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVm
ZmVyKTsKLSAgICAgICAgdGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsK
LQotICAgICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAg
IFVUZXh0KiB0ZXh0ID0gb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRM
b2NhbCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0
LCBwcmlvckNvbnRleHRMZW5ndGgsICZvcGVuU3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVS
RShvcGVuU3RhdHVzKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4
dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsK
LSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgVUVycm9y
Q29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0
KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0
VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKLSAg
ICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQi
LCBzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9
Ci0KLSAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgVVRl
eHQgdGV4dExvY2FsID0gVVRFWFRfSU5JVElBTElaRVI7Ci0KLSAgICAgICAgVUVycm9yQ29kZSBv
cGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYx
NkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMx
NigpLCBzdHJpbmcubGVuZ3RoKCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAm
b3BlblN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAg
ICAgICAgIExPR19FUlJPUigib3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWls
ZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0
b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZB
SUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRV
VGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuICZpdGVyYXRvcjsKLX0KLQotCi0vLyBTdGF0aWMgaXRlcmF0
b3JzCi0KLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0
cmluZykKLXsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0
ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfV09SRCk7Ci0gICAgaWYgKCFzdGF0aWNX
b3JkQnJlYWtJdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4g
c2V0VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKLX0K
LQotVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0
cmluZykKLXsKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJl
YWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKLSAgICBpZiAo
IXN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0
b3IsIHN0cmluZyk7Ci19Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJh
dG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotI2lmICFQTEFURk9STShJT1MpCi0gICAgLy8gVGhp
cyBydWxlIHNldCBpcyBiYXNlZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2Yg
SUNVIDQuMAotICAgIC8vIDxodHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3Uv
aWN1L3RhZ3MvcmVsZWFzZS00LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KLSAgICAv
LyBUaGUgbWFqb3IgZGlmZmVyZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVk
IGJlbG93OgotICAgIC8vICogUmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0g
U3BhY2luZ01hcmt9XScgd2l0aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9
IC0gJEV4dGVuZF0nIGZvciBJQ1UgMy44IG9yIGVhcmxpZXI7Ci0gICAgLy8gKiBSZW1vdmVkIHJ1
bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJh
Y3RlcnMgKEJ1ZyAyNDM0Mik7Ci0gICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBj
dXJzb3IgZnJvbSBtb3ZpbmcgYWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBl
eGNlcHQgVGFtaWwgKEJ1ZyAxNTc5MCksIGFuZDsKLSAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQg
cHJldmVudCBhIGN1cnNvciBmcm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBr
YXRha2FyYSB2b2ljZWQgbWFya3MuCi0gICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwg
aW5kaWNhdG9yIHN5bWJvbHMuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9Ci0gICAg
ICAgICIkQ1IgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgotICAg
ICAgICAiJExGICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKLSAg
ICAgICAgIiRDb250cm9sID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1d
OyIKLSAgICAgICAgIiRWb2ljZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiICAvLyBKYXBhbmVz
ZSBoYWxmLXdpZHRoIGthdGFrYW5hIHZvaWNlZCBtYXJrcwotICAgICAgICAiJEV4dGVuZCAgPSBb
XFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBFeHRlbmR9ICRWb2ljZU1hcmtzIC0gW1xcdTBF
MzAgXFx1MEUzMiBcXHUwRTQ1IFxcdTBFQjAgXFx1MEVCMl1dOyIKLSAgICAgICAgIiRTcGFjaW5n
TWFyayA9IFtbXFxwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9XSAtICRFeHRlbmRd
OyIKLSAgICAgICAgIiRMICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTH1d
OyIKLSAgICAgICAgIiRWICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gVn1d
OyIKLSAgICAgICAgIiRUICAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gVH1d
OyIKLSAgICAgICAgIiRMViAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZ9
XTsiCi0gICAgICAgICIkTFZUICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExW
VH1dOyIKLSAgICAgICAgIiRIaW4wICAgID0gW1xcdTA5MDUtXFx1MDkzOV07IiAgICAvLyBEZXZh
bmFnYXJpIExldHRlciBBLC4uLixIYQotICAgICAgICAiJEhpblYgICAgPSBcXHUwOTREOyIgICAg
ICAgICAgICAgIC8vIERldmFuYWdhcmkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRIaW4xICAgID0g
W1xcdTA5MTUtXFx1MDkzOV07IiAgICAvLyBEZXZhbmFnYXJpIExldHRlciBLYSwuLi4sSGEKLSAg
ICAgICAgIiRCZW4wICAgID0gW1xcdTA5ODUtXFx1MDlCOV07IiAgICAvLyBCZW5nYWxpIExldHRl
ciBBLC4uLixIYQotICAgICAgICAiJEJlblYgICAgPSBcXHUwOUNEOyIgICAgICAgICAgICAgIC8v
IEJlbmdhbGkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1MDlC
OV07IiAgICAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRQYW4wICAgID0g
W1xcdTBBMDUtXFx1MEEzOV07IiAgICAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAg
ICAgIiRQYW5WICAgID0gXFx1MEE0RDsiICAgICAgICAgICAgICAvLyBHdXJtdWtoaSBTaWduIFZp
cmFtYQotICAgICAgICAiJFBhbjEgICAgPSBbXFx1MEExNS1cXHUwQTM5XTsiICAgIC8vIEd1cm11
a2hpIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRHdWowICAgID0gW1xcdTBBODUtXFx1MEFC
OV07IiAgICAvLyBHdWphcmF0aSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRHdWpWICAgID0g
XFx1MEFDRDsiICAgICAgICAgICAgICAvLyBHdWphcmF0aSBTaWduIFZpcmFtYQotICAgICAgICAi
JEd1ajEgICAgPSBbXFx1MEE5NS1cXHUwQUI5XTsiICAgIC8vIEd1amFyYXRpIExldHRlciBLYSwu
Li4sSGEKLSAgICAgICAgIiRPcmkwICAgID0gW1xcdTBCMDUtXFx1MEIzOV07IiAgICAvLyBPcml5
YSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRPcmlWICAgID0gXFx1MEI0RDsiICAgICAgICAg
ICAgICAvLyBPcml5YSBTaWduIFZpcmFtYQotICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIxNS1c
XHUwQjM5XTsiICAgIC8vIE9yaXlhIExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRUZWwwICAg
ID0gW1xcdTBDMDUtXFx1MEMzOV07IiAgICAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCi0gICAg
ICAgICIkVGVsViAgICA9IFxcdTBDNEQ7IiAgICAgICAgICAgICAgLy8gVGVsdWd1IFNpZ24gVmly
YW1hCi0gICAgICAgICIkVGVsMSAgICA9IFtcXHUwQzE0LVxcdTBDMzldOyIgICAgLy8gVGVsdWd1
IExldHRlciBLYSwuLi4sSGEKLSAgICAgICAgIiRLYW4wICAgID0gW1xcdTBDODUtXFx1MENCOV07
IiAgICAvLyBLYW5uYWRhIExldHRlciBBLC4uLixIYQotICAgICAgICAiJEthblYgICAgPSBcXHUw
Q0NEOyIgICAgICAgICAgICAgIC8vIEthbm5hZGEgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRLYW4x
ICAgID0gW1xcdTBDOTUtXFx1MENCOV07IiAgICAvLyBLYW5uYWRhIExldHRlciBBLC4uLixIYQot
ICAgICAgICAiJE1hbDAgICAgPSBbXFx1MEQwNS1cXHUwRDM5XTsiICAgIC8vIE1hbGF5YWxhbSBM
ZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRNYWxWICAgID0gXFx1MEQ0RDsiICAgICAgICAgICAg
ICAvLyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKLSAgICAgICAgIiRNYWwxICAgID0gW1xcdTBEMTUt
XFx1MEQzOV07IiAgICAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkUkkg
ICAgICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRp
Y2F0b3JzCi0gICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7IiAgICAgICAgICAgICAgIC8vIFpl
cm8gd2lkdGggam9pbmVyCi0gICAgICAgICIkRW1vamlWYXIgPSBbXFx1RkUwRl07IiAgICAgICAg
ICAgIC8vIEVtb2ppLXN0eWxlIHZhcmlhdGlvbiBzZWxlY3RvcgotI2lmIEFERElUSU9OQUxfRU1P
SklfU1VQUE9SVAotICAgICAgICAiJEVtb2ppRm9yU2VxcyA9IFtcXHUyNzY0IFxcVTAwMDFGNDQx
IFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDhCIFxcVTAwMDFGNUU4XTsiIC8vIEVt
b2ppIHRoYXQgcGFydGljaXBhdGUgaW4gWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9y
TW9kcyA9IFtcXHUyNjFEIFxcdTI2RjkgXFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAw
MDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxc
VTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5
IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFG
NDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAw
MDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxc
VTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2
IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJp
Y2sgbW9kaWZpZXJzCi0jZWxzZQotICAgICAgICAiJEVtb2ppRm9yU2VxcyA9IFtcXHUyNzY0IFxc
VTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDhCXTsiIC8vIEVtb2ppIHRoYXQgcGFydGlj
aXBhdGUgaW4gWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFE
IFxcdTI3MEEtXFx1MjcwQyBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUw
MDAxRjNDNyBcXFUwMDAxRjNDQSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1c
XFUwMDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3
OCBcXFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAx
RjQ4NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUw
MDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBc
XFUwMDAxRjZDMF0gOyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycwot
I2VuZGlmCi0gICAgICAgICIkRW1vamlNb2RzID0gW1xcVTAwMDFGM0ZCLVxcVTAwMDFGM0ZGXTsi
IC8vIEZpdHpwYXRyaWNrIG1vZGlmaWVycwotICAgICAgICAiISFjaGFpbjsiCi0jaWYgQURESVRJ
T05BTF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIhIVJJTm9DaGFpbjsiCi0jZW5kaWYKLSAgICAg
ICAgIiEhZm9yd2FyZDsiCi0gICAgICAgICIkQ1IgJExGOyIKLSAgICAgICAgIiRMICgkTCB8ICRW
IHwgJExWIHwgJExWVCk7IgotICAgICAgICAiKCRMViB8ICRWKSAoJFYgfCAkVCk7IgotICAgICAg
ICAiKCRMVlQgfCAkVCkgJFQ7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICAg
ICAiJFJJICRSSSAkRXh0ZW5kKiAvICRSSTsiCi0gICAgICAgICIkUkkgJFJJICRFeHRlbmQqOyIK
LSAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJEV4dGVuZDsiCi0gICAgICAgICJbXiRDb250
cm9sICRDUiAkTEZdICRTcGFjaW5nTWFyazsiCi0jZWxzZQotICAgICAgICAiW14kQ29udHJvbCAk
Q1IgJExGXSAkRXh0ZW5kOyIKLSAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdN
YXJrOyIKLSAgICAgICAgIiRSSSAkUkkgLyAkUkk7IgotICAgICAgICAiJFJJICRSSTsiCi0jZW5k
aWYKLSAgICAgICAgIiRIaW4wICRIaW5WICRIaW4xOyIgICAgICAgICAgICAgICAvLyBEZXZhbmFn
YXJpIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRCZW4wICRCZW5WICRCZW4xOyIgICAgICAg
ICAgICAgICAvLyBCZW5nYWxpIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRQYW4wICRQYW5W
ICRQYW4xOyIgICAgICAgICAgICAgICAvLyBHdXJtdWtoaSBWaXJhbWEgKGZvcndhcmQpCi0gICAg
ICAgICIkR3VqMCAkR3VqViAkR3VqMTsiICAgICAgICAgICAgICAgLy8gR3VqYXJhdGkgVmlyYW1h
IChmb3J3YXJkKQotICAgICAgICAiJE9yaTAgJE9yaVYgJE9yaTE7IiAgICAgICAgICAgICAgIC8v
IE9yaXlhIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRUZWwwICRUZWxWICRUZWwxOyIgICAg
ICAgICAgICAgICAvLyBUZWx1Z3UgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJEthbjAgJEth
blYgJEthbjE7IiAgICAgICAgICAgICAgIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQotICAg
ICAgICAiJE1hbDAgJE1hbFYgJE1hbDE7IiAgICAgICAgICAgICAgIC8vIE1hbGF5YWxhbSBWaXJh
bWEgKGZvcndhcmQpCi0gICAgICAgICIkWldKICRFbW9qaUZvclNlcXM7IiAgICAgICAgICAgICAg
Ly8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppRm9y
TW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3ZWVuIHJlbGV2
YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5kIEZpdHpwYXRy
aWNrIG1vZGlmaWVyCi0gICAgICAgICIhIXJldmVyc2U7IgotICAgICAgICAiJExGICRDUjsiCi0g
ICAgICAgICIoJEwgfCAkViB8ICRMViB8ICRMVlQpICRMOyIKLSAgICAgICAgIigkViB8ICRUKSAo
JExWIHwgJFYpOyIKLSAgICAgICAgIiRUICgkTFZUIHwgJFQpOyIKLSNpZiBBRERJVElPTkFMX0VN
T0pJX1NVUFBPUlQKLSAgICAgICAgIiRFeHRlbmQqICRSSSAkUkkgLyAkRXh0ZW5kKiAkUkkgJFJJ
OyIKLSAgICAgICAgIiRFeHRlbmQqICRSSSAkUkk7IgotICAgICAgICAiJEV4dGVuZCAgICAgIFte
JENvbnRyb2wgJENSICRMRl07IgotICAgICAgICAiJFNwYWNpbmdNYXJrIFteJENvbnRyb2wgJENS
ICRMRl07IgotI2Vsc2UKLSAgICAgICAgIiRFeHRlbmQgICAgICBbXiRDb250cm9sICRDUiAkTEZd
OyIKLSAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9sICRDUiAkTEZdOyIKLSAgICAgICAg
IiRSSSAkUkkgLyAkUkkgJFJJOyIKLSAgICAgICAgIiRSSSAkUkk7IgotI2VuZGlmCi0gICAgICAg
ICIkSGluMSAkSGluViAkSGluMDsiICAgICAgICAgICAgICAgLy8gRGV2YW5hZ2FyaSBWaXJhbWEg
KGJhY2t3YXJkKQotICAgICAgICAiJEJlbjEgJEJlblYgJEJlbjA7IiAgICAgICAgICAgICAgIC8v
IEJlbmdhbGkgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRQYW4xICRQYW5WICRQYW4wOyIg
ICAgICAgICAgICAgICAvLyBHdXJtdWtoaSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJEd1
ajEgJEd1alYgJEd1ajA7IiAgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZpcmFtYSAoYmFja3dh
cmQpCi0gICAgICAgICIkT3JpMSAkT3JpViAkT3JpMDsiICAgICAgICAgICAgICAgLy8gR3VqYXJh
dGkgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRUZWwxICRUZWxWICRUZWwwOyIgICAgICAg
ICAgICAgICAvLyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRLYW4xICRLYW5W
ICRLYW4wOyIgICAgICAgICAgICAgICAvLyBLYW5uYWRhIFZpcmFtYSAoYmFja3dhcmQpCi0gICAg
ICAgICIkTWFsMSAkTWFsViAkTWFsMDsiICAgICAgICAgICAgICAgLy8gTWFsYXlhbGFtIFZpcmFt
YSAoYmFja3dhcmQpCi0gICAgICAgICIkRW1vamlGb3JTZXFzICRaV0o7IiAgICAgICAgICAgICAg
Ly8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNlcwotICAgICAgICAiJEVtb2ppTW9k
cyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IiAvLyBEb24ndCBicmVhayBiZXR3ZWVuIHJlbGV2
YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBzZWxlY3RvcikgYW5kIEZpdHpwYXRy
aWNrIG1vZGlmaWVyCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIhIXNh
ZmVfcmV2ZXJzZTsiCi0gICAgICAgICIkUkkgJFJJKzsiCi0gICAgICAgICJbJEVtb2ppVmFyICRF
bW9qaU1vZHNdKyAkRW1vamlGb3JNb2RzOyIKLSAgICAgICAgIiEhc2FmZV9mb3J3YXJkOyIKLSAg
ICAgICAgIiRSSSAkUkkrOyIKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9qaVZhciAkRW1v
amlNb2RzXSs7IjsKLSNlbHNlCi0gICAgICAgICJbJEVtb2ppVmFyICRFbW9qaU1vZHNdKyAkRW1v
amlGb3JNb2RzOyIKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgWyRFbW9qaVZhciAkRW1vamlNb2Rz
XSs7IgotICAgICAgICAiISFzYWZlX3JldmVyc2U7IgotICAgICAgICAiISFzYWZlX2ZvcndhcmQ7
IjsKLSNlbmRpZgotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92
ZW1lbnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyhrUnVsZXMpOwotI2Vs
c2UgLy8gUExBVEZPUk0oSU9TKQotICAgIC8vIFVzZSB0aGUgc3BlY2lhbCBUaGFpIGNoYXJhY3Rl
ciBicmVhayBpdGVyYXRvciBmb3IgYWxsIGxvY2FsZXMKLSAgICBzdGF0aWMgVGV4dEJyZWFrSXRl
cmF0b3IqIHN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3Io
VUJSS19DSEFSQUNURVIsICJ0aCIpOwotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0KLSAgICBp
ZiAoIXN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGljQ3Vyc29yTW92ZW1lbnRJ
dGVyYXRvciwgc3RyaW5nKTsKLX0KLQotVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJl
YWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUs
IGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCwg
TGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCi17Ci0gICAgVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yID0gTGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKCku
dGFrZShsb2NhbGUsIG1vZGUsIGlzQ0pLKTsKLSAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0
b3IoKml0ZXJhdG9yLCBzdHJpbmcsIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsK
LX0KLQotdm9pZCByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yKQotewotICAgIEFTU0VSVF9BUkcoaXRlcmF0b3IsIGl0ZXJhdG9yKTsKLQotICAgIExp
bmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnB1dChpdGVyYXRvcik7Ci19Ci0KLXN0
YXRpYyBjb25zdCBjaGFyKiB1YXgxNFByb2xvZ3VlID0KLSAgICAiISFjaGFpbjsiCi0gICAgIiEh
TEJDTU5vQ2hhaW47IgotICAgICIhIWxvb2tBaGVhZEhhcmRCcmVhazsiOwotCi1zdGF0aWMgY29u
c3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0JlZm9yZSA9Ci0gICAgLy8gZXhwbGljaXRseSBlbnVt
ZXJhdGUgJENKIHNpbmNlIElDVSB2ZXJzaW9ucyBwcmlvciB0byA0OSBkb24ndCBzdXBwb3J0IDpM
aW5lQnJlYWs9Q29uZGl0aW9uYWxfSmFwYW5lc2VfU3RhcnRlcjoKLSAgICAiJENKID0gWyIKLSNp
ZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlOT1Jf
TlVNID49IDkpCi0gICAgIjpMaW5lQnJlYWs9Q29uZGl0aW9uYWxfSmFwYW5lc2VfU3RhcnRlcjoi
Ci0jZWxzZQotICAgICJcXHUzMDQxXFx1MzA0M1xcdTMwNDVcXHUzMDQ3XFx1MzA0OVxcdTMwNjNc
XHUzMDgzXFx1MzA4NVxcdTMwODdcXHUzMDhFXFx1MzA5NVxcdTMwOTZcXHUzMEExXFx1MzBBM1xc
dTMwQTVcXHUzMEE3IgotICAgICJcXHUzMEE5XFx1MzBDM1xcdTMwRTNcXHUzMEU1XFx1MzBFN1xc
dTMwRUVcXHUzMEY1XFx1MzBGNlxcdTMwRkMiCi0gICAgIlxcdTMxRjBcXHUzMUYxXFx1MzFGMlxc
dTMxRjNcXHUzMUY0XFx1MzFGNVxcdTMxRjZcXHUzMUY3XFx1MzFGOFxcdTMxRjlcXHUzMUZBXFx1
MzFGQlxcdTMxRkNcXHUzMUZEXFx1MzFGRVxcdTMxRkYiCi0gICAgIlxcdUZGNjdcXHVGRjY4XFx1
RkY2OVxcdUZGNkFcXHVGRjZCXFx1RkY2Q1xcdUZGNkRcXHVGRjZFXFx1RkY2RlxcdUZGNzAiCi0j
ZW5kaWYKLSAgICAiXTsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1
c3RvbUxvb3NlQ0pLID0KLSAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAxM107IgotICAgICIk
RVhfU1VCID0gW1xcdTAwMjFcXHUwMDNGXFx1RkYwMVxcdUZGMUZdOyIKLSAgICAiJElEX1NVQiA9
ICcnOyIKLSAgICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1MjAyNl07IgotICAgICIkSVNfU1VCID0g
W1xcdTAwM0FcXHUwMDNCXTsiCi0gICAgIiROU19TVUIgPSBbXFx1MjAzQ1xcdTIwNDdcXHUyMDQ4
XFx1MjA0OVxcdTMwMDVcXHUzMDFDXFx1MzAzQlxcdTMwOURcXHUzMDlFXFx1MzBBMFxcdTMwRkJc
XHUzMEZEXFx1MzBGRVxcdUZGMUFcXHVGRjFCXFx1RkY2NV07IgotICAgICIkUE9fU1VCID0gW1xc
dTAwMjVcXHUwMEEyXFx1MDBCMFxcdTIwMzBcXHUyMDMyXFx1MjAzM1xcdTIxMDNcXHVGRjA1XFx1
RkZFMF07IgotICAgICIkUFJfU1VCID0gW1xcdTAwMjRcXHUwMEEzXFx1MDBBNVxcdTIwQUNcXHUy
MTE2XFx1RkYwNFxcdUZGRTFcXHVGRkU1XTsiCi0gICAgIiRJRF9BREQgPSBbJENKICRCQV9TVUIg
JEVYX1NVQiAkSU5fU1VCICRJU19TVUIgJE5TX1NVQiAkUE9fU1VCICRQUl9TVUJdOyIKLSAgICAi
JE5TX0FERCA9ICcnOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3Vz
dG9tTG9vc2VOb25DSksgPQotICAgICIkQkFfU1VCID0gJyc7IgotICAgICIkRVhfU1VCID0gJyc7
IgotICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSU5fU1VCID0gW1xcdTIwMjVcXHUyMDI2XTsi
Ci0gICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSBbXFx1MzAwNVxcdTMwM0JcXHUz
MDlEXFx1MzA5RVxcdTMwRkRcXHUzMEZFXTsiCi0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAgIiRQ
Ul9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSBbJENKICRJTl9TVUIgJE5TX1NVQl07IgotICAg
ICIkTlNfQUREID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHND
dXN0b21Ob3JtYWxDSksgPQotICAgICIkQkFfU1VCID0gW1xcdTIwMTBcXHUyMDEzXTsiCi0gICAg
IiRFWF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsi
Ci0gICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSBbXFx1MzAxQ1xcdTMwQTBdOyIK
LSAgICAiJFBPX1NVQiA9ICcnOyIKLSAgICAiJFBSX1NVQiA9ICcnOyIKLSAgICAiJElEX0FERCA9
IFskQ0ogJEJBX1NVQiAkTlNfU1VCXTsiCi0gICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMg
Y29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbE5vbkNKSyA9Ci0gICAgIiRC
QV9TVUIgPSAnJzsiCi0gICAgIiRFWF9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0g
ICAgIiRJTl9TVUIgPSAnJzsiCi0gICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSAn
JzsiCi0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9B
REQgPSBbJENKXTsiCi0gICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMgY29uc3QgY2hhciog
dWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSyA9Ci0gICAgIiRCQV9TVUIgPSAnJzsiCi0g
ICAgIiRFWF9TVUIgPSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSAn
JzsiCi0gICAgIiRJU19TVUIgPSAnJzsiCi0gICAgIiROU19TVUIgPSAnJzsiCi0gICAgIiRQT19T
VUIgPSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSAnJzsiCi0gICAg
IiROU19BREQgPSBbJENKXTsiOwotCi0jZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJp
Y3ROb25DSksgICAgICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Q0pLCi0jZGVmaW5lIHVh
eDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Q0pLICAgICAgICB1YXgxNEFzc2lnbm1lbnRzQ3Vz
dG9tTm9ybWFsQ0pLCi0jZGVmaW5lIHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pL
ICAgICB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLCi0KLXN0YXRpYyBjb25zdCBj
aGFyKiB1YXgxNEFzc2lnbm1lbnRzQWZ0ZXIgPQotICAgICIkQUkgPSBbOkxpbmVCcmVhayA9IEFt
YmlndW91czpdOyIKLSAgICAiJEFMID0gWzpMaW5lQnJlYWsgPSBBbHBoYWJldGljOl07IgotICAg
ICIkQkEgPSBbWzpMaW5lQnJlYWsgPSBCcmVha19BZnRlcjpdIC0gJEJBX1NVQl07IgotICAgICIk
QkIgPSBbOkxpbmVCcmVhayA9IEJyZWFrX0JlZm9yZTpdOyIKLSAgICAiJEJLID0gWzpMaW5lQnJl
YWsgPSBNYW5kYXRvcnlfQnJlYWs6XTsiCi0gICAgIiRCMiA9IFs6TGluZUJyZWFrID0gQnJlYWtf
Qm90aDpdOyIKLSAgICAiJENCID0gWzpMaW5lQnJlYWsgPSBDb250aW5nZW50X0JyZWFrOl07Igot
ICAgICIkQ0wgPSBbOkxpbmVCcmVhayA9IENsb3NlX1B1bmN0dWF0aW9uOl07IgotICAgICIkQ00g
PSBbOkxpbmVCcmVhayA9IENvbWJpbmluZ19NYXJrOl07IgotICAgICIkQ1AgPSBbOkxpbmVCcmVh
ayA9IENsb3NlX1BhcmVudGhlc2lzOl07IgotICAgICIkQ1IgPSBbOkxpbmVCcmVhayA9IENhcnJp
YWdlX1JldHVybjpdOyIKLSAgICAiJEVYID0gW1s6TGluZUJyZWFrID0gRXhjbGFtYXRpb246XSAt
ICRFWF9TVUJdOyIKLSAgICAiJEdMID0gWzpMaW5lQnJlYWsgPSBHbHVlOl07IgotI2lmIChVX0lD
VV9WRVJTSU9OX01BSk9SX05VTSA+PSA0KSAmJiAoVV9JQ1VfVkVSU0lPTl9NSU5PUl9OVU0gPj0g
OSkKLSAgICAiJEhMID0gWzpMaW5lQnJlYWsgPSBIZWJyZXdfTGV0dGVyOl07IgotI2Vsc2UKLSAg
ICAiJEhMID0gW1s6SGVicmV3Ol0gJiBbOkxldHRlcjpdXTsiCi0jZW5kaWYKLSAgICAiJEhZID0g
WzpMaW5lQnJlYWsgPSBIeXBoZW46XTsiCi0gICAgIiRIMiA9IFs6TGluZUJyZWFrID0gSDI6XTsi
Ci0gICAgIiRIMyA9IFs6TGluZUJyZWFrID0gSDM6XTsiCi0gICAgIiRJRCA9IFtbW1s6TGluZUJy
ZWFrID0gSWRlb2dyYXBoaWM6XSAtICRDSl0gJElEX0FERF0gLSAkSURfU1VCXTsiCi0gICAgIiRJ
TiA9IFtbOkxpbmVCcmVhayA9IEluc2VwYXJhYmxlOl0gLSAkSU5fU1VCXTsiCi0gICAgIiRJUyA9
IFtbOkxpbmVCcmVhayA9IEluZml4X051bWVyaWM6XSAtICRJU19TVUJdOyIKLSAgICAiJEpMID0g
WzpMaW5lQnJlYWsgPSBKTDpdOyIKLSAgICAiJEpWID0gWzpMaW5lQnJlYWsgPSBKVjpdOyIKLSAg
ICAiJEpUID0gWzpMaW5lQnJlYWsgPSBKVDpdOyIKLSAgICAiJExGID0gWzpMaW5lQnJlYWsgPSBM
aW5lX0ZlZWQ6XTsiCi0gICAgIiROTCA9IFs6TGluZUJyZWFrID0gTmV4dF9MaW5lOl07IgotICAg
ICIkTlMgPSBbW1tbOkxpbmVCcmVhayA9IE5vbnN0YXJ0ZXI6XSAtICRDSl0gJE5TX0FERF0gLSAk
TlNfU1VCXTsiCi0gICAgIiROVSA9IFs6TGluZUJyZWFrID0gTnVtZXJpYzpdOyIKLSAgICAiJE9Q
ID0gWzpMaW5lQnJlYWsgPSBPcGVuX1B1bmN0dWF0aW9uOl07IgotICAgICIkUE8gPSBbWzpMaW5l
QnJlYWsgPSBQb3N0Zml4X051bWVyaWM6XSAtICRQT19TVUJdOyIKLSAgICAiJFBSID0gW1s6TGlu
ZUJyZWFrID0gUHJlZml4X051bWVyaWM6XSAtICRQUl9TVUJdOyIKLSAgICAiJFFVID0gWzpMaW5l
QnJlYWsgPSBRdW90YXRpb246XTsiCi0gICAgIiRSSSA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFG
Rl07IgotICAgICIkU0EgPSBbOkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKLSAgICAi
JFNHID0gWzpMaW5lQnJlYWsgPSBTdXJyb2dhdGU6XTsiCi0gICAgIiRTUCA9IFs6TGluZUJyZWFr
ID0gU3BhY2U6XTsiCi0gICAgIiRTWSA9IFs6TGluZUJyZWFrID0gQnJlYWtfU3ltYm9sczpdOyIK
LSAgICAiJFdKID0gWzpMaW5lQnJlYWsgPSBXb3JkX0pvaW5lcjpdOyIKLSAgICAiJFhYID0gWzpM
aW5lQnJlYWsgPSBVbmtub3duOl07IgotICAgICIkWlcgPSBbOkxpbmVCcmVhayA9IFpXU3BhY2U6
XTsiCi0gICAgIiRaV0ogPSBcXHUyMDBEOyIKLSAgICAiJEVtb2ppVmFyID0gXFx1RkUwRjsiCi0j
aWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2
NCBcXFUwMDAxRjQ0MSBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4QiBcXFUwMDAx
RjVFOF07IgotICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBcXHUyNzBBLVxc
dTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQ0EgXFxV
MDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAg
XFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0
N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAw
MUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAwMUY1OTYgXFxV
MDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAwMUY2QTMg
XFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThdIDsiIC8vIEVt
b2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKLSNlbHNlCi0gICAgIiRFbW9qaUZv
clNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ4Ql07Igot
ICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFGMzg1
IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAwMDFG
NDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAw
MDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxc
VTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTk2
IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFG
NkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0aGF0
IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCi0jZW5kaWYKLSAgICAiJEVtb2ppTW9kcyA9IFtc
XFUwMDAxRjNGQi1cXFUwMDAxRjNGRl07IgotICAgICIkZGljdGlvbmFyeSA9IFs6TGluZUJyZWFr
ID0gQ29tcGxleF9Db250ZXh0Ol07IgotICAgICIkQUxQbHVzID0gWyRBTCAkQUkgJFNBICRTRyAk
WFhdOyIKLSAgICAiJEFMY20gPSAkQUxQbHVzICRDTSo7IgotICAgICIkQkFjbSA9ICRCQSAkQ00q
OyIKLSAgICAiJEJCY20gPSAkQkIgJENNKjsiCi0gICAgIiRCMmNtID0gJEIyICRDTSo7IgotICAg
ICIkQ0xjbSA9ICRDTCAkQ00qOyIKLSAgICAiJENQY20gPSAkQ1AgJENNKjsiCi0gICAgIiRFWGNt
ID0gJEVYICRDTSo7IgotICAgICIkR0xjbSA9ICRHTCAkQ00qOyIKLSAgICAiJEhMY20gPSAkSEwg
JENNKjsiCi0gICAgIiRIWWNtID0gJEhZICRDTSo7IgotICAgICIkSDJjbSA9ICRIMiAkQ00qOyIK
LSAgICAiJEgzY20gPSAkSDMgJENNKjsiCi0gICAgIiRJRGNtID0gJElEICRDTSo7IgotICAgICIk
SU5jbSA9ICRJTiAkQ00qOyIKLSAgICAiJElTY20gPSAkSVMgJENNKjsiCi0gICAgIiRKTGNtID0g
JEpMICRDTSo7IgotICAgICIkSlZjbSA9ICRKViAkQ00qOyIKLSAgICAiJEpUY20gPSAkSlQgJENN
KjsiCi0gICAgIiROU2NtID0gJE5TICRDTSo7IgotICAgICIkTlVjbSA9ICROVSAkQ00qOyIKLSAg
ICAiJE9QY20gPSAkT1AgJENNKjsiCi0gICAgIiRQT2NtID0gJFBPICRDTSo7IgotICAgICIkUFJj
bSA9ICRQUiAkQ00qOyIKLSAgICAiJFFVY20gPSAkUVUgJENNKjsiCi0gICAgIiRSSWNtID0gJFFV
ICRDTSo7IgotICAgICIkU1ljbSA9ICRTWSAkQ00qOyIKLSAgICAiJFdKY20gPSAkV0ogJENNKjsi
OwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRGb3J3YXJkID0KLSAgICAiISFmb3J3YXJkOyIK
LSAgICAiJENBTl9DTSA9IFteJFNQICRCSyAkQ1IgJExGICROTCAkWlcgJENNXTsiCi0gICAgIiRD
QU5UX0NNID0gWyRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07IgotICAgICIkQUxfRk9MTE9X
X05PQ00gPSBbJEJLICRDUiAkTEYgJE5MICRaVyAkU1BdOyIKLSAgICAiJEFMX0ZPTExPV19DTSA9
IFskQ0wgJENQICRFWCAkSEwgJElTICRTWSAkV0ogJEdMICRPUCAkUVUgJEJBICRIWSAkTlMgJElO
ICROVSAkQUxQbHVzXTsiCi0gICAgIiRBTF9GT0xMT1cgPSBbJEFMX0ZPTExPV19OT0NNICRBTF9G
T0xMT1dfQ01dOyIKLSAgICAiJExCNEJyZWFrcyA9IFskQksgJENSICRMRiAkTkxdOyIKLSAgICAi
JExCNE5vbkJyZWFrcyA9IFteJEJLICRDUiAkTEYgJE5MXTsiCi0gICAgIiRMQjhCcmVha3MgPSBb
JExCNEJyZWFrcyAkWlddOyIKLSAgICAiJExCOE5vbkJyZWFrcyA9IFtbJExCNE5vbkJyZWFrc10g
LSBbJFpXXV07IgotICAgICIkTEIxOE5vbkJyZWFrcyA9IFskTEI4Tm9uQnJlYWtzIC0gWyRTUF1d
OyIKLSAgICAiJExCMThCcmVha3MgPSBbJExCOEJyZWFrcyAkU1BdOyIKLSAgICAiJExCMjBOb25C
cmVha3MgPSBbJExCMThOb25CcmVha3MgLSAkQ0JdOyIKLSAgICAiJEFMUGx1cyAkQ00rOyIKLSAg
ICAiJEJBICRDTSs7IgotICAgICIkQkIgJENNKzsiCi0gICAgIiRCMiAkQ00rOyIKLSAgICAiJENM
ICRDTSs7IgotICAgICIkQ1AgJENNKzsiCi0gICAgIiRFWCAkQ00rOyIKLSAgICAiJEdMICRDTSs7
IgotICAgICIkSEwgJENNKzsiCi0gICAgIiRIWSAkQ00rOyIKLSAgICAiJEgyICRDTSs7IgotICAg
ICIkSDMgJENNKzsiCi0gICAgIiRJRCAkQ00rOyIKLSAgICAiJElOICRDTSs7IgotICAgICIkSVMg
JENNKzsiCi0gICAgIiRKTCAkQ00rOyIKLSAgICAiJEpWICRDTSs7IgotICAgICIkSlQgJENNKzsi
Ci0gICAgIiROUyAkQ00rOyIKLSAgICAiJE5VICRDTSs7IgotICAgICIkT1AgJENNKzsiCi0gICAg
IiRQTyAkQ00rOyIKLSAgICAiJFBSICRDTSs7IgotICAgICIkUVUgJENNKzsiCi0gICAgIiRTWSAk
Q00rOyIKLSAgICAiJFdKICRDTSs7IgotICAgICIkQ1IgJExGIHsxMDB9OyIKLSAgICAiJExCNE5v
bkJyZWFrcz8gJExCNEJyZWFrcyB7MTAwfTsiCi0gICAgIiRDQU5fQ00gJENNKiAkTEI0QnJlYWtz
IHsxMDB9OyIKLSAgICAiJENNKyAkTEI0QnJlYWtzIHsxMDB9OyIKLSAgICAiJExCNE5vbkJyZWFr
cyBbJFNQICRaV107IgotICAgICIkQ0FOX0NNICRDTSogWyRTUCAkWlddOyIKLSAgICAiJENNKyBb
JFNQICRaV107IgotICAgICIkRW1vamlGb3JTZXFzICRFbW9qaVZhcj8gJEVtb2ppTW9kcz8gJFpX
SiAkRW1vamlGb3JTZXFzOyIKLSAgICAiJENBTl9DTSAkQ00rOyIKLSAgICAiJENNKzsiCi0gICAg
IiRDQU5fQ00gJENNKiAkV0pjbTsiCi0gICAgIiRMQjhOb25CcmVha3MgJFdKY207IgotICAgICIk
Q00rICRXSmNtOyIKLSAgICAiJFdKY20gJENBTlRfQ007IgotICAgICIkV0pjbSAkQ0FOX0NNICRD
TSo7IgotICAgICIkR0xjbSAkQ0FOX0NNICRDTSo7IgotICAgICIkR0xjbSAkQ0FOVF9DTTsiCi0g
ICAgIltbJExCOE5vbkJyZWFrc10gLSBbJFNQICRCQSAkSFldXSAkQ00qICRHTGNtOyIKLSAgICAi
JENNKyBHTGNtOyIKLSAgICAiJExCOE5vbkJyZWFrcyAkQ0w7IgotICAgICIkQ0FOX0NNICRDTSog
JENMOyIKLSAgICAiJENNKyAkQ0w7IgotICAgICIkTEI4Tm9uQnJlYWtzICRDUDsiCi0gICAgIiRD
QU5fQ00gJENNKiAkQ1A7IgotICAgICIkQ00rICRDUDsiCi0gICAgIiRMQjhOb25CcmVha3MgJEVY
OyIKLSAgICAiJENBTl9DTSAkQ00qICRFWDsiCi0gICAgIiRDTSsgJEVYOyIKLSAgICAiJExCOE5v
bkJyZWFrcyAkSVM7IgotICAgICIkQ0FOX0NNICRDTSogJElTOyIKLSAgICAiJENNKyAkSVM7Igot
ICAgICIkTEI4Tm9uQnJlYWtzICRTWTsiCi0gICAgIiRDQU5fQ00gJENNKiAkU1k7IgotICAgICIk
Q00rICRTWTsiCi0gICAgIiRPUGNtICRTUCogJENBTl9DTSAkQ00qOyIKLSAgICAiJE9QY20gJFNQ
KiAkQ0FOVF9DTTsiCi0gICAgIiRPUGNtICRTUCsgJENNKyAkQUxfRk9MTE9XPzsiCi0gICAgIiRR
VWNtICRTUCogJE9QY207IgotICAgICIoJENMY20gfCAkQ1BjbSkgJFNQKiAkTlNjbTsiCi0gICAg
IiRCMmNtICRTUCogJEIyY207IgotICAgICIkTEIxOE5vbkJyZWFrcyAkQ00qICRRVWNtOyIKLSAg
ICAiJENNKyAkUVVjbTsiCi0gICAgIiRRVWNtIC4/OyIKLSAgICAiJFFVY20gJExCMThOb25CcmVh
a3MgJENNKjsiCi0gICAgIiRMQjIwTm9uQnJlYWtzICRDTSogKCRCQWNtIHwgJEhZY20gfCAkTlNj
bSk7ICIKLSAgICAiJEJCY20gW14kQ0JdOyIKLSAgICAiJEJCY20gJExCMjBOb25CcmVha3MgJENN
KjsiCi0gICAgIiRITGNtICgkSFljbSB8ICRCQWNtKSBbXiRDQl0/OyIKLSAgICAiKCRBTGNtIHwg
JEhMY20pICRJTmNtOyIKLSAgICAiJENNKyAkSU5jbTsiCi0gICAgIiRJRGNtICRJTmNtOyIKLSAg
ICAiJElOY20gJElOY207IgotICAgICIkTlVjbSAkSU5jbTsiCi0gICAgIiRJRGNtICRQT2NtOyIK
LSAgICAiJEFMY20gJE5VY207IgotICAgICIkSExjbSAkTlVjbTsiCi0gICAgIiRDTSsgJE5VY207
IgotICAgICIkTlVjbSAkQUxjbTsiCi0gICAgIiROVWNtICRITGNtOyIKLSAgICAiJFBSY20gJElE
Y207IgotICAgICIkUFJjbSAoJEFMY20gfCAkSExjbSk7IgotICAgICIkUE9jbSAoJEFMY20gfCAk
SExjbSk7IgotICAgICIoJFBSY20gfCAkUE9jbSk/ICgkT1BjbSB8ICRIWWNtKT8gJE5VY20gKCRO
VWNtIHwgJFNZY20gfCAkSVNjbSkqICgkQ0xjbSB8ICRDUGNtKT8gKCRQUmNtIHwgJFBPY20pPzsi
Ci0gICAgIiRKTGNtICgkSkxjbSB8ICRKVmNtIHwgJEgyY20gfCAkSDNjbSk7IgotICAgICIoJEpW
Y20gfCAkSDJjbSkgKCRKVmNtIHwgJEpUY20pOyIKLSAgICAiKCRKVGNtIHwgJEgzY20pICRKVGNt
OyIKLSAgICAiKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pICRJTmNtOyIK
LSAgICAiKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pICRQT2NtOyIKLSAg
ICAiJFBSY20gKCRKTGNtIHwgJEpWY20gfCAkSlRjbSB8ICRIMmNtIHwgJEgzY20pOyIKLSAgICAi
KCRBTGNtIHwgJEhMY20pICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIiRDTSsgKCRBTGNtIHwgJEhM
Y20pOyIKLSAgICAiJElTY20gKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiKCRBTGNtIHwgJEhMY20g
fCAkTlVjbSkgJE9QY207IgotICAgICIkQ00rICRPUGNtOyIKLSAgICAiJENQY20gKCRBTGNtIHwg
JEhMY20gfCAkTlVjbSk7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkUklj
bSAkUkljbTsiCi0jZW5kaWYKLSAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1v
ZHM7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0UmV2ZXJzZSA9Ci0gICAgIiEhcmV2ZXJz
ZTsiCi0gICAgIiRDTSsgJEFMUGx1czsiCi0gICAgIiRDTSsgJEJBOyIKLSAgICAiJENNKyAkQkI7
IgotICAgICIkQ00rICRCMjsiCi0gICAgIiRDTSsgJENMOyIKLSAgICAiJENNKyAkQ1A7IgotICAg
ICIkQ00rICRFWDsiCi0gICAgIiRDTSsgJEdMOyIKLSAgICAiJENNKyAkSEw7IgotICAgICIkQ00r
ICRIWTsiCi0gICAgIiRDTSsgJEgyOyIKLSAgICAiJENNKyAkSDM7IgotICAgICIkQ00rICRJRDsi
Ci0gICAgIiRDTSsgJElOOyIKLSAgICAiJENNKyAkSVM7IgotICAgICIkQ00rICRKTDsiCi0gICAg
IiRDTSsgJEpWOyIKLSAgICAiJENNKyAkSlQ7IgotICAgICIkQ00rICROUzsiCi0gICAgIiRDTSsg
JE5VOyIKLSAgICAiJENNKyAkT1A7IgotICAgICIkQ00rICRQTzsiCi0gICAgIiRDTSsgJFBSOyIK
LSAgICAiJENNKyAkUVU7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkQ00r
ICRSSTsiCi0jZW5kaWYKLSAgICAiJENNKyAkU1k7IgotICAgICIkQ00rICRXSjsiCi0gICAgIiRD
TSs7IgotICAgICIkQUxfRk9MTE9XICRDTSsgLyAoWyRCSyAkQ1IgJExGICROTCAkWlcge2VvZn1d
IHwgJFNQKyAkQ00rICRTUCB8ICRTUCsgJENNKiAoW14kT1AgJENNICRTUF0gfCBbJEFMIHtlb2Z9
XSkpOyIKLSAgICAiWyRQUl0gLyAkQ00rIFskQksgJENSICRMRiAkTkwgJFpXICRTUCB7ZW9mfV07
IgotICAgICIkTEI0QnJlYWtzIFskTEI0Tm9uQnJlYWtzLSRDTV07IgotICAgICIkTEI0QnJlYWtz
ICRDTSsgJENBTl9DTTsiCi0gICAgIiRMRiAkQ1I7IgotICAgICJbJFNQICRaV10gWyRMQjROb25C
cmVha3MtJENNXTsiCi0gICAgIlskU1AgJFpXXSAkQ00rICRDQU5fQ007IgotICAgICIkRW1vamlG
b3JTZXFzICRaV0ogJEVtb2ppTW9kcz8gJEVtb2ppVmFyPyAkRW1vamlGb3JTZXFzOyIKLSAgICAi
JENNKyAkQ0FOX0NNOyIKLSAgICAiJENNKiAkV0ogJENNKiAkQ0FOX0NNOyIKLSAgICAiJENNKiAk
V0ogWyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAgIiRDQU5UX0NNICRDTSogJFdKOyIKLSAgICAi
JENNKiAkQ0FOX0NNICRDTSogJFdKOyIKLSAgICAiJENNKiAkR0wgJENNKiBbJExCOE5vbkJyZWFr
cy1bJENNICRTUCAkQkEgJEhZXV07IgotICAgICIkQ0FOVF9DTSAkQ00qICRHTDsiCi0gICAgIiRD
TSogJENBTl9DTSAkQ00qICRHTDsiCi0gICAgIiRDTCAkQ00rICRDQU5fQ007IgotICAgICIkQ1Ag
JENNKyAkQ0FOX0NNOyIKLSAgICAiJEVYICRDTSsgJENBTl9DTTsiCi0gICAgIiRJUyAkQ00rICRD
QU5fQ007IgotICAgICIkU1kgJENNKyAkQ0FOX0NNOyIKLSAgICAiJENMIFskTEI4Tm9uQnJlYWtz
LSRDTV07IgotICAgICIkQ1AgWyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAgIiRFWCBbJExCOE5v
bkJyZWFrcy0kQ01dOyIKLSAgICAiJElTIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIkU1kg
WyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAgIlskQ0wgJENQICRFWCAkSVMgJFNZXSAkQ00rICRT
UCsgJENNKiAkT1A7ICIKLSAgICAiJENNKiAkQ0FOX0NNICRTUCogJENNKiAkT1A7IgotICAgICIk
Q0FOVF9DTSAkU1AqICRDTSogJE9QOyIKLSAgICAiJEFMX0ZPTExPVz8gJENNKyAkU1AgJFNQKiAk
Q00qICRPUDsiCi0gICAgIiRBTF9GT0xMT1dfTk9DTSAkQ00rICRTUCsgJENNKiAkT1A7IgotICAg
ICIkQ00qICRBTF9GT0xMT1dfQ00gJENNKyAkU1ArICRDTSogJE9QOyIKLSAgICAiJFNZICRDTSAk
U1ArICRPUDsiCi0gICAgIiRDTSogJE9QICRTUCogJENNKiAkUVU7IgotICAgICIkQ00qICROUyAk
U1AqICRDTSogKCRDTCB8ICRDUCk7IgotICAgICIkQ00qICRCMiAkU1AqICRDTSogJEIyOyIKLSAg
ICAiJENNKiAkUVUgJENNKiAkQ0FOX0NNOyIKLSAgICAiJENNKiAkUVUgJExCMThOb25CcmVha3M7
IgotICAgICIkQ00qICRDQU5fQ00gJENNKiAkUVU7IgotICAgICIkQ0FOVF9DTSAkQ00qICRRVTsi
Ci0gICAgIiRDTSogKCRCQSB8ICRIWSB8ICROUykgJENNKiBbJExCMjBOb25CcmVha3MtJENNXTsi
Ci0gICAgIiRDTSogWyRMQjIwTm9uQnJlYWtzLSRDTV0gJENNKiAkQkI7IgotICAgICJbXiRDQl0g
JENNKiAkQkI7IgotICAgICJbXiRDQl0gJENNKiAoJEhZIHwgJEJBKSAkQ00qICRITDsiCi0gICAg
IiRDTSogJElOICRDTSogKCRBTFBsdXMgfCAkSEwpOyIKLSAgICAiJENNKiAkSU4gJENNKiAkSUQ7
IgotICAgICIkQ00qICRJTiAkQ00qICRJTjsiCi0gICAgIiRDTSogJElOICRDTSogJE5VOyIKLSAg
ICAiJENNKiAkUE8gJENNKiAkSUQ7IgotICAgICIkQ00qICROVSAkQ00qICgkQUxQbHVzIHwgJEhM
KTsiCi0gICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSogJE5VOyIKLSAgICAiJENNKiAkSUQg
JENNKiAkUFI7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQUjsiCi0gICAgIiRD
TSogKCRBTFBsdXMgfCAkSEwpICRDTSogJFBPOyIKLSAgICAiKCRDTSogKCRQUiB8ICRQTykpPyAo
JENNKiAoJENMIHwgJENQKSk/ICgkQ00qICgkTlUgfCAkSVMgfCAkU1kpKSogJENNKiAkTlUgKCRD
TSogKCRPUCB8ICRIWSkpPyAoJENNKiAoJFBSIHwgJFBPKSk/OyIKLSAgICAiJENNKiAoJEgzIHwg
JEgyIHwgJEpWIHwgJEpMKSAkQ00qICRKTDsiCi0gICAgIiRDTSogKCRKVCB8ICRKVikgJENNKiAo
JEgyIHwgJEpWKTsiCi0gICAgIiRDTSogJEpUICRDTSogKCRIMyB8ICRKVCk7IgotICAgICIkQ00q
ICRJTiAkQ00qICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpOyIKLSAgICAiJENNKiAkUE8g
JENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCi0gICAgIiRDTSogKCRIMyB8ICRI
MiB8ICRKVCB8ICRKViB8ICRKTCkgJENNKiAkUFI7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhM
KSAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCi0gICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSog
JElTOyIKLSAgICAiJENNKiAkT1AgJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSk7IgotICAgICIk
Q00qICgkQUxQbHVzIHwgJEhMIHwgJE5VKSAkQ00qICRDUDsiCi0jaWYgQURESVRJT05BTF9FTU9K
SV9TVVBQT1JUCi0gICAgIiRDTSogJFJJICRDTSogJFJJOyIKLSNlbmRpZgotICAgICIkRW1vamlN
b2RzICRFbW9qaVZhcj8gJEVtb2ppRm9yTW9kczsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4
MTRTYWZlRm9yd2FyZCA9Ci0gICAgIiEhc2FmZV9mb3J3YXJkOyIKLSAgICAiWyRDTSAkT1AgJFFV
ICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRTUCAkZGljdGlvbmFyeV0rIFteJENNICRPUCAkUVUg
JENMICRDUCAkQjIgJFBSICRIWSAkQkEgJGRpY3Rpb25hcnldOyIKLSAgICAiJGRpY3Rpb25hcnkg
JGRpY3Rpb25hcnk7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0U2FmZVJldmVyc2UgPQot
ICAgICIhIXNhZmVfcmV2ZXJzZTsiCi0gICAgIiRDTSsgW14kQ00gJEJLICRDUiAkTEYgJE5MICRa
VyAkU1BdOyIKLSAgICAiJENNKyAkU1AgLyAuOyIKLSAgICAiJFNQKyAkQ00qICRPUDsiCi0gICAg
IiRTUCsgJENNKiAkUVU7IgotICAgICIkU1ArICRDTSogKCRDTCB8ICRDUCk7IgotICAgICIkU1Ar
ICRDTSogJEIyOyIKLSAgICAiJENNKiAoJEhZIHwgJEJBKSAkQ00qICRITDsiCi0gICAgIigkQ00q
ICgkSVMgfCAkU1kpKSsgJENNKiAkTlU7IgotICAgICIoJENMIHwgJENQKSAkQ00qICgkTlUgfCAk
SVMgfCAkU1kpOyIKLSAgICAiJGRpY3Rpb25hcnkgJGRpY3Rpb25hcnk7IjsKLQotc3RhdGljIFN0
cmluZyBtYXBMaW5lSXRlcmF0b3JNb2RlVG9SdWxlcyhMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9k
ZSwgYm9vbCBpc0NKSykKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHJ1bGVzQnVpbGRlcjsKLSAgICBy
dWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0UHJvbG9ndWUpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBl
bmQodWF4MTRBc3NpZ25tZW50c0JlZm9yZSk7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2Fz
ZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNDoKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Q0pLIDogdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbURlZmF1bHROb25DSkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVC
cmVha0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2U6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQo
aXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTG9vc2VDSksgOiB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tTG9vc2VOb25DSkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0
ZXJhdG9yTW9kZVVBWDE0Tm9ybWFsOgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pL
ID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0
b21Ob3JtYWxOb25DSkspOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0U3RyaWN0OgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8g
dWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21T
dHJpY3ROb25DSkspOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcnVsZXNCdWlsZGVyLmFw
cGVuZCh1YXgxNEFzc2lnbm1lbnRzQWZ0ZXIpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4
MTRGb3J3YXJkKTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0UmV2ZXJzZSk7Ci0gICAg
cnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVGb3J3YXJkKTsKLSAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKHVheDE0U2FmZVJldmVyc2UpOwotICAgIHJldHVybiBydWxlc0J1aWxkZXIudG9TdHJp
bmcoKTsKLX0KLQotLy8gUmVjb2duaXplIEJDUDQ3IGNvbXBsaWFudCBwcmltYXJ5IGxhbmd1YWdl
IHZhbHVlcyBvZiAnemgnLCAnamEnLCAna28nCi0vLyAoaW4gYW55IGNvbWJpbmF0aW9uIG9mIGNh
c2UpLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IHN1YnRhZ3MuIERvbid0Ci0vLyByZWNvZ25pemUg
My1sZXR0ZXIgdmFyaWFudHMgJ2NoaScvJ3pobycsICdqcG4nLCBvciAna29yJyBzaW5jZSBCQ1A0
NwotLy8gcmVxdWlyZXMgdXNlIG9mIHNob3J0ZXN0IGxhbmd1YWdlIHRhZy4KLWJvb2wgaXNDSktM
b2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpCi17Ci0gICAgc2l6ZV90IGxlbmd0aCA9
IGxvY2FsZS5sZW5ndGgoKTsKLSAgICBpZiAobGVuZ3RoIDwgMikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGF1dG8gYzEgPSBsb2NhbGVbMF07Ci0gICAgYXV0byBjMiA9IGxvY2FsZVsxXTsK
LSAgICBhdXRvIGMzID0gbGVuZ3RoID09IDIgPyAwIDogbG9jYWxlWzJdOwotICAgIGlmICghYzMg
fHwgYzMgPT0gJy0nIHx8IGMzID09ICdfJyB8fCBjMyA9PSAnQCcpIHsKLSAgICAgICAgaWYgKGMx
ID09ICd6JyB8fCBjMSA9PSAnWicpCi0gICAgICAgICAgICByZXR1cm4gYzIgPT0gJ2gnIHx8IGMy
ID09ICdIJzsKLSAgICAgICAgaWYgKGMxID09ICdqJyB8fCBjMSA9PSAnSicpCi0gICAgICAgICAg
ICByZXR1cm4gYzIgPT0gJ2EnIHx8IGMyID09ICdBJzsKLSAgICAgICAgaWYgKGMxID09ICdrJyB8
fCBjMSA9PSAnSycpCi0gICAgICAgICAgICByZXR1cm4gYzIgPT0gJ28nIHx8IGMyID09ICdPJzsK
LSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1UZXh0QnJlYWtJdGVyYXRvciogb3Blbkxp
bmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVy
YXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKLXsKLSAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0
ZXI7Ci0gICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGJvb2wg
bG9jYWxlSXNFbXB0eSA9IGxvY2FsZS5pc0VtcHR5KCk7Ci0gICAgaWYgKG1vZGUgPT0gTGluZUJy
ZWFrSXRlcmF0b3JNb2RlVUFYMTQpCi0gICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktf
TElORSwgbG9jYWxlSXNFbXB0eSA/IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpIDogbG9jYWxl
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7Ci0gICAgICAgIGF1dG8gcnVsZXMgPSBt
YXBMaW5lSXRlcmF0b3JNb2RlVG9SdWxlcyhtb2RlLCBpc0NKSyk7Ci0gICAgICAgIHVicmtJdGVy
ID0gdWJya19vcGVuUnVsZXMoU3RyaW5nVmlldyhydWxlcykudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCksIHJ1bGVzLmxlbmd0aCgpLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZvcGVuU3RhdHVzKTsKLSAg
ICB9Ci0gICAgLy8gbG9jYWxlIGNvbWVzIGZyb20gYSB3ZWIgcGFnZSBhbmQgaXQgY2FuIGJlIGlu
dmFsaWQsIGxlYWRpbmcgSUNVCi0gICAgLy8gdG8gZmFpbCwgaW4gd2hpY2ggY2FzZSB3ZSBmYWxs
IGJhY2sgdG8gdGhlIGRlZmF1bHQgbG9jYWxlLgotICAgIGlmICghbG9jYWxlSXNFbXB0eSAmJiBV
X0ZBSUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAgICAgb3BlblN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICAgICAgdWJya0l0ZXIgPSB1YnJrX29wZW4oVUJSS19MSU5FLCBjdXJyZW50VGV4dEJy
ZWFrTG9jYWxlSUQoKSwgMCwgMCwgJm9wZW5TdGF0dXMpOwotICAgIH0KLQotICAgIGlmIChVX0ZB
SUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX29wZW4gZmFpbGVk
IHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4o
dWJya0l0ZXIpOwotfQotCi12b2lkIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRl
cmF0b3IqJiBpdGVyYXRvcikKLXsKLSAgICBVQnJlYWtJdGVyYXRvciogdWJya0l0ZXIgPSByZWlu
dGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpOwotICAgIEFTU0VSVCh1YnJr
SXRlcik7Ci0gICAgdWJya19jbG9zZSh1YnJrSXRlcik7Ci0gICAgaXRlcmF0b3IgPSBudWxscHRy
OwotfQotCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIG5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqIGV4cGVjdGVkLCBUZXh0QnJl
YWtJdGVyYXRvciogbmV3VmFsdWUpCi17Ci0gICAgcmV0dXJuIFdURjo6d2Vha0NvbXBhcmVBbmRT
d2FwKCZub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yLCBleHBlY3RlZCwgbmV3VmFsdWUp
OwotfQotCi1Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIG1faXRlcmF0b3IgPSBu
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOwotCi0gICAgYm9vbCBjcmVhdGVkSXRlcmF0
b3IgPSBtX2l0ZXJhdG9yICYmIGNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcihtX2l0ZXJhdG9yLCAwKTsKLSAgICBpZiAoIWNyZWF0ZWRJdGVyYXRvcikKLSAgICAg
ICAgbV9pdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUik7Ci0gICAg
aWYgKCFtX2l0ZXJhdG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2l0ZXJhdG9yID0gc2V0
VGV4dEZvckl0ZXJhdG9yKCptX2l0ZXJhdG9yLCBzdHJpbmcpOwotfQotCi1Ob25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpCi17
Ci0gICAgaWYgKCFjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Io
MCwgbV9pdGVyYXRvcikpCi0gICAgICAgIHVicmtfY2xvc2UocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KG1faXRlcmF0b3IpKTsKLX0KLQotCi0vLyBJdGVyYXRvciBpbXBsZW1lbmF0
aW9uLgotCi1pbnQgdGV4dEJyZWFrRmlyc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQot
ewotICAgIHJldHVybiB1YnJrX2ZpcnN0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3Iq
PihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrTGFzdChUZXh0QnJlYWtJdGVyYXRvciog
aXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfbGFzdChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVha05leHQoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiB1YnJrX25leHQocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtQcmV2
aW91cyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJl
dmlvdXMocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0K
LWludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQg
cG9zKQotewotICAgIHJldHVybiB1YnJrX3ByZWNlZGluZyhyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrRm9sbG93aW5n
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICByZXR1cm4gdWJy
a19mb2xsb3dpbmcocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwg
cG9zKTsKLX0KLQotaW50IHRleHRCcmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJh
dG9yKQotewotICAgIHJldHVybiB1YnJrX2N1cnJlbnQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJ
dGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRl
cmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zaXRpb24pCi17Ci0gICAgcmV0dXJuIHVicmtfaXNCb3Vu
ZGFyeShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpLCBwb3NpdGlv
bik7Ci19Ci0KLWJvb2wgaXNXb3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKLXsKLSAgICBpbnQgcnVsZVN0YXR1cyA9IHVicmtfZ2V0UnVsZVN0YXR1cyhyZWludGVycHJl
dF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLSAgICByZXR1cm4gcnVsZVN0YXR1
cyAhPSBVQlJLX1dPUkRfTk9ORTsKLX0KLQotdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyhj
b25zdCBTdHJpbmcmIHMpCi17Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgo
KTsKLSAgICAKLSAgICBpZiAoIXN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICAvLyBUaGUgb25seSBMYXRpbi0xIEV4dGVuZGVkIEdyYXBoZW1lIENsdXN0ZXIgaXMgQ1IgTEYK
LSAgICBpZiAocy5pczhCaXQoKSAmJiAhcy5jb250YWlucygnXHInKSkKLSAgICAgICAgcmV0dXJu
IHN0cmluZ0xlbmd0aDsKLQotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQo
cyk7Ci0gICAgaWYgKCFpdCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKLQotICAgIHVu
c2lnbmVkIG51bSA9IDA7Ci0gICAgd2hpbGUgKHRleHRCcmVha05leHQoaXQpICE9IFRleHRCcmVh
a0RvbmUpCi0gICAgICAgICsrbnVtOwotICAgIHJldHVybiBudW07Ci19Ci0KLXVuc2lnbmVkIG51
bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYgcywgdW5zaWdu
ZWQgbnVtR3JhcGhlbWVDbHVzdGVycykKLXsKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBz
Lmxlbmd0aCgpOwotCi0gICAgaWYgKCFzdHJpbmdMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENS
IExGCi0gICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1pbihzdHJpbmdMZW5ndGgsIG51bUdyYXBoZW1lQ2x1c3RlcnMpOwotCi0gICAg
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChzKTsKLSAgICBpZiAoIWl0KQotICAg
ICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsK
LQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HcmFwaGVtZUNsdXN0ZXJzOyArK2kp
IHsKLSAgICAgICAgaWYgKHRleHRCcmVha05leHQoaXQpID09IFRleHRCcmVha0RvbmUpCi0gICAg
ICAgICAgICByZXR1cm4gc3RyaW5nTGVuZ3RoOwotICAgIH0KLSAgICByZXR1cm4gdGV4dEJyZWFr
Q3VycmVudChpdCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmExYzIzNTBiNDc2N2Q2Y2UxYzM0ZGUyYzM0YzIyZDQzNTIyYzU4ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwyMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBMYXJzIEtub2xsIDxsYXJz
QHRyb2xsdGVjaC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvcl9o
Ci0jZGVmaW5lIFRleHRCcmVha0l0ZXJhdG9yX2gKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBUZXh0QnJlYWtJdGVyYXRvcjsKLQotLy8gTm90ZTogVGhlIHJl
dHVybmVkIGl0ZXJhdG9yIGlzIGdvb2Qgb25seSB1bnRpbCB5b3UgZ2V0IGFub3RoZXIgaXRlcmF0
b3IsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IuCi0KLWVu
dW0gTGluZUJyZWFrSXRlcmF0b3JNb2RlIHsKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgx
NCwKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlLAotICAgIExpbmVCcmVha0l0
ZXJhdG9yTW9kZVVBWDE0Tm9ybWFsLAotICAgIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0U3Ry
aWN0LAotfTsKLQotLy8gVGhpcyBpcyBzaW1pbGFyIHRvIGNoYXJhY3RlciBicmVhayBpdGVyYXRv
ciBpbiBtb3N0IGNhc2VzLCBidXQgaXMgc3ViamVjdCB0bwotLy8gcGxhdGZvcm0gVUkgY29udmVu
dGlvbnMuIE9uZSBub3RhYmxlIGV4YW1wbGUgd2hlcmUgdGhpcyBjYW4gYmUgZGlmZmVyZW50Ci0v
LyBmcm9tIGNoYXJhY3RlciBicmVhayBpdGVyYXRvciBpcyBUaGFpIHByZXBlbmQgY2hhcmFjdGVy
cywgc2VlIGJ1ZyAyNDM0Mi4KLS8vIFVzZSB0aGlzIGZvciBpbnNlcnRpb24gcG9pbnQgYW5kIHNl
bGVjdGlvbiBtYW5pcHVsYXRpb25zLgotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyk7Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVy
YXRvcihTdHJpbmdWaWV3KTsKLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0
b3IoU3RyaW5nVmlldyk7Ci0KLVdFQkNPUkVfRVhQT1JUIFRleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bGUsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCwgTGluZUJyZWFrSXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLVdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7Ci1UZXh0QnJl
YWtJdGVyYXRvciogb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwotdm9pZCBjbG9zZUxpbmVC
cmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiYpOwotCi1pbnQgdGV4dEJyZWFrRmlyc3Qo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJhdG9y
Kik7Ci1pbnQgdGV4dEJyZWFrTmV4dChUZXh0QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVh
a1ByZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKik7Ci1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0
QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRv
ciosIGludCk7Ci1XRUJDT1JFX0VYUE9SVCBpbnQgdGV4dEJyZWFrRm9sbG93aW5nKFRleHRCcmVh
a0l0ZXJhdG9yKiwgaW50KTsKLWJvb2wgaXNUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqLCBp
bnQpOwotYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLQotY29uc3Qg
aW50IFRleHRCcmVha0RvbmUgPSAtMTsKLQotV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NKS0xvY2Fs
ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLQotY2xhc3MgTGF6eUxpbmVCcmVha0l0ZXJhdG9yIHsK
LXB1YmxpYzoKLSAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoKQotICAgICAgICA6IG1faXRlcmF0
b3IobnVsbHB0cikKLSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQotICAg
ICAgICAsIG1fbW9kZShMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgLCBtX2Nh
Y2hlZFByaW9yQ29udGV4dExlbmd0aCgwKQotICAgICAgICAsIG1faXNDSksoZmFsc2UpCi0gICAg
ewotICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOwotICAgIH0KLQotICAgIExhenlMaW5lQnJl
YWtJdGVyYXRvcihTdHJpbmcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSA9IEF0
b21pY1N0cmluZygpLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSA9IExpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0KQotICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKLSAgICAgICAgLCBtX2xv
Y2FsZShsb2NhbGUpCi0gICAgICAgICwgbV9pdGVyYXRvcihudWxscHRyKQotICAgICAgICAsIG1f
Y2FjaGVkUHJpb3JDb250ZXh0KG51bGxwdHIpCi0gICAgICAgICwgbV9tb2RlKG1vZGUpCi0gICAg
ICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKLSAgICB7Ci0gICAgICAgIHJlc2V0
UHJpb3JDb250ZXh0KCk7Ci0gICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOwot
ICAgIH0KLQotICAgIH5MYXp5TGluZUJyZWFrSXRlcmF0b3IoKQotICAgIHsKLSAgICAgICAgaWYg
KG1faXRlcmF0b3IpCi0gICAgICAgICAgICByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IobV9pdGVy
YXRvcik7Ci0gICAgfQotCi0gICAgU3RyaW5nIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9Ci0gICAgYm9vbCBpc0xvb3NlQ0pLTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDSksg
JiYgbV9tb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2U7IH0KLQotICAgIFVD
aGFyIGxhc3RDaGFyYWN0ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3Jf
dW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBtX3ByaW9y
Q29udGV4dFsxXTsKLSAgICB9Ci0KLSAgICBVQ2hhciBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIoKSBj
b25zdAotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3By
aW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250
ZXh0X2xlbmd0aCk7Ci0gICAgICAgIHJldHVybiBtX3ByaW9yQ29udGV4dFswXTsKLSAgICB9Ci0K
LSAgICB2b2lkIHNldFByaW9yQ29udGV4dChVQ2hhciBsYXN0LCBVQ2hhciBzZWNvbmRUb0xhc3Qp
Ci0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JD
b250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRf
bGVuZ3RoKTsKLSAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSBzZWNvbmRUb0xhc3Q7Ci0gICAg
ICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsKLSAgICB9Ci0KLSAgICB2b2lkIHVwZGF0ZVBy
aW9yQ29udGV4dChVQ2hhciBsYXN0KQotICAgIHsKLSAgICAgICAgQ09NUElMRV9BU1NFUlQoV1RG
X0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3JfdW5l
eHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzBd
ID0gbV9wcmlvckNvbnRleHRbMV07Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gbGFzdDsK
LSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0UHJpb3JDb250ZXh0KCkKLSAgICB7Ci0gICAgICAgIENP
TVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRC
cmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICBt
X3ByaW9yQ29udGV4dFswXSA9IDA7Ci0gICAgICAgIG1fcHJpb3JDb250ZXh0WzFdID0gMDsKLSAg
ICB9Ci0KLSAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoID0gMDsKLSAgICAgICAgQ09NUElMRV9B
U1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRl
cmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIGlmIChtX3By
aW9yQ29udGV4dFsxXSkgewotICAgICAgICAgICAgKytwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAg
ICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMF0pCi0gICAgICAgICAgICAgICAgKytwcmlvckNv
bnRleHRMZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHByaW9yQ29udGV4dExlbmd0
aDsKLSAgICB9Ci0KLSAgICAvLyBPYnRhaW4gdGV4dCBicmVhayBpdGVyYXRvciwgcG9zc2libHkg
cHJldmlvdXNseSBjYWNoZWQsIHdoZXJlIHRoaXMgaXRlcmF0b3IgaXMgKG9yIGhhcyBiZWVuKQot
ICAgIC8vIGluaXRpYWxpemVkIHRvIHVzZSB0aGUgcHJldmlvdXNseSBzdG9yZWQgc3RyaW5nIGFz
IHRoZSBwcmltYXJ5IGJyZWFraW5nIGNvbnRleHQgYW5kIHVzaW5nCi0gICAgLy8gcHJldmlvdXNs
eSBzdG9yZWQgcHJpb3IgY29udGV4dCBpZiBub24tZW1wdHkuCi0gICAgVGV4dEJyZWFrSXRlcmF0
b3IqIGdldCh1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgpCi0gICAgewotICAgICAgICBBU1NF
UlQocHJpb3JDb250ZXh0TGVuZ3RoIDw9IHByaW9yQ29udGV4dENhcGFjaXR5KTsKLSAgICAgICAg
Y29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dExlbmd0aCA/ICZtX3ByaW9y
Q29udGV4dFtwcmlvckNvbnRleHRDYXBhY2l0eSAtIHByaW9yQ29udGV4dExlbmd0aF0gOiAwOwot
ICAgICAgICBpZiAoIW1faXRlcmF0b3IpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IobV9zdHJpbmcsIG1fbG9jYWxlLCBwcmlvckNvbnRleHQsIHBy
aW9yQ29udGV4dExlbmd0aCwgbV9tb2RlLCBtX2lzQ0pLKTsKLSAgICAgICAgICAgIG1fY2FjaGVk
UHJpb3JDb250ZXh0ID0gcHJpb3JDb250ZXh0OwotICAgICAgICAgICAgbV9jYWNoZWRQcmlvckNv
bnRleHRMZW5ndGggPSBwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJp
b3JDb250ZXh0ICE9IG1fY2FjaGVkUHJpb3JDb250ZXh0IHx8IHByaW9yQ29udGV4dExlbmd0aCAh
PSBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCkgewotICAgICAgICAgICAgcmVzZXRTdHJpbmdB
bmRSZWxlYXNlSXRlcmF0b3IobV9zdHJpbmcsIG1fbG9jYWxlLCBtX21vZGUpOwotICAgICAgICAg
ICAgcmV0dXJuIHRoaXMtPmdldChwcmlvckNvbnRleHRMZW5ndGgpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBtX2l0ZXJhdG9yOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXRTdHJpbmdBbmRS
ZWxlYXNlSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUs
IExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQotICAgIHsKLSAgICAgICAgaWYgKG1faXRlcmF0
b3IpCi0gICAgICAgICAgICByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IobV9pdGVyYXRvcik7Ci0g
ICAgICAgIG1fc3RyaW5nID0gc3RyaW5nOwotICAgICAgICBtX2xvY2FsZSA9IGxvY2FsZTsKLSAg
ICAgICAgbV9pdGVyYXRvciA9IG51bGxwdHI7Ci0gICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0
ID0gbnVsbHB0cjsKLSAgICAgICAgbV9tb2RlID0gbW9kZTsKLSAgICAgICAgbV9pc0NKSyA9IGlz
Q0pLTG9jYWxlKGxvY2FsZSk7Ci0gICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0g
MDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByaW9yQ29u
dGV4dENhcGFjaXR5ID0gMjsKLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgQXRvbWljU3RyaW5n
IG1fbG9jYWxlOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9yOwotICAgIGNvbnN0
IFVDaGFyKiBtX2NhY2hlZFByaW9yQ29udGV4dDsKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGUg
bV9tb2RlOwotICAgIHVuc2lnbmVkIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoOwotICAgIFVD
aGFyIG1fcHJpb3JDb250ZXh0W3ByaW9yQ29udGV4dENhcGFjaXR5XTsKLSAgICBib29sIG1faXND
Sks7Ci19OwotCi0vLyBJdGVyYXRlcyBvdmVyICJleHRlbmRlZCBncmFwaGVtZSBjbHVzdGVycyIs
IGFzIGRlZmluZWQgaW4gVUFYICMyOS4KLS8vIE5vdGUgdGhhdCBwbGF0Zm9ybSBpbXBsZW1lbnRh
dGlvbnMgbWF5IGJlIGxlc3Mgc29waGlzdGljYXRlZCAtIGUuZy4gSUNVIHByaW9yIHRvCi0vLyB2
ZXJzaW9uIDQuMCBvbmx5IHN1cHBvcnRzICJsZWdhY3kgZ3JhcGhlbWUgY2x1c3RlcnMiLgotLy8g
VXNlIHRoaXMgZm9yIGdlbmVyYWwgdGV4dCBwcm9jZXNzaW5nLCBlLmcuIHN0cmluZyB0cnVuY2F0
aW9uLgotCi1jbGFzcyBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIHsKLSAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKTsKLXB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0
cmluZ1ZpZXcpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yKCk7Ci0KLSAgICBvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXJhdG9yOyB9Ci0KLXByaXZhdGU6Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1f
aXRlcmF0b3I7Ci19OwotCi0vLyBDb3VudHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVy
cy4gQSBzdXJyb2dhdGUgcGFpciBvciBhIHNlcXVlbmNlCi0vLyBvZiBhIG5vbi1jb21iaW5pbmcg
Y2hhcmFjdGVyIGFuZCBmb2xsb3dpbmcgY29tYmluaW5nIGNoYXJhY3RlcnMgaXMKLS8vIGNvdW50
ZWQgYXMgMSBncmFwaGVtZSBjbHVzdGVyLgotdW5zaWduZWQgbnVtR3JhcGhlbWVDbHVzdGVycyhj
b25zdCBTdHJpbmcmKTsKLS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdoaWNo
IHdpbGwgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCi0vLyB0aGUgc3BlY2lmaWVkIGdyYXBoZW1l
IGNsdXN0ZXIgbGVuZ3RoLgotdW5zaWduZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVy
cyhjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQpOwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhiNzAwM2MzNWZkMjFl
YTZhYTIxOTkzNWU3YTI4OTlhMjY1YWQ3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVX2gKLSNkZWZpbmUgVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVV9oCi0KLS8vIEZJWE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMg
bG9jYWxlcyBmb3IgSUNVLCBub3QganVzdCBmb3IgdGV4dCBicmVha2luZywKLS8vIHRoaXMgZmls
ZSBhbmQgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRpb24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQu
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hM
b2NhbGVJRCgpOwotICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwot
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9j
Zi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlw
aGVuYXRpb25DRi5jcHAKaW5kZXggOWUzNDNjMDI5MTc1ZGVlNTRhMzU0ZDdkNTI4MjYzYjk0MGU0
N2JkMS4uYzQwZTYyMjczZTAzNDgyYzUxZGUzZGQxOWUxMjQ2ODIyMTcyNTE1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCkBAIC0y
NywxMyArMjcsMTMgQEAKICNpbmNsdWRlICJIeXBoZW5hdGlvbi5oIgogCiAjaW5jbHVkZSAiTGFu
Z3VhZ2UuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PgogY2xh
c3MgVGlueUxSVUNhY2hlUG9saWN5PEF0b21pY1N0cmluZywgUmV0YWluUHRyPENGTG9jYWxlUmVm
Pj4KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gQ0YgaHlwaGVu
YXRpb24gZnVuY3Rpb25zIHVzZSBsb2NhbGUgKHJlZ2lvbmFsIGZvcm1hdHMpIGxhbmd1YWdlLCB3
aGljaCBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1hdGNoIHByaW1hcnkgVUkgbGFuZ3VhZ2UsCiAgICAg
ICAgIC8vIHNvIHdlIGNhbid0IHVzZSBkZWZhdWx0IGxvY2FsZSBoZXJlLiBTZWUgPHJkYXI6Ly9w
cm9ibGVtLzE0ODk3NjY0Pi4KLSAgICAgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUg
PSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRlZmF1bHRMYW5n
dWFnZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgUmV0YWluUHRyPENGTG9j
YWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIFdlYkNvcmU6OmRlZmF1bHRMYW5ndWFnZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsK
ICAgICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShs
b2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CiAKQEAgLTY1LDYgKzY1LDkg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxl
Rm9yTG9jYWxlKGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiBudWxscHRyOwogICAgIH0KIH07Cit9
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBjYW5IeXBoZW5hdGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVRWZsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA1Njg2OWYxNDVkZDc2
ODFkZmViYjY4ODg5NWJjMTk1NTFlMTNiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJl
YWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkK
LXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAi
IjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAgICBy
ZXR1cm4gImVuX3VzIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcAppbmRleCA0N2Y1NmYw
OGIzNTQ4MmNhZTA2NGQ0ZmIxOTQyY2FlNWM4YWIwNzIwLi40MTFjODA2MTRlMjY3Y2ZjNTExZmZh
ZGIwYTk1MzYxYzgxYjU0OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcApAQCAtMjQsNyArMjQs
NyBAQAogCiAjaW5jbHVkZSA8TGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVk
ZSA8dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNWEw
NWZhNDkxOTVmYjMwYmY2OWRlZDU2MmQ1NDNiOGI2MTAxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0
ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRv
a2VyLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyKiBjdXJy
ZW50U2VhcmNoTG9jYWxlSUQoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBs
b2NhbGUuCi0gICAgcmV0dXJuICIiOwotfQotCi1jb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFr
TG9jYWxlSUQoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCi0g
ICAgcmV0dXJuICJlbl91cyI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGZkYWVlODFlNjA3ZTY3NTQzYmY2N2ZlODY1MzJhYjUzNWJmN2IyYzAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVUZXh0UHJv
dmlkZXIuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LS8vIFJlbG9jYXRlIHBvaW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbiBhcyByZXF1
aXJlZC4KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0IFVUZXh0KiBzb3VyY2Us
IFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIpCi17Ci0gICAgaWYgKHBv
aW50ZXIgPj0gc291cmNlLT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRpY19jYXN0PGNoYXIqPihz
b3VyY2UtPnBFeHRyYSkgKyBzb3VyY2UtPmV4dHJhU2l6ZSkgewotICAgICAgICAvLyBQb2ludGVy
IHJlZmVyZW5jZXMgc291cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHN0YXRp
Y19jYXN0PGNoYXIqPihkZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4ocG9pbnRlcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLT5wRXh0cmEp
KTsKLSAgICB9IGVsc2UgaWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBvaW50ZXIgPCByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5zaXplT2ZTdHJ1Y3QpIHsK
LSAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0cnVjdHVyZSwgYnV0
IG5vdCBzb3VyY2UgZXh0cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oZGVzdGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2lu
dGVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkpOwotICAgIH0KLX0K
LQotVVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQq
IHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIEFTU0VSVF9V
TlVTRUQoZGVlcCwgIWRlZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGludDMyX3QgZXh0cmFTaXplID0gc291cmNlLT5leHRyYVNp
emU7Ci0gICAgZGVzdGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgZXh0cmFTaXpl
LCBzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiBk
ZXN0aW5hdGlvbjsKLSAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7Ci0g
ICAgaW50MzJfdCBmbGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAgICBpbnQgc2l6ZVRvQ29w
eSA9IHN0ZDo6bWluKHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlvbi0+c2l6ZU9mU3Ry
dWN0KTsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRvQ29weSk7Ci0gICAg
ZGVzdGluYXRpb24tPnBFeHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3RpbmF0aW9uLT5mbGFncyA9
IGZsYWdzOwotICAgIG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3VyY2UtPnBFeHRyYSwg
ZXh0cmFTaXplKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0
aW9uLT5jb250ZXh0KTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uLT5wKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0
aW9uLT5xKTsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAgICBjb25zdCB2b2lkKiBj
aHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRlc3RpbmF0aW9uLT5jaHVu
a0NvbnRlbnRzKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNodW5rQ29u
dGVudHMpOwotICAgIGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVUNoYXIqPihjaHVua0NvbnRlbnRzKTsKLSAgICByZXR1cm4gZGVzdGluYXRpb247Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1
NGZjNGM3Y2UyMzU5NDQyYzY3ZmFiZjE4YjVlZjZhYjFjNDNhNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgVVRleHRQcm92aWRlcl9oCi0jZGVmaW5lIFVUZXh0UHJvdmlkZXJf
aAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWVudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgewotICAgIE5vQ29udGV4dCwKLSAgICBQ
cmlvckNvbnRleHQsCi0gICAgUHJpbWFyeUNvbnRleHQKLX07Ci0KLWlubGluZSBVVGV4dFByb3Zp
ZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCogdGV4dCwgaW50NjRf
dCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmIgfHwgbmF0
aXZlSW5kZXggPiB0ZXh0LT5iKQotICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6
OlByaW1hcnlDb250ZXh0OwotICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0LT5iKQotICAgICAg
ICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6
IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci0gICAgcmV0dXJuIFVUZXh0UHJv
dmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci19Ci0KLWlubGluZSB2b2lkIGluaXRpYWxpemVD
b250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25zdCBVVGV4dEZ1bmNzKiBm
dW5jcywgY29uc3Qgdm9pZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAgdGV4dC0+cEZ1bmNz
ID0gZnVuY3M7Ci0gICAgdGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8PCBVVEVYVF9QUk9W
SURFUl9TVEFCTEVfQ0hVTktTOwotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAgdGV4
dC0+cCA9IHN0cmluZzsKLSAgICB0ZXh0LT5hID0gbGVuZ3RoOwotICAgIHRleHQtPnEgPSBwcmlv
ckNvbnRleHQ7Ci0gICAgdGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsKLX0KLQotLy8gU2hh
cmVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgVVRleHRDbG9uZSBmdW5jdGlvbiBvbiBVVGV4dEZ1
bmNzLgotCi1VVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBV
VGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwotCi0KLS8vIEhl
bHBlcnMgZm9yIHRoZSBVVGV4dEFjY2VzcyBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgotCi1pbmxp
bmUgaW50NjRfdCB1VGV4dEFjY2Vzc1BpbkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2NF90IGxp
bWl0KQotewotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0gMDsKLSAgICBlbHNl
IGlmIChpbmRleCA+IGxpbWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0OwotICAgIHJldHVybiBp
bmRleDsKLX0KLQotaW5saW5lIGJvb2wgdVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKFVU
ZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJv
b2wgZm9yd2FyZCwgVUJvb2wmIGlzQWNjZXNzaWJsZSkKLXsKLSAgICBpZiAoZm9yd2FyZCkgewot
ICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRp
dmVJbmRleCA8IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAgICAgICAgIGludDY0X3Qg
b2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgICAgICAg
ICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZz
ZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAgICAgICAgIHRleHQtPmNo
dW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkg
PyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAgICAgICAgIGlzQWNjZXNz
aWJsZSA9IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAobmF0aXZlSW5kZXggPj0gbmF0aXZlTGVuZ3RoICYmIHRleHQtPmNodW5rTmF0aXZlTGlt
aXQgPT0gbmF0aXZlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IHRl
eHQtPmNodW5rTGVuZ3RoOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChuYXRpdmVJbmRleCA+IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPD0g
dGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkgewotICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBu
YXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAgICAgICAvLyBFbnN1
cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRz
IGludDMyX3QgcmFuZ2UuCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19j
YXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJV
RTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChuYXRp
dmVJbmRleCA8PSAwICYmICF0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICB0
ZXh0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92
aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VU
ZXh0UHJvdmlkZXJMYXRpbjEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDY4
NTJjNzFlNTVlZjk3Y2EwYjBiYTFjZmY4ODBiOTk3MGY3M2M1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzk0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92
aWRlckxhdGluMS5oIgotCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBMYXRpbjEg
cHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiwgY29uc3Qg
VVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFO
YXRpdmVMZW5ndGgoVVRleHQqKTsKLXN0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4
dCosIGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChV
VGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSopOwot
c3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4dCop
Owotc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3Qg
VVRleHQqLCBpbnQ2NF90KTsKLXN0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ2xvc2UoVVRleHQqKTsK
LQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHVUZXh0TGF0aW4xRnVuY3MgPSB7Ci0g
ICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAwLAotICAgIHVUZXh0
TGF0aW4xQ2xvbmUsCi0gICAgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRMYXRp
bjFBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVs
bHB0ciwKLSAgICB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlLAotICAgIHVUZXh0TGF0aW4x
TWFwTmF0aXZlSW5kZXhUb1VURjE2LAotICAgIHVUZXh0TGF0aW4xQ2xvc2UsCi0gICAgbnVsbHB0
ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIKLX07Ci0KLXN0YXRpYyBVVGV4dCogdVRleHRM
YXRpbjFDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29s
IGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFk
ZWVwKTsKLQotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgVVRleHQqIHJlc3VsdCA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBzaXplb2YoVUNo
YXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHksIHN0YXR1cyk7Ci0gICAgaWYgKFVf
RkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwotICAgIAotICAg
IHJlc3VsdC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gc291cmNlLT5wcm92aWRlclByb3BlcnRpZXM7
Ci0gICAgCi0gICAgLy8gUG9pbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24sIGJ1dCB3aXRoIGFuIGVt
cHR5IGJ1ZmZlci4KLSAgICByZXN1bHQtPmNodW5rTmF0aXZlU3RhcnQgPSBzb3VyY2UtPmNodW5r
TmF0aXZlU3RhcnQ7Ci0gICAgcmVzdWx0LT5jaHVua05hdGl2ZUxpbWl0ID0gc291cmNlLT5jaHVu
a05hdGl2ZVN0YXJ0OwotICAgIHJlc3VsdC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFydCk7Ci0gICAgcmVzdWx0LT5jaHVu
a09mZnNldCA9IDA7Ci0gICAgcmVzdWx0LT5jb250ZXh0ID0gc291cmNlLT5jb250ZXh0OwotICAg
IHJlc3VsdC0+YSA9IHNvdXJjZS0+YTsKLSAgICByZXN1bHQtPnBGdW5jcyA9ICZ1VGV4dExhdGlu
MUZ1bmNzOwotICAgIHJlc3VsdC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciopcmVzdWx0LT5wRXh0
cmE7Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPihyZXN1bHQtPmNodW5rQ29udGVudHMp
LCAwLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVM
ZW5ndGgoVVRleHQqIHVUZXh0KQotewotICAgIHJldHVybiB1VGV4dC0+YTsKLX0KLQotc3RhdGlj
IFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50NjRfdCBpbmRleCwgVUJv
b2wgZm9yd2FyZCkKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotCi0gICAgaWYg
KGZvcndhcmQpIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdVRleHQtPmNodW5rTmF0aXZlTGltaXQg
JiYgaW5kZXggPj0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAgICAgICAgICAgIC8vIEFs
cmVhZHkgaW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KLSAgICAgICAgICAg
IHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQt
PmNodW5rTmF0aXZlU3RhcnQpOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCAmJiB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9
PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIE9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIGJ1
dCB3ZSBjYW4ndCBnZXQgaXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0
aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAgICAg
ICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChpbmRleCA8PSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRleCA+IHVUZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGluc2lkZSB0aGUgYnVmZmVy
LiBTZXQgdGhlIG5ldyBvZmZzZXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAg
ICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICB9Ci0gICAgICAgIGlmICghaW5kZXggJiYg
IXVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGF0IHRo
ZSBiZWdpbm5pbmc7IGNhbid0IGdvIGFueSBmYXJ0aGVyLgotICAgICAgICAgICAgdVRleHQtPmNo
dW5rT2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAg
IH0KLSAgICAKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVT
dGFydCA9IGluZGV4OwotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHVUZXh0LT5j
aHVua05hdGl2ZVN0YXJ0ICsgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7Ci0gICAgICAg
IGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKLSAgICAgICAgICAgIHVUZXh0
LT5jaHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOwotCi0gICAgICAgIHVUZXh0LT5jaHVua09mZnNl
dCA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBp
bmRleDsKLSAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQotICAg
ICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7Ci0KLSAgICAgICAgdVRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgPSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIFVUZXh0V2l0
aEJ1ZmZlcklubGluZUNhcGFjaXR5OwotICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlU3Rh
cnQgPCAwKQotICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotCi0gICAg
ICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRl
eHQtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgIH0KLSAgICB1VGV4dC0+Y2h1bmtMZW5ndGggPSBz
dGF0aWNfY2FzdDxpbnQzMl90Pih1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHVUZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0KTsKLQotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVD
aGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVU
ZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7Ci0KLSAgICB1VGV4dC0+bmF0aXZlSW5kZXhpbmdM
aW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKLQotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0
aWMgaW50MzJfdCB1VGV4dExhdGluMUV4dHJhY3QoVVRleHQqIHVUZXh0LCBpbnQ2NF90IHN0YXJ0
LCBpbnQ2NF90IGxpbWl0LCBVQ2hhciogZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksIFVFcnJv
ckNvZGUqIHN0YXR1cykKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRlc3RD
YXBhY2l0eSA8IDAgfHwgKCFkZXN0ICYmIGRlc3RDYXBhY2l0eSA+IDApKSB7Ci0gICAgICAgICpz
dGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBsaW1pdCB8fCAobGltaXQgLSBzdGFy
dCkgPiBJTlQzMl9NQVgpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSU5ERVhfT1VUT0ZCT1VORFNf
RVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdGFydCA+IGxlbmd0
aCkKLSAgICAgICAgc3RhcnQgPSBsZW5ndGg7Ci0gICAgaWYgKGxpbWl0ID4gbGVuZ3RoKQotICAg
ICAgICBsaW1pdCA9IGxlbmd0aDsKLQotICAgIGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7Ci0gICAg
Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRlc3RDYXBh
Y2l0eSA+IDAgJiYgIWRlc3QpIHsKLSAgICAgICAgaW50MzJfdCB0cmltbWVkTGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKLSAgICAgICAgaWYgKHRyaW1tZWRMZW5ndGggPiBk
ZXN0Q2FwYWNpdHkpCi0gICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0gZGVzdENhcGFjaXR5Owot
Ci0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0aWNfY2FzdDxjb25zdCBM
Q2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHJp
bW1lZExlbmd0aCkpOwotICAgIH0KLQotICAgIGlmIChsZW5ndGggPCBkZXN0Q2FwYWNpdHkpIHsK
LSAgICAgICAgZGVzdFtsZW5ndGhdID0gMDsKLSAgICAgICAgaWYgKCpzdGF0dXMgPT0gVV9TVFJJ
TkdfTk9UX1RFUk1JTkFURURfV0FSTklORykKLSAgICAgICAgICAgICpzdGF0dXMgPSBVX1pFUk9f
RVJST1I7Ci0gICAgfSBlbHNlIGlmIChsZW5ndGggPT0gZGVzdENhcGFjaXR5KQotICAgICAgICAq
c3RhdHVzID0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsKLSAgICBlbHNlCi0gICAg
ICAgICpzdGF0dXMgPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKLQotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOwotfQotCi1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGlu
MU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0KiB1VGV4dCkKLXsKLSAgICByZXR1cm4gdVRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgKyB1VGV4dC0+Y2h1bmtPZmZzZXQ7Ci19Ci0KLXN0YXRpYyBp
bnQzMl90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0IFVUZXh0KiB1VGV4
dCwgaW50NjRfdCBuYXRpdmVJbmRleCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHVUZXh0LCB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA+PSBuYXRpdmVJbmRleCk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1
VGV4dCwgbmF0aXZlSW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludDMyX3Q+KG5hdGl2ZUluZGV4KTsKLX0KLQotc3RhdGljIHZvaWQgdVRl
eHRMYXRpbjFDbG9zZShVVGV4dCogdVRleHQpCi17Ci0gICAgdVRleHQtPmNvbnRleHQgPSBudWxs
cHRyOwotfQotCi1VVGV4dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVy
KiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVy
cm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAg
ICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZl
ci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBpZiAo
VV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAg
dGV4dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5wRnVuY3MgPSAmdVRleHRMYXRpbjFGdW5jczsK
LSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKil0ZXh0LT5wRXh0cmE7Ci0gICAgbWVt
c2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgMCwgc2l6ZW9mKFVD
aGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKLQotICAgIHJldHVybiB0ZXh0
OwotfQotCi0KLS8vIExhdGluMUNvbnRleHRBd2FyZSBwcm92aWRlcgotCi1zdGF0aWMgVVRleHQq
IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29s
LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5h
dGl2ZUxlbmd0aChVVGV4dCopOwotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJl
QWNjZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOwotc3RhdGljIGludDMyX3QgdVRleHRMYXRp
bjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBp
bnQzMl90LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRBd2Fy
ZUNsb3NlKFVUZXh0Kik7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0TGF0
aW4xQ29udGV4dEF3YXJlRnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAs
Ci0gICAgMCwKLSAgICAwLAotICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUsCi0gICAg
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRMYXRpbjFDb250
ZXh0QXdhcmVBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0LAotICAg
IG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAg
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIs
Ci0gICAgbnVsbHB0cgotfTsKLQotc3RhdGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0
ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQp
Ci17Ci0gICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICByZXR1cm4gVVRleHRQ
cm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dDsKLSAgICByZXR1cm4gdGV4dC0+Y2h1bmtDb250ZW50
cyA9PSB0ZXh0LT5wRXh0cmEgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQg
OiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OwotfQotCi1zdGF0aWMgdm9pZCB0
ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQot
ewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7Ci0gICAg
aWYgKGZvcndhcmQpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID49IHRleHQtPmIgJiYg
bmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0
YXJ0ID0gbmF0aXZlSW5kZXg7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRp
dmVJbmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIGlmICh0
ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVuZ3RoKQotICAgICAgICAgICAgdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICB9IGVsc2UgewotICAgICAgICBB
U1NFUlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0
aCk7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleDsKLSAgICAg
ICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+ZXh0cmFTaXpl
IC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPCB0
ZXh0LT5iKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7Ci0g
ICAgfQotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQt
PmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRl
ZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAgICBBU1NF
UlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgIHRl
eHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKLSAgICB0ZXh0LT5uYXRp
dmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgdGV4dC0+Y2h1bmtPZmZz
ZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19j
YXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRl
eHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKLX0KLQot
c3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQo
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBV
Qm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0
LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBz
dGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0gICAgdGV4dExhdGluMUNv
bnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
TW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1
bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4
IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVTRUQo
bmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRp
dmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9y
d2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZl
TGVuZ3RoKTsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5jaHVu
a05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7
Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAg
IGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0Owot
ICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9m
ZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+
Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVu
a0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hU
b1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBu
YXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVua0Nv
bnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKLSAgICB0ZXh0
LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKLSAg
ICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgVVRleHQqIHVUZXh0TGF0
aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291
cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0
Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRp
YyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0
KQotewotICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVU
ZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUlu
ZGV4LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+Y29udGV4dCkKLSAgICAgICAg
cmV0dXJuIEZBTFNFOwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRMYXRpbjFDb250
ZXh0QXdhcmVOYXRpdmVMZW5ndGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwotICAg
IGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5h
dGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuIGlzQWNj
ZXNzaWJsZTsKLSAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5k
ZXgsIG5hdGl2ZUxlbmd0aCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRl
eHQgPSB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAg
VVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJy
ZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRl
ckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dExhdGluMUNvbnRleHRB
d2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3
YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZv
cndhcmQpOwotICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6UHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hU
b1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVy
Q29udGV4dDo6UHJpb3JDb250ZXh0KTsKLSAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3
aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndh
cmQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGludDMyX3QgdVRleHRM
YXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIq
LCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAgLy8gSW4gdGhlIHByZXNl
bnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5j
dGlvbnMKLSAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVE
X0VSUk9SOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRl
eHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRy
OwotfQotCi1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRX
aXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwg
VUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAgICAg
KnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwg
c2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlMVVJF
KCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKHRleHQsICZ0
ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQs
IHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlk
NWQyODRiZWMwYTgxYjNmODdhYWM2ODNiNDhlMzQ4MGU1MjRlOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKLSNkZWZpbmUgVVRl
eHRQcm92aWRlckxhdGluMV9oCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvTENoYXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBpbnQg
VVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkgPSAxNjsKLQotc3RydWN0IFVUZXh0V2l0aEJ1
ZmZlciB7Ci0gICAgVVRleHQgdGV4dDsKLSAgICBVQ2hhciBidWZmZXJbVVRleHRXaXRoQnVmZmVy
SW5saW5lQ2FwYWNpdHldOwotfTsKLQotVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVU
ZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25l
ZCBsZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRB
d2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExD
aGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwg
aW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlckxhdGluMV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhYWM0OGM4MTUxY2UwMTI1MzZh
OGM0YjE1YWFlZGI4NDg2YjBjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
VVRGMTYuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCi0KLSNp
bmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVVRG
MTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4
dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7Ci1z
dGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0Kik7
Ci1zdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCosIGludDY0
X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0
KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7
Ci1zdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKLQotc3Rh
dGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNzID0g
ewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLAotICAgIDAsCi0gICAgMCwKLSAgICB1
VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZU5h
dGl2ZUxlbmd0aCwKLSAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzLAotICAgIHVUZXh0
VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAg
ICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3Nl
LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyCi19OwotCi1zdGF0aWMg
aW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJl
bnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICghdGV4dC0+Y2h1bmtDb250
ZW50cykKLSAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7Ci0g
ICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlkZXJD
b250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRl
eHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlD
b250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxl
bmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9
PSB0ZXh0LT5wKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJ
bmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2
ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRl
eHQtPmI7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICBp
bnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2
ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNv
bXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0aCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua0xl
bmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdM
aW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5k
ZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQg
aXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ug
b3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQs
IGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJk
KQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRl
bnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KHRleHQtPnApOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblBy
aW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwot
fQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQo
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBV
Qm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQt
PnEpOwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0aXZl
SW5kZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZvcndh
cmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxl
bmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXgg
PCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIHRleHQt
PmNodW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0ZXh0
LT5iOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5uYXRpdmVJ
bmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50NjRfdCBvZmZzZXQgPSBu
YXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5r
IG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJf
dCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0ZDo6
bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKLX0KLQotc3Rh
dGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQoVVRleHQq
IHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBm
b3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1v
dmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJk
KTsKLX0KLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQq
IGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2Rl
KiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVURjE2
Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQotewotICAgIHJldHVybiB0ZXh0
LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVB
Y2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQpCi17
Ci0gICAgaWYgKCF0ZXh0LT5jb250ZXh0KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgaW50
NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKHRl
eHQpOwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodVRleHRBY2Nlc3NJbkNodW5r
T3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQsIGlz
QWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Ci0gICAgbmF0aXZlSW5k
ZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwotICAg
IFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2Q29udGV4dEF3
YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3
Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJk
KTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250
ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBp
ZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0
KQotICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0
LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9IGVsc2UgaWYgKG5l
d0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAg
ICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NF
UlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKLSAg
ICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAgIHJldHVybiBUUlVF
OwotfQotCi1zdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChVVGV4
dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJyb3JD
b2RlKQotewotICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92aWRl
ciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCi0gICAgLy8gdGhhdCBkbyBub3QgcGVy
Zm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKLSAgICByZXR1cm4gMDsKLX0KLQot
c3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewot
ICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlblVURjE2Q29udGV4
dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0
TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewot
ICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0gICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7Ci0g
ICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQ
cm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3Ro
LCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE3YjQ3ZGQ3MzRiYWE3MzA4MDM0M2UwNTgwNWQ3MmUwMjNhN2E5ZTguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKKysrIC9kZXYvbnVsbApAQCAt
MSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyVVRGMTZfaAot
I2RlZmluZSBVVGV4dFByb3ZpZGVyVVRGMTZfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVUZXh0KiBvcGVuVVRGMTZDb250ZXh0QXdhcmVV
VGV4dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNvZGUq
KTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlclVU
RjE2X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRC
b3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5k
YXJpZXMubW0KaW5kZXggYjg2MGEzNTI5MmMzNTFiNDNiNjk0Nzg4MTVmZGRhMWMxYjI2ZDJiOC4u
ZDhlZTU5OGM3NDM4YjU3MjBjZWVlOTgxN2RlZjNlYWJhOTU1Zjk4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2LDgg
KzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGV4dEJvdW5kYXJpZXMuaCIK
IAotI2ltcG9ydCAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKLSNpbXBvcnQgIlRleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1UuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nVG9rZW5p
emVyLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHVuaWNv
ZGUvdWJyay5oPgpAQCAtMzYsNiArMzQsOCBAQAogI2ltcG9ydCA8dW5pY29kZS91dHlwZXMuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW1wb3J0IDx3dGYv
dGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmg+CiAjaW1wb3J0IDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU1
Mzk3NmZiMWQ1ZDcyYmNhNzQ2NzM2YjY4MzcxNTA2YWE4ZDY0Ni4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQgbWF4TG9jYWxl
U3RyaW5nTGVuZ3RoID0gMzI7Ci0KLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0
eUxpc3RSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigi
QXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwKLSAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNh
dGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSk7
Ci0gICAgaWYgKCFsb2NhbGUgfHwgQ0ZHZXRUeXBlSUQobG9jYWxlLmdldCgpKSAhPSBDRlN0cmlu
Z0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGxvY2FsZS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCi17Ci0gICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IGxhbmd1YWdlc0FycmF5ID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRM
YW5ndWFnZXMoKSk7Ci0gICAgaWYgKCFsYW5ndWFnZXNBcnJheSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgaWYgKCFDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzQXJyYXkuZ2V0KCkpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzQXJyYXkuZ2V0KCksIDApKTsKLX0K
LQotc3RhdGljIHZvaWQgZ2V0TG9jYWxlKENGU3RyaW5nUmVmIGxvY2FsZSwgY2hhciBsb2NhbGVT
dHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICAvLyBFbXB0eSBzdHJp
bmcgbWVhbnMgInJvb3QgbG9jYWxlIiwgYW5kIHRoYXQgaXMgd2hhdCB3ZSB1c2UgaWYgd2UgY2Fu
J3QgZ2V0IGEgcHJlZmVyZW5jZS4KLSAgICBsb2NhbGVTdHJpbmdCdWZmZXJbMF0gPSAwOwotICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZTdHJpbmdHZXRDU3RyaW5nKGxv
Y2FsZSwgbG9jYWxlU3RyaW5nQnVmZmVyLCBtYXhMb2NhbGVTdHJpbmdMZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nQVNDSUkpOwotfQotCi1zdGF0aWMgdm9pZCBnZXRTZWFyY2hMb2NhbGUoY2hhciBs
b2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICBnZXRMb2Nh
bGUodG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19
Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNo
YXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGlj
IGJvb2wgZ290U2VhcmNoTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RTZWFyY2hMb2NhbGUp
IHsKLSAgICAgICAgZ2V0U2VhcmNoTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAgICAg
IGdvdFNlYXJjaExvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJpbmdC
dWZmZXI7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldFRleHRCcmVha0xvY2FsZShjaGFyIGxvY2FsZVN0
cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQotewotICAgIC8vIElmIHRoZXJlIGlz
IG5vIHRleHQgYnJlYWsgbG9jYWxlLCB1c2UgdGhlIHRvcCBsYW5ndWFnZSBwcmVmZXJlbmNlLgot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlID0gdGV4dEJyZWFrTG9jYWxlUHJlZmVy
ZW5jZSgpOwotICAgIGlmIChsb2NhbGUpIHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2Fub25pY2FsTG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExh
bmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlLmdl
dCgpKSkpCi0gICAgICAgICAgICBsb2NhbGUgPSBjYW5vbmljYWxMb2NhbGU7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIGxvY2FsZSA9IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpOwotICAgIGdldExvY2Fs
ZShsb2NhbGUuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1
cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5n
QnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGljIGJvb2wgZ290VGV4dEJy
ZWFrTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RUZXh0QnJlYWtMb2NhbGUpIHsKLSAgICAg
ICAgZ2V0VGV4dEJyZWFrTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAgICAgIGdvdFRl
eHRCcmVha0xvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJpbmdCdWZm
ZXI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2lu
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTdlMTcwNWVmNTRiOTM5MjE0ZGExODQ4MGRiN2Ez
MmMzMmM5MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlE
KCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVy
biAiIjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAg
ICAvLyBVc2luZyBlbl9VU19QT1NJWCBub3cgc28gd29yZCBzZWxlY3Rpb24gaW4gYWRkcmVzcyBm
aWVsZCB3b3JrcyBhcyBleHBlY3RlZCBhcyBiZWZvcmUgKGRvdWJsZS1jbGlja2luZwotICAgIC8v
IGluIGEgVVJMIHNlbGVjdHMgYSB3b3JkIGRlbGltaXRlZCBieSBwZXJpb2RzIHJhdGhlciB0aGFu
IHNlbGVjdGluZyB0aGUgZW50aXJlIFVSTCkuCi0gICAgLy8gSG93ZXZlciwgdGhpcyBpcyBub3Qg
ZW50aXJlbHkgY29ycmVjdCAtIHdlIHNob3VsZCBob25vciB0aGUgc3lzdGVtIGxvY2FsZSBpbiB0
aGUgbm9ybWFsIGNhc2UuCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS82Nzg2NzAzPiBT
aG91bGQgdXNlIHN5c3RlbSBsb2NhbGUgZm9yIHRleHQgYnJlYWtpbmcKLSAgICByZXR1cm4gImVu
X1VTX1BPU0lYIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggZTM1NDYwMzE5NTAzMjU4Y2YyOWY3NDNhNWI4NDEwZmYyNGU5ZWViNy4uMmVkNWI1
YTk1ZWVjM2MwNTBjZTFiZDQ5ZGZhMDQ1YjYwNjcxMzFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgot
I2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKaW5kZXggOGI0ZWMzZjhlZWI5MzJjMWM3ZGM1ZGUxNjY5ZjA4YzQwYmEwNmVjYi4uMmE1YWQ1
ZDQ1MDk0MjU3NzZiOWFjMDQwMDAzNmZjNzYwMWI2ZTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlRl
eHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgog
I2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBiYWNjNWMyNTNhYzNlN2M5NWQ1
YzZmYTlmMzYxNzU1MjQ0NWE4OTUyLi5kNjNlNjA4OWNkZTQwMzdjNTVlNWYxYzhjNjIyODFlOGFj
YTYyYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTI3LDggKzI3
LDggQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0TGluZUJveGVzLmgiCiAjaW5jbHVkZSAiU2ltcGxl
TGluZUxheW91dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFn
bWVudEl0ZXJhdG9yLmgKaW5kZXggYzc5MDZjMTdkYzhlMDE0ZWQwNTBmOTVmY2IwMWNjODZiNTEw
MWQ2NC4uMTA3N2JjYmJmMTYwOTU1NGJjZWJiNzc0NThmMjgwODVmZjYyNmFjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
VGV4dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiUmVu
ZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5o
IgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJicmVha19saW5lcy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAppbmRleCAw
NzU3NmJiYzhiZDRjZmY2ZjUzYWIzNGIwYzEzNjVhM2Y4NDRhOGNhLi5lNGI5NTM2ZmQxYmVkZjFj
ZTM2M2Q2NjAxMWQ1MTIzNTkwZWY4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvYnJlYWtfbGluZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9icmVh
a19saW5lcy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJicmVha19saW5lcy5oIgogCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaAppbmRleCA5ZTA0ZDFlNDI4Y2EyNjA4MzVhYmViZjk1ZWVjNjQz
ODliZmVlNGQ2Li5hMjk0NjEyOWNiYTZlYjkxNmRhYjllNTFhODBlY2JlOWUxN2ZiMmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaApAQCAtMjIsOSArMjIsOSBAQAogI2lm
bmRlZiBicmVha19saW5lc19oCiAjZGVmaW5lIGJyZWFrX2xpbmVzX2gKIAotI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lQnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIu
aAppbmRleCAyNzc0ZjI2ODU2MTE5ODNkZjVjMzQ4MzllZGU3MDQ2ZGVkMjZhM2ZkLi5jODlmZTE3
Y2NkMDY5YTY1Y2UxM2Q4MWFjN2UxYTNjODlmNTE4YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlu
bGluZUhlYWRlcnMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283250</attachid>
            <date>2016-07-09 00:50:38 -0700</date>
            <delta_ts>2016-07-09 01:20:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159594-20160709005001.patch</filename>
            <type>text/plain</type>
            <size>360219</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLmFmOTRjZDdkYWVlN2QzZmY4ZmRjYWQ0OWRjMGE1MThlOTBhNDJi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE2LTA3LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2luZyBpdGVyYXRvciBj
b2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1ZpZXcgYSBHcmFwaGVt
ZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRvciBuZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9yCisgICAgICAgIGNv
ZGUuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpY3UvdW5pY29kZS91YnJrLmg6IEFkZGVkLgorICAgICAgICAqIGljdS91bmljb2RlL3V0ZXh0
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGV4dC5oLgorICAg
ICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAg
ICogd3RmL1RpbnlMUlVDYWNoZS5oOgorICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaC4KKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0
b3JQb29sOjpMaW5lQnJlYWtJdGVyYXRvclBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJdGVyYXRv
clBvb2w6Om1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKToKKyAgICAgICAgKFdURjo6TGluZUJy
ZWFrSXRlcmF0b3JQb29sOjp0YWtlKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0b3JQ
b29sOjpwdXQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwLgorICAgICAgICAoV1RGOjppbml0aWFsaXplSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOgorICAgICAgICAoV1RGOjpzZXRUZXh0Rm9ySXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OnNlbnRlbmNl
QnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmN1cnNvck1vdmVtZW50SXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpy
ZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjptYXBMaW5lSXRlcmF0b3JN
b2RlVG9SdWxlcyk6CisgICAgICAgIChXVEY6OmlzQ0pLTG9jYWxlKToKKyAgICAgICAgKFdURjo6
b3BlbkxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OmNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZpcnN0KToKKyAgICAgICAgKFdURjo6dGV4
dEJyZWFrTGFzdCk6CisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOgorICAgICAgICAoV1RG
Ojp0ZXh0QnJlYWtQcmV2aW91cyk6CisgICAgICAgIChXVEY6OnRleHRCcmVha1ByZWNlZGluZyk6
CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXVEY6OnRleHRC
cmVha0N1cnJlbnQpOgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6CisgICAgICAgIChXVEY6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXVEY6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOgor
ICAgICAgICAoV1RGOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAgICAg
KiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oLgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6fkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c3RyaW5nKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjppc0xvb3NlQ0pLTW9kZSk6CisgICAgICAgIChXVEY6OkxhenlM
aW5lQnJlYWtJdGVyYXRvcjo6bGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OnVwZGF0ZVByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6Okxh
enlMaW5lQnJlYWtJdGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpyZXNldFN0cmluZ0FuZFJlbGVhc2VJdGVyYXRvcik6CisgICAgICAgIChXVEY6
Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJh
dG9yKik6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmguCisgICAgICAgICogd3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4dC9ndGsvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXIuY3BwLgorICAgICAgICAoV1RGOjpmaXhQb2ludGVyKToKKyAgICAg
ICAgKFdURjo6dVRleHRDbG9uZUltcGwpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmguCisgICAgICAgIChXVEY6OnVUZXh0UHJvdmlkZXJDb250ZXh0KToKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOgorICAgICAg
ICAoV1RGOjp1VGV4dEFjY2Vzc1BpbkluZGV4KToKKyAgICAgICAgKFdURjo6dVRleHRBY2Nlc3NJ
bkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcC4KKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDbG9u
ZSk6CisgICAgICAgIChXVEY6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdU
Rjo6dVRleHRMYXRpbjFBY2Nlc3MpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUV4dHJhY3Qp
OgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKToKKyAgICAgICAg
KFdURjo6dVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYpOgorICAgICAgICAoV1RGOjp1
VGV4dExhdGluMUNsb3NlKToKKyAgICAgICAgKFdURjo6b3BlbkxhdGluMVVUZXh0UHJvdmlkZXIp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRl
eHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5
Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5Qcmlv
ckNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9Q
cmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25l
KToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOgor
ICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2Vzcyk6CisgICAgICAgIChX
VEY6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6CisgICAgICAgIChXVEY6OnVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UpOgorICAgICAgICAoV1RGOjpvcGVuTGF0aW4xQ29udGV4
dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlk
ZXJMYXRpbjEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaC4KKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAuCisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2Q29udGV4
dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0VVRGMTZDb250
ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dFVU
RjE2Q29udGV4dEF3YXJlQ2xvbmUpOgorICAgICAgICAoV1RGOjp1VGV4dFVURjE2Q29udGV4dEF3
YXJlTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUFj
Y2Vzcyk6CisgICAgICAgIChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KToKKyAg
ICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKToKKyAgICAgICAgKFdURjo6
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmguCisgICAgICAgICogd3RmL3RleHQv
bWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
TWFjLm1tLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKToKKyAgICAg
ICAgKFdURjo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxl
KToKKyAgICAgICAgKFdURjo6Z2V0U2VhcmNoTG9jYWxlKToKKyAgICAgICAgKFdURjo6Y3VycmVu
dFNlYXJjaExvY2FsZUlEKToKKyAgICAgICAgKFdURjo6Z2V0VGV4dEJyZWFrTG9jYWxlKToKKyAg
ICAgICAgKFdURjo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4
dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVV2luLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorCiAyMDE2LTA3LTA4
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjAyNzk5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwOTRlNzRiMGM0NDRi
YTQ4MjBhYTJhM2FlNjAzNzFkZGY1MWZlMmEuLjFmMGE3MjQwOTFkZGMwODQyOGU3Mjk0ZDk1MzEw
OTdiZGFlODIxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTQgQEAKKzIwMTYtMDctMDkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGJy
ZWFraW5nIGl0ZXJhdG9yIGNvZGUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBnaXZpbmcgU3Ry
aW5nVmlldyBhIEdyYXBoZW1lQ2x1c3RlcnMgaXRlcmF0b3IuCisgICAgICAgIFN1Y2ggYW4gaW50
ZXJhdG9yIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBvdXIgYnJlYWtpbmcgaXRl
cmF0b3IKKyAgICAgICAgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVy
ZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFs
dWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3Jl
YXRlVmFsdWVGb3JLZXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVy
YXRvclBvb2w6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjptYWtlTG9jYWxlV2l0aEJyZWFrS2V5
d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6
OnRha2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29s
OjpwdXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzZXRUZXh0Rm9ySXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OndvcmRCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNlbnRl
bmNlQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JNb3Zl
bWVudEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFjcXVpcmVMaW5lQnJl
YWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTGluZUJyZWFr
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bWFwTGluZUl0ZXJhdG9yTW9k
ZVRvUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNDSktMb2NhbGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxpbmVCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4
dEJyZWFrRmlyc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFrTGFzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0QnJlYWtOZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnRleHRCcmVha1ByZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRleHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0
ZXh0QnJlYWtGb2xsb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFr
Q3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1RleHRCcmVhayk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJlYWspOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bnVtR3JhcGhlbWVDbHVzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6On5MYXp5TGluZUJyZWFrSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjppc0xvb3NlQ0pLTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I6Omxhc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjp1
cGRhdGVQcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OmdldCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnJlc2V0U3RyaW5nQW5k
UmVsZWFzZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yKik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaXhQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xv
bmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dFByb3ZpZGVyQ29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dEFjY2Vzc1BpbkluZGV4KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNsb25lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExh
dGluMU1hcE9mZnNldFRvTmF0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0
TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxhdGlu
MVVUZXh0UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMUNv
bnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29u
dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
TW92ZUluUHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRp
bjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFBy
b3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlR2V0
Q3VycmVudENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29u
dGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dp
dGNoVG9QcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRVVEYx
NkNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0VVRG
MTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
dVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmdldExvY2FsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRTZWFyY2hM
b2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldFRleHRCcmVha0xvY2FsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oOgorCiAyMDE2LTA3LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgYWRvcHROb2RlKCkgY2hhbmdlcyBjc3MgY2xhc3MgdG8gbG93ZXJjYXNlIGZvciBkb2N1
bWVudCBsb2FkZWQgd2l0aCBYSFIgcmVzcG9uc2VUeXBlID0gImRvY3VtZW50IgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDM0ZjY2ZTMzZTljY2Q4Yzk1Mzdm
NzU3MGVmMmE4MmIwN2VjM2QzMS4uNGJlNGZjMWRhNDRjYzlhMThmMjEyZTgyMGRiMzU4MGJjNmIy
OWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2
ICs4OSwxNSBAQAogCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJv
bHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2Vk
QnlTYWZhcmkubW0gKi87IH07CiAJCTFBRkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2Fz
dHNDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
REU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi87IH07CiAJCTFBRkRFNjUz
MTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGREU2NTIxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFs
LmggKi87IH07CisJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4
MUM3RDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OworCQkx
QzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTgxQzdFMUQzMDc4REEwMEY1
RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oICovOyB9OworCQkxQzE4MUM4RjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRl
ci5jcHAgKi87IH07CisJCTFDMTgxQzkwMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
QTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5oICovOyB9OworCQkxQzE4MUM5MTFE
MzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYg
LyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi87IH07CisJCTFDMTgxQzkyMUQzMDdBQjgwMEY1
RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92
aWRlckxhdGluMS5oICovOyB9OworCQkxQzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQ
cm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMTgxQzhEMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
ICovOyB9OworCQkxQzE4MUM5NDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggKi87IH07CisJCTFDMTgx
Qzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxODFDOTUx
RDMwODAwQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gKi87
IH07CiAJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg4MTUyNTAy
REEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCAqLzsgfTsKIAkJMUZBNDdDOEIxNTI1MDJE
QTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg5MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmggKi87IH07CiAJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5oICovOyB9OwpAQCAtNDE0LDYgKzQyMywxNyBAQAogCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3
MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0
c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkRFNjUyMTk1M0IyM0QwMEM0
OEZGQSAvKiBPcHRpb25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRp
b25hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM3RDFEMzA3OERBMDBG
NUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODIxRDMwNzlB
QzAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDOEExRDMwN0FCODAwRjVGQTE2IC8qIFVU
ZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92
aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4QjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMxODFDOEMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRp
bjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGlu
MS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4RDFEMzA3QUI4MDBGNUZB
MTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMTgxQzhFMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgcGF0
aCA9IG1hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRkE0N0M4ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVh
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4
RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29yZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODgsNiArNzA4LDE5IEBACiAJCQluYW1lID0gTGli
cmFyaWVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMxODFDODgxRDMw
N0FCODAwRjVGQTE2IC8qIGljdSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUMxODFDODkxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3Bw
ICovLAorCQkJCTFDMTgxQzhBMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggKi8s
CisJCQkJMUMxODFDOEIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
ICovLAorCQkJCTFDMTgxQzhDMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4x
LmggKi8sCisJCQkJMUMxODFDOEQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi8sCisJCQkJMUMxODFDOEUxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc1MSw2ICs3ODQsNyBAQAogCQlB
NUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBB
ODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSAqLywKIAkJCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJF
NjkgLyogU3RyaW5nTWFjLm1tICovLAogCQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBT
dHJpbmdWaWV3T2JqQy5tbSAqLywKQEAgLTEwNDMsNiArMTA3Nyw3IEBACiAJCUE4QTQ3MzFCMTUx
QTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzE4MUM4ODFEMzA3QUI4MDBGNUZBMTYgLyogaWN1ICovLAogCQkJCUE1
QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAvKiBjZiAqLywKIAkJCQlBNUJBMTVGMTE4MjQzMzlGMDBB
ODJFNjkgLyogbWFjICovLAogCQkJCUE4QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZh
c3RQYXRoLmggKi8sCkBAIC0xMDc5LDYgKzExMTQsMTAgQEAKIAkJCQk3MEVDQTYwQzFCMDI0MjY4
MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGU3RyaW5nLmggKi8sCisJCQkJMUMxODFDN0QxRDMwNzhEQTAwRjVGQTE2IC8qIFRl
eHRCcmVha0l0ZXJhdG9yLmNwcCAqLywKKwkJCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyog
VGV4dEJyZWFrSXRlcmF0b3IuaCAqLywKKwkJCQkxQzE4MUM4MTFEMzA3OTdDMDBGNUZBMTYgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8sCisJCQkJMUMxODFDODIxRDMwNzlBQzAwRjVG
QTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjQ3LDYgKzEyODYsNyBA
QAogCQkJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVk
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogSGFz
aGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4MUM5MDFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDQxNTFBODI1QjAwNDEyM0ZG
IC8qIEhhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Q1MTUxQTgyNUIw
MDQxMjNGRiAvKiBIYXNoSXRlcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNENjE1
MUE4MjVCMDA0MTIzRkYgLyogSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjYzLDYgKzEz
MDMsNyBAQAogCQkJCTdDREQ3RkZBMTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0FDOTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MERBMDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJv
dmlkZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZG
IC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUxNjQ2QjFCNkZGQzk2MDA0
MDBFN0MgLyogTG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEy
M0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjcyLDYgKzEzMTMsNyBAQAogCQkJ
CUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxQzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyog
TWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMyLDYgKzEzNzQsNyBA
QAogCQkJCUE3NDg3NDUzMTdBMEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyNjE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5k
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0
UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVC
MDA0MTIzRkYgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAg
LTE1MDIsNiArMTU0NSw3IEBACiAJCQkJQThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTU1NkY1
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDM5MTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTFDMTgxQzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAw
NDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUx
QTgyNUIwMDQxMjNGRiAvKiBEYXRhTG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Ew
MTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MTUs
NiArMTU1OSw3IEBACiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2Nr
T2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzhG
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTI5LDYgKzE1NzQsNyBAQAogCQkJCUE4
QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIzMzRFQjAw
ODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgy
NEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNTU4LDYgKzE2MDQsOCBAQAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcx
NTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzdG
MUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDgxNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NEExNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91YnJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljMGVmNjI3YjY3Mjc5Zjg2ZTQ2MDQ0YmYwZjI1
NzEwMmUwYzZjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJy
ay5oCkBAIC0wLDAgKzEsNTQxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHly
aWdodCAoQykgMTk5Ni0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuCisqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyovCisKKyNpZm5kZWYgVUJSS19ICisjZGVmaW5lIFVCUktfSAorCisjaW5jbHVk
ZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3Vsb2MuaCIKKyNpbmNsdWRl
ICJ1bmljb2RlL3V0ZXh0LmgiCisjaW5jbHVkZSAidW5pY29kZS9sb2NhbHBvaW50ZXIuaCIKKwor
LyoqCisgKiBBIHRleHQtYnJlYWsgaXRlcmF0b3IuCisgKiAgRm9yIHVzYWdlIGluIEMgcHJvZ3Jh
bXMuCisgKi8KKyNpZm5kZWYgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRPUgorIyAgIGRlZmlu
ZSBVQlJLX1RZUEVERUZfVUJSRUFLX0lURVJBVE9SCisgICAgLyoqCisgICAgICogIE9wYXF1ZSB0
eXBlIHJlcHJlc2VudGluZyBhbiBJQ1UgQnJlYWsgaXRlcmF0b3Igb2JqZWN0LgorICAgICAqICBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBVQnJlYWtJdGVyYXRv
ciBVQnJlYWtJdGVyYXRvcjsKKyNlbmRpZgorCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFU
SU9OCisKKyNpbmNsdWRlICJ1bmljb2RlL3BhcnNlZXJyLmgiCisKKy8qKgorICogXGZpbGUKKyAq
IFxicmllZiBDIEFQSTogQnJlYWtJdGVyYXRvcgorICoKKyAqIDxoMj4gQnJlYWtJdGVyYXRvciBD
IEFQSSA8L2gyPgorICoKKyAqIFRoZSBCcmVha0l0ZXJhdG9yIEMgQVBJIGRlZmluZXMgIG1ldGhv
ZHMgZm9yIGZpbmRpbmcgdGhlIGxvY2F0aW9uCisgKiBvZiBib3VuZGFyaWVzIGluIHRleHQuIFBv
aW50ZXIgdG8gYSBVQnJlYWtJdGVyYXRvciBtYWludGFpbiBhCisgKiBjdXJyZW50IHBvc2l0aW9u
IGFuZCBzY2FuIG92ZXIgdGV4dCByZXR1cm5pbmcgdGhlIGluZGV4IG9mIGNoYXJhY3RlcnMKKyAq
IHdoZXJlIGJvdW5kYXJpZXMgb2NjdXIuCisgKiA8cD4KKyAqIExpbmUgYm91bmRhcnkgYW5hbHlz
aXMgZGV0ZXJtaW5lcyB3aGVyZSBhIHRleHQgc3RyaW5nIGNhbiBiZSBicm9rZW4KKyAqIHdoZW4g
bGluZS13cmFwcGluZy4gVGhlIG1lY2hhbmlzbSBjb3JyZWN0bHkgaGFuZGxlcyBwdW5jdHVhdGlv
biBhbmQKKyAqIGh5cGhlbmF0ZWQgd29yZHMuCisgKiA8cD4KKyAqIFNlbnRlbmNlIGJvdW5kYXJ5
IGFuYWx5c2lzIGFsbG93cyBzZWxlY3Rpb24gd2l0aCBjb3JyZWN0CisgKiBpbnRlcnByZXRhdGlv
biBvZiBwZXJpb2RzIHdpdGhpbiBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb25zLCBhbmQKKyAqIHRy
YWlsaW5nIHB1bmN0dWF0aW9uIG1hcmtzIHN1Y2ggYXMgcXVvdGF0aW9uIG1hcmtzIGFuZCBwYXJl
bnRoZXNlcy4KKyAqIDxwPgorICogV29yZCBib3VuZGFyeSBhbmFseXNpcyBpcyB1c2VkIGJ5IHNl
YXJjaCBhbmQgcmVwbGFjZSBmdW5jdGlvbnMsIGFzCisgKiB3ZWxsIGFzIHdpdGhpbiB0ZXh0IGVk
aXRpbmcgYXBwbGljYXRpb25zIHRoYXQgYWxsb3cgdGhlIHVzZXIgdG8KKyAqIHNlbGVjdCB3b3Jk
cyB3aXRoIGEgZG91YmxlIGNsaWNrLiBXb3JkIHNlbGVjdGlvbiBwcm92aWRlcyBjb3JyZWN0Cisg
KiBpbnRlcnByZXRhdGlvbiBvZiBwdW5jdHVhdGlvbiBtYXJrcyB3aXRoaW4gYW5kIGZvbGxvd2lu
ZworICogd29yZHMuIENoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSB3b3JkLCBzdWNo
IGFzIHN5bWJvbHMgb3IKKyAqIHB1bmN0dWF0aW9uIG1hcmtzLCBoYXZlIHdvcmQtYnJlYWtzIG9u
IGJvdGggc2lkZXMuCisgKiA8cD4KKyAqIENoYXJhY3RlciBib3VuZGFyeSBhbmFseXNpcyBpZGVu
dGlmaWVzIHRoZSBib3VuZGFyaWVzIG9mCisgKiAiRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlcnMi
LCB3aGljaCBhcmUgZ3JvdXBpbmdzIG9mIGNvZGVwb2ludHMKKyAqIHRoYXQgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgY2hhcmFjdGVyLWxpa2UgdW5pdHMgZm9yIG1hbnkgdGV4dCBvcGVyYXRpb25zLgor
ICogUGxlYXNlIHNlZSBVbmljb2RlIFN0YW5kYXJkIEFubmV4ICMyOSwgVW5pY29kZSBUZXh0IFNl
Z21lbnRhdGlvbiwKKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjI5LyBmb3Ig
YWRkaXRpb25hbCBpbmZvcm1hdGlvbiAKKyAqIG9uIGdyYXBoZW1lIGNsdXN0ZXJzIGFuZCBndWlk
ZWxpbmVzIG9uIHRoZWlyIHVzZS4KKyAqIDxwPgorICogVGl0bGUgYm91bmRhcnkgYW5hbHlzaXMg
bG9jYXRlcyBhbGwgcG9zaXRpb25zLAorICogdHlwaWNhbGx5IHN0YXJ0cyBvZiB3b3JkcywgdGhh
dCBzaG91bGQgYmUgc2V0IHRvIFRpdGxlIENhc2UKKyAqIHdoZW4gdGl0bGUgY2FzaW5nIHRoZSB0
ZXh0LgorICogPHA+CisgKiBUaGUgdGV4dCBib3VuZGFyeSBwb3NpdGlvbnMgYXJlIGZvdW5kIGFj
Y29yZGluZyB0byB0aGUgcnVsZXMKKyAqIGRlc2NyaWJlZCBpbiBVbmljb2RlIFN0YW5kYXJkIEFu
bmV4ICMyOSwgVGV4dCBCb3VuZGFyaWVzLCBhbmQKKyAqIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXgg
IzE0LCBMaW5lIEJyZWFraW5nIFByb3BlcnRpZXMuICBUaGVzZQorICogYXJlIGF2YWlsYWJsZSBh
dCBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIxNC8gYW5kCisgKiBodHRwOi8vd3d3
LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8uCisgKiA8cD4KKyAqIEluIGFkZGl0aW9uIHRvIHRo
ZSBwbGFpbiBDIEFQSSBkZWZpbmVkIGluIHRoaXMgaGVhZGVyIGZpbGUsIGFuCisgKiBvYmplY3Qg
b3JpZW50ZWQgQysrIEFQSSB3aXRoIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyBkZWZpbmVk
IGluIHRoZQorICogZmlsZSBicmtpdGVyLmguCisgKiA8cD4KKyAqIENvZGUgc25pcHBldHMgaWxs
dXN0cmF0aW5nIHRoZSB1c2Ugb2YgdGhlIEJyZWFrIEl0ZXJhdG9yIEFQSXMKKyAqIGFyZSBhdmFp
bGFibGUgaW4gdGhlIElDVSBVc2VyIEd1aWRlLAorICogaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy91
c2VyZ3VpZGUvYm91bmRhcnlBbmFseXNpcy5odG1sCisgKiBhbmQgaW4gdGhlIHNhbXBsZSBwcm9n
cmFtIGljdS9zb3VyY2Uvc2FtcGxlcy9icmVhay9icmVhay5jcHAKKyAqLworCisvKiogVGhlIHBv
c3NpYmxlIHR5cGVzIG9mIHRleHQgYm91bmRhcmllcy4gIEBzdGFibGUgSUNVIDIuMCAqLwordHlw
ZWRlZiBlbnVtIFVCcmVha0l0ZXJhdG9yVHlwZSB7CisgIC8qKiBDaGFyYWN0ZXIgYnJlYWtzICBA
c3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19DSEFSQUNURVIgPSAwLAorICAvKiogV29yZCBicmVh
a3MgQHN0YWJsZSBJQ1UgMi4wICovCisgIFVCUktfV09SRCA9IDEsCisgIC8qKiBMaW5lIGJyZWFr
cyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19MSU5FID0gMiwKKyAgLyoqIFNlbnRlbmNlIGJy
ZWFrcyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19TRU5URU5DRSA9IDMsCisKKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgIC8qKgorICAgKiBUaXRsZSBDYXNlIGJyZWFrcworICAg
KiBUaGUgaXRlcmF0b3IgY3JlYXRlZCB1c2luZyB0aGlzIHR5cGUgbG9jYXRlcyB0aXRsZSBib3Vu
ZGFyaWVzIGFzIGRlc2NyaWJlZCBmb3IKKyAgICogVW5pY29kZSAzLjIgb25seS4gRm9yIFVuaWNv
ZGUgNC4wIGFuZCBhYm92ZSB0aXRsZSBib3VuZGFyeSBpdGVyYXRpb24sCisgICAqIHBsZWFzZSB1
c2UgV29yZCBCb3VuZGFyeSBpdGVyYXRvci4KKyAgICoKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDIu
OCBVc2UgdGhlIHdvcmQgYnJlYWsgaXRlcmF0b3IgZm9yIHRpdGxlY2FzaW5nIGZvciBVbmljb2Rl
IDQgYW5kIGxhdGVyLgorICAgKi8KKyAgVUJSS19USVRMRSA9IDQsCisjZW5kaWYgLyogVV9ISURF
X0RFUFJFQ0FURURfQVBJICovCisgIFVCUktfQ09VTlQgPSA1Cit9IFVCcmVha0l0ZXJhdG9yVHlw
ZTsKKworLyoqIFZhbHVlIGluZGljYXRpbmcgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4g
cmV0dXJuZWQuCisgKiAgQHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVUJSS19ET05FICgo
aW50MzJfdCkgLTEpCisKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRoZSB3b3JkIGJy
ZWFrIHRhZ3MgcmV0dXJuZWQgYnkKKyAqICBnZXRSdWxlU3RhdHVzKCkuICBBIHJhbmdlIG9mIHZh
bHVlcyBpcyBkZWZpbmVkIGZvciBlYWNoIGNhdGVnb3J5IG9mCisgKiAgd29yZCwgdG8gYWxsb3cg
Zm9yIGZ1cnRoZXIgc3ViZGl2aXNpb25zIG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2Vz
LgorICogIEFwcGxpY2F0aW9ucyBzaG91bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3
aXRoaW4gdGhlIHJhbmdlLCByYXRoZXIKKyAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2
YWx1ZXMuCisgKiAgQHN0YWJsZSBJQ1UgMi4yCisqLwordHlwZWRlZiBlbnVtIFVXb3JkQnJlYWsg
eworICAgIC8qKiBUYWcgdmFsdWUgZm9yICJ3b3JkcyIgdGhhdCBkbyBub3QgZml0IGludG8gYW55
IG9mIG90aGVyIGNhdGVnb3JpZXMuCisgICAgICogIEluY2x1ZGVzIHNwYWNlcyBhbmQgbW9zdCBw
dW5jdHVhdGlvbi4gKi8KKyAgICBVQlJLX1dPUkRfTk9ORSAgICAgICAgICAgPSAwLAorICAgIC8q
KiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3IgdW5jYXRlZ29yaXplZCB3b3Jkcy4gKi8KKyAgICBV
QlJLX1dPUkRfTk9ORV9MSU1JVCAgICAgPSAxMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29y
ZHMgdGhhdCBhcHBlYXIgdG8gYmUgbnVtYmVycywgbG93ZXIgbGltaXQuICAgICovCisgICAgVUJS
S19XT1JEX05VTUJFUiAgICAgICAgID0gMTAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRz
IHRoYXQgYXBwZWFyIHRvIGJlIG51bWJlcnMsIHVwcGVyIGxpbWl0LiAgICAqLworICAgIFVCUktf
V09SRF9OVU1CRVJfTElNSVQgICA9IDIwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyB0
aGF0IGNvbnRhaW4gbGV0dGVycywgZXhjbHVkaW5nCisgICAgICogIGhpcmFnYW5hLCBrYXRha2Fu
YSBvciBpZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzLCBsb3dlciBsaW1pdC4gICAgKi8KKyAgICBVQlJL
X1dPUkRfTEVUVEVSICAgICAgICAgPSAyMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMg
Y29udGFpbmluZyBsZXR0ZXJzLCB1cHBlciBsaW1pdCAgKi8KKyAgICBVQlJLX1dPUkRfTEVUVEVS
X0xJTUlUICAgPSAzMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMgY29udGFpbmluZyBr
YW5hIGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0tBTkEgICAgICAg
ICAgID0gMzAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcga2FuYSBj
aGFyYWN0ZXJzLCB1cHBlciBsaW1pdCAqLworICAgIFVCUktfV09SRF9LQU5BX0xJTUlUICAgICA9
IDQwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyBjb250YWluaW5nIGlkZW9ncmFwaGlj
IGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0lERU8gICAgICAgICAg
ID0gNDAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcgaWRlb2dyYXBo
aWMgY2hhcmFjdGVycywgdXBwZXIgbGltaXQgKi8KKyAgICBVQlJLX1dPUkRfSURFT19MSU1JVCAg
ICAgPSA1MDAKK30gVVdvcmRCcmVhazsKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRo
ZSBsaW5lIGJyZWFrIHRhZ3MgcmV0dXJuZWQgYnkgZ2V0UnVsZVN0YXR1cygpLgorICogIEEgcmFu
Z2Ugb2YgdmFsdWVzIGlzIGRlZmluZWQgZm9yIGVhY2ggY2F0ZWdvcnkgb2YKKyAqICB3b3JkLCB0
byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2YgYSBjYXRlZ29yeSBpbiBmdXR1cmUg
cmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBmb3IgdGFnIHZhbHVlcyBm
YWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICogIHRoYW4gZm9yIHNpbmdsZSBpbmRp
dmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgKKyovCit0eXBlZGVmIGVudW0gVUxp
bmVCcmVha1RhZyB7CisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igc29mdCBsaW5lIGJyZWFrcywgcG9z
aXRpb25zIGF0IHdoaWNoIGEgbGluZSBicmVhaworICAgICAgKiAgaXMgYWNjZXB0YWJsZSBidXQg
bm90IHJlcXVpcmVkICAgICAgICAgICAgICAgICovCisgICAgVUJSS19MSU5FX1NPRlQgICAgICAg
ICAgICA9IDAsCisgICAgLyoqIFVwcGVyIGJvdW5kIGZvciBzb2Z0IGxpbmUgYnJlYWtzLiAgICAg
ICAgICAgICAgKi8KKyAgICBVQlJLX0xJTkVfU09GVF9MSU1JVCAgICAgID0gMTAwLAorICAgIC8q
KiBUYWcgdmFsdWUgZm9yIGEgaGFyZCwgb3IgbWFuZGF0b3J5IGxpbmUgYnJlYWsgICovCisgICAg
VUJSS19MSU5FX0hBUkQgICAgICAgICAgICA9IDEwMCwKKyAgICAvKiogVXBwZXIgYm91bmQgZm9y
IGhhcmQgbGluZSBicmVha3MuICAgICAgICAgICAgICAqLworICAgIFVCUktfTElORV9IQVJEX0xJ
TUlUICAgICAgPSAyMDAKK30gVUxpbmVCcmVha1RhZzsKKworCisKKy8qKgorICogIEVudW0gY29u
c3RhbnRzIGZvciB0aGUgc2VudGVuY2UgYnJlYWsgdGFncyByZXR1cm5lZCBieSBnZXRSdWxlU3Rh
dHVzKCkuCisgKiAgQSByYW5nZSBvZiB2YWx1ZXMgaXMgZGVmaW5lZCBmb3IgZWFjaCBjYXRlZ29y
eSBvZgorICogIHNlbnRlbmNlLCB0byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2Yg
YSBjYXRlZ29yeSBpbiBmdXR1cmUgcmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBj
aGVjayBmb3IgdGFnIHZhbHVlcyBmYWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICog
IHRoYW4gZm9yIHNpbmdsZSBpbmRpdmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgK
KyovCit0eXBlZGVmIGVudW0gVVNlbnRlbmNlQnJlYWtUYWcgeworICAgIC8qKiBUYWcgdmFsdWUg
Zm9yIGZvciBzZW50ZW5jZXMgIGVuZGluZyB3aXRoIGEgc2VudGVuY2UgdGVybWluYXRvcgorICAg
ICAgKiAoJy4nLCAnPycsICchJywgZXRjLikgY2hhcmFjdGVyLCBwb3NzaWJseSBmb2xsb3dlZCBi
eSBhCisgICAgICAqIGhhcmQgc2VwYXJhdG9yIChDUiwgTEYsIFBTLCBldGMuKQorICAgICAgKi8K
KyAgICBVQlJLX1NFTlRFTkNFX1RFUk0gICAgICAgPSAwLAorICAgIC8qKiBVcHBlciBib3VuZCBm
b3IgdGFncyBmb3Igc2VudGVuY2VzIGVuZGVkIGJ5IHNlbnRlbmNlIHRlcm1pbmF0b3JzLiAgICAq
LworICAgIFVCUktfU0VOVEVOQ0VfVEVSTV9MSU1JVCA9IDEwMCwKKyAgICAvKiogVGFnIHZhbHVl
IGZvciBmb3Igc2VudGVuY2VzIHRoYXQgZG8gbm90IGNvbnRhaW4gYW4gZW5kaW5nCisgICAgICAq
IHNlbnRlbmNlIHRlcm1pbmF0b3IgKCcuJywgJz8nLCAnIScsIGV0Yy4pIGNoYXJhY3RlciwgYnV0
CisgICAgICAqIGFyZSBlbmRlZCBvbmx5IGJ5IGEgaGFyZCBzZXBhcmF0b3IgKENSLCBMRiwgUFMs
IGV0Yy4pIG9yIGVuZCBvZiBpbnB1dC4KKyAgICAgICovCisgICAgVUJSS19TRU5URU5DRV9TRVAg
ICAgICAgID0gMTAwLAorICAgIC8qKiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3Igc2VudGVuY2Vz
IGVuZGVkIGJ5IGEgc2VwYXJhdG9yLiAgICAgICAgICAgICAgKi8KKyAgICBVQlJLX1NFTlRFTkNF
X1NFUF9MSU1JVCAgPSAyMDAKKyAgICAvKiogVGFnIHZhbHVlIGZvciBhIGhhcmQsIG9yIG1hbmRh
dG9yeSBsaW5lIGJyZWFrICAqLworfSBVU2VudGVuY2VCcmVha1RhZzsKKworCisvKioKKyAqIE9w
ZW4gYSBuZXcgVUJyZWFrSXRlcmF0b3IgZm9yIGxvY2F0aW5nIHRleHQgYm91bmRhcmllcyBmb3Ig
YSBzcGVjaWZpZWQgbG9jYWxlLgorICogQSBVQnJlYWtJdGVyYXRvciBtYXkgYmUgdXNlZCBmb3Ig
ZGV0ZWN0aW5nIGNoYXJhY3RlciwgbGluZSwgd29yZCwKKyAqIGFuZCBzZW50ZW5jZSBicmVha3Mg
aW4gdGV4dC4KKyAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIFVCcmVha0l0ZXJhdG9yIHRvIG9w
ZW46IG9uZSBvZiBVQlJLX0NIQVJBQ1RFUiwgVUJSS19XT1JELAorICogVUJSS19MSU5FLCBVQlJL
X1NFTlRFTkNFCisgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgc3BlY2lmeWluZyB0aGUgdGV4
dC1icmVha2luZyBjb252ZW50aW9ucy4KKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIGl0
ZXJhdGVkIG92ZXIuCisgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBB
IFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgorICogQHJldHVybiBBIFVCcmVha0l0
ZXJhdG9yIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAqIEBzZWUgdWJya19vcGVuUnVsZXMK
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJdGVyYXRvciogVV9FWFBP
UlQyCit1YnJrX29wZW4oVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUsCisgICAgICBjb25zdCBjaGFy
ICpsb2NhbGUsCisgICAgICBjb25zdCBVQ2hhciAqdGV4dCwKKyAgICAgIGludDMyX3QgdGV4dExl
bmd0aCwKKyAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3BlbiBhIG5ldyBV
QnJlYWtJdGVyYXRvciBmb3IgbG9jYXRpbmcgdGV4dCBib3VuZGFyaWVzIHVzaW5nIHNwZWNpZmll
ZCBicmVha2luZyBydWxlcy4KKyAqIFRoZSBydWxlIHN5bnRheCBpcyAuLi4gKFRCRCkKKyAqIEBw
YXJhbSBydWxlcyBBIHNldCBvZiBydWxlcyBzcGVjaWZ5aW5nIHRoZSB0ZXh0IGJyZWFraW5nIGNv
bnZlbnRpb25zLgorICogQHBhcmFtIHJ1bGVzTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyBpbiBydWxlcywgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHRleHQgVGhl
IHRleHQgdG8gYmUgaXRlcmF0ZWQgb3Zlci4gIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIHVi
cmtfc2V0VGV4dCgpIGlzCisgKiAgICAgICAgdXNlZCB0byBzcGVjaWZ5IHRoZSB0ZXh0IHRvIGJl
IGl0ZXJhdGVkLgorICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IGluIHRleHQsIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KKyAqIEBwYXJhbSBwYXJzZUVyciAg
IFJlY2VpdmVzIHBvc2l0aW9uIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciBhbnkgc3ludGF4
IGVycm9ycworICogICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQgd2hpbGUgcGFyc2luZyB0aGUg
cnVsZXMuCisgKiBAcGFyYW0gc3RhdHVzIEEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJv
cnMuCisgKiBAcmV0dXJuIEEgVUJyZWFrSXRlcmF0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcnVsZXMu
CisgKiBAc2VlIHVicmtfb3BlbgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIFVC
cmVha0l0ZXJhdG9yKiBVX0VYUE9SVDIKK3Vicmtfb3BlblJ1bGVzKGNvbnN0IFVDaGFyICAgICAq
cnVsZXMsCisgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgcnVsZXNMZW5ndGgsCisgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAgICAgKnRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90
ICAgICAgICAgIHRleHRMZW5ndGgsCisgICAgICAgICAgICAgICBVUGFyc2VFcnJvciAgICAgKnBh
cnNlRXJyLAorICAgICAgICAgICAgICAgVUVycm9yQ29kZSAgICAgICpzdGF0dXMpOworCisvKioK
KyAqIFRocmVhZCBzYWZlIGNsb25pbmcgb3BlcmF0aW9uCisgKiBAcGFyYW0gYmkgaXRlcmF0b3Ig
dG8gYmUgY2xvbmVkCisgKiBAcGFyYW0gc3RhY2tCdWZmZXIgPGVtPkRlcHJlY2F0ZWQgZnVuY3Rp
b25hbGl0eSBhcyBvZiBJQ1UgNTIsIHVzZSBOVUxMLjwvZW0+PGJyPgorICogIHVzZXIgYWxsb2Nh
dGVkIHNwYWNlIGZvciB0aGUgbmV3IGNsb25lLiBJZiBOVUxMIG5ldyBtZW1vcnkgd2lsbCBiZSBh
bGxvY2F0ZWQuCisgKiAgSWYgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gsIG5ldyBtZW1vcnkg
d2lsbCBiZSBhbGxvY2F0ZWQuCisgKiAgQ2xpZW50cyBjYW4gdXNlIHRoZSBVX0JSS19TQUZFQ0xP
TkVfQlVGRkVSU0laRS4KKyAqIEBwYXJhbSBwQnVmZmVyU2l6ZSA8ZW0+RGVwcmVjYXRlZCBmdW5j
dGlvbmFsaXR5IGFzIG9mIElDVSA1MiwgdXNlIE5VTEwgb3IgMS48L2VtPjxicj4KKyAqICBwb2lu
dGVyIHRvIHNpemUgb2YgYWxsb2NhdGVkIHNwYWNlLgorICogIElmICpwQnVmZmVyU2l6ZSA9PSAw
LCBhIHN1ZmZpY2llbnQgc2l6ZSBmb3IgdXNlIGluIGNsb25pbmcgd2lsbAorICogIGJlIHJldHVy
bmVkICgncHJlLWZsaWdodGluZycpCisgKiAgSWYgKnBCdWZmZXJTaXplIGlzIG5vdCBlbm91Z2gg
Zm9yIGEgc3RhY2stYmFzZWQgc2FmZSBjbG9uZSwKKyAqICBuZXcgbWVtb3J5IHdpbGwgYmUgYWxs
b2NhdGVkLgorICogQHBhcmFtIHN0YXR1cyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBvcGVyYXRp
b24gd2VudCBvbiBzbW9vdGhseSBvciB0aGVyZSB3ZXJlIGVycm9ycworICogIEFuIGluZm9ybWF0
aW9uYWwgc3RhdHVzIHZhbHVlLCBVX1NBRkVDTE9ORV9BTExPQ0FURURfRVJST1IsIGlzIHVzZWQg
aWYgYW55IGFsbG9jYXRpb25zIHdlcmUgbmVjZXNzYXJ5LgorICogQHJldHVybiBwb2ludGVyIHRv
IHRoZSBuZXcgY2xvbmUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJ
dGVyYXRvciAqIFVfRVhQT1JUMgordWJya19zYWZlQ2xvbmUoCisgICAgICAgICAgY29uc3QgVUJy
ZWFrSXRlcmF0b3IgKmJpLAorICAgICAgICAgIHZvaWQgKnN0YWNrQnVmZmVyLAorICAgICAgICAg
IGludDMyX3QgKnBCdWZmZXJTaXplLAorICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisK
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisKKy8qKgorICAqIEEgcmVjb21tZW5kZWQg
c2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUgbWVtb3J5IGJ1ZmZlciB0byBiZSBwYXNzZWQgdG8gdWJy
a19zYXZlQ2xvbmUoKS4KKyAgKiBAZGVwcmVjYXRlZCBJQ1UgNTIuIERvIG5vdCByZWx5IG9uIHVi
cmtfc2FmZUNsb25lKCkgY2xvbmluZyBpbnRvIGFueSBwcm92aWRlZCBidWZmZXIuCisgICovCisj
ZGVmaW5lIFVfQlJLX1NBRkVDTE9ORV9CVUZGRVJTSVpFIDEKKworI2VuZGlmIC8qIFVfSElERV9E
RVBSRUNBVEVEX0FQSSAqLworCisvKioKKyogQ2xvc2UgYSBVQnJlYWtJdGVyYXRvci4KKyogT25j
ZSBjbG9zZWQsIGEgVUJyZWFrSXRlcmF0b3IgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFy
YW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIGNsb3NlLgorICogQHN0YWJsZSBJQ1UgMi4wCisq
LworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VicmtfY2xvc2UoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8q
KgorICogXGNsYXNzIExvY2FsVUJyZWFrSXRlcmF0b3JQb2ludGVyCisgKiAiU21hcnQgcG9pbnRl
ciIgY2xhc3MsIGNsb3NlcyBhIFVCcmVha0l0ZXJhdG9yIHZpYSB1YnJrX2Nsb3NlKCkuCisgKiBG
b3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoK
KyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFi
bGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVQnJlYWtJ
dGVyYXRvclBvaW50ZXIsIFVCcmVha0l0ZXJhdG9yLCB1YnJrX2Nsb3NlKTsKKworVV9OQU1FU1BB
Q0VfRU5ECisKKyNlbmRpZgorCisvKioKKyAqIFNldHMgYW4gZXhpc3RpbmcgaXRlcmF0b3IgdG8g
cG9pbnQgdG8gYSBuZXcgcGllY2Ugb2YgdGV4dAorICogQHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0
byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIHNldAorICogQHBhcmFtIHRleHRM
ZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgdGV4dAorICogQHBhcmFtIHN0YXR1cyBUaGUgZXJyb3Ig
Y29kZQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1
YnJrX3NldFRleHQoVUJyZWFrSXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiAgICB0ZXh0LAorICAgICAgICAgICAgIGludDMyX3QgICAgICAgICB0ZXh0TGVuZ3RoLAorICAg
ICAgICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKy8qKgorICogU2V0cyBhbiBl
eGlzdGluZyBpdGVyYXRvciB0byBwb2ludCB0byBhIG5ldyBwaWVjZSBvZiB0ZXh0LgorICoKKyAq
IEFsbCBpbmRleCBwb3NpdGlvbnMgcmV0dXJuZWQgYnkgYnJlYWsgaXRlcmF0b3IgZnVuY3Rpb25z
IGFyZQorICogbmF0aXZlIGluZGljZXMgZnJvbSB0aGUgVVRleHQuIEZvciBleGFtcGxlLCB3aGVu
IGJyZWFraW5nIFVURi04CisgKiBlbmNvZGVkIHRleHQsIHRoZSBicmVhayBwb3NpdGlvbnMgcmV0
dXJuZWQgYnkgXHJlZiB1YnJrX25leHQsIFxyZWYgdWJya19wcmV2aW91cywgZXRjLgorICogd2ls
bCBiZSBVVEYtOCBzdHJpbmcgaW5kaWNlcywgbm90IFVURi0xNiBwb3NpdGlvbnMuCisgKgorICog
QHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRv
IGJlIHNldC4KKyAqICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gbWFrZXMgYSBzaGFsbG93IGNs
b25lIG9mIHRoZSBzdXBwbGllZCBVVGV4dC4gIFRoaXMgbWVhbnMKKyAqICAgICAgICAgICAgIHRo
YXQgdGhlIGNhbGxlciBpcyBmcmVlIHRvIGltbWVkaWF0ZWx5IGNsb3NlIG9yIG90aGVyd2lzZSBy
ZXVzZSB0aGUKKyAqICAgICAgICAgICAgIFVUZXh0IHRoYXQgd2FzIHBhc3NlZCBhcyBhIHBhcmFt
ZXRlciwgYnV0IHRoYXQgdGhlIHVuZGVybHlpbmcgdGV4dCBpdHNlbGYKKyAqICAgICAgICAgICAg
IG11c3Qgbm90IGJlIGFsdGVyZWQgd2hpbGUgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGUgYnJlYWsg
aXRlcmF0b3IuCisgKiBAcGFyYW0gc3RhdHVzIFRoZSBlcnJvciBjb2RlCisgKiBAc3RhYmxlIElD
VSAzLjQKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3Vicmtfc2V0VVRleHQoVUJyZWFr
SXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIFVUZXh0KiAgICAgICAgICB0ZXh0LAorICAgICAg
ICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKworLyoqCisgKiBEZXRlcm1pbmUg
dGhlIG1vc3QgcmVjZW50bHktcmV0dXJuZWQgdGV4dCBib3VuZGFyeS4KKyAqCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBp
bmRleCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IFxyZWYgdWJya19uZXh0LCBccmVmIHVicmtf
cHJldmlvdXMsCisgKiBccmVmIHVicmtfZmlyc3QsIG9yIFxyZWYgdWJya19sYXN0LgorICogQHN0
YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2N1cnJl
bnQoY29uc3QgVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVy
YXRvciB0byB0aGUgYm91bmRhcnkgZm9sbG93aW5nIHRoZSBjdXJyZW50IGJvdW5kYXJ5LgorICoK
KyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUg
Y2hhcmFjdGVyIGluZGV4IG9mIHRoZSBuZXh0IHRleHQgYm91bmRhcnksIG9yIFVCUktfRE9ORQor
ICogaWYgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4gcmV0dXJuZWQuCisgKiBAc2VlIHVi
cmtfcHJldmlvdXMKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVf
RVhQT1JUMgordWJya19uZXh0KFVCcmVha0l0ZXJhdG9yICpiaSk7CisKKy8qKgorICogU2V0IHRo
ZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgYm91bmRhcnkgcHJlY2VkaW5nIHRoZSBjdXJyZW50
IGJvdW5kYXJ5LgorICoKKyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgor
ICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBwcmVjZWRpbmcgdGV4dCBib3Vu
ZGFyeSwgb3IgVUJSS19ET05FCisgKiBpZiBhbGwgdGV4dCBib3VuZGFyaWVzIGhhdmUgYmVlbiBy
ZXR1cm5lZC4KKyAqIEBzZWUgdWJya19uZXh0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9T
VEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VicmtfcHJldmlvdXMoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisgKiBUaGlzIGlz
IG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgaW5kZXggMCBvZiB0aGUgdGV4dC4KKyAqIEBwYXJhbSBi
aSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGlu
ZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAq
IEBzZWUgdWJya19sYXN0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3VicmtfZmlyc3QoVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBT
ZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBpbW1lZGlhdGVseSA8RU0+YmV5
b25kPC9FTT4gdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisg
KiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIuCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBv
ZmZzZXQgaW1tZWRpYXRlbHkgPEVNPmJleW9uZDwvRU0+IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0
aGUKKyAqIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAqIEBzZWUgdWJya19maXJzdAorICogQHN0YWJs
ZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2xhc3QoVUJy
ZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRv
IHRoZSBmaXJzdCBib3VuZGFyeSBwcmVjZWRpbmcgdGhlIHNwZWNpZmllZCBvZmZzZXQuCisgKiBU
aGUgbmV3IHBvc2l0aW9uIGlzIGFsd2F5cyBzbWFsbGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RP
TkUuCisgKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBv
ZmZzZXQgVGhlIG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQg
Ym91bmRhcnkgcHJlY2VkaW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX2Zv
bGxvd2luZworICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX3ByZWNlZGluZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMy
X3Qgb2Zmc2V0KTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byB0aGUgZmlyc3Qg
Ym91bmRhcnkgZm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgorICogVGhlIHZhbHVlIHJl
dHVybmVkIGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuCisgKiBA
cGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBvZmZzZXQgVGhl
IG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQgYm91bmRhcnkg
Zm9sbG93aW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX3ByZWNlZGluZwor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJr
X2ZvbGxvd2luZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0
KTsKKworLyoqCisqIEdldCBhIGxvY2FsZSBmb3Igd2hpY2ggdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBpcyBhdmFpbGFibGUuCisqIEEgVUJyZWFrSXRlcmF0b3IgaW4gYSBsb2NhbGUgcmV0dXJu
ZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhlIGNvcnJlY3QKKyogdGV4dCBicmVh
a2luZyBmb3IgdGhlIGxvY2FsZS4KKyogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZGVz
aXJlZCBsb2NhbGUuCisqIEByZXR1cm4gQSBsb2NhbGUgZm9yIHdoaWNoIG51bWJlciB0ZXh0IGJy
ZWFraW5nIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVi
cmtfY291bnRBdmFpbGFibGUKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3Qg
Y2hhciogVV9FWFBPUlQyCit1YnJrX2dldEF2YWlsYWJsZShpbnQzMl90IGluZGV4KTsKKworLyoq
CisqIERldGVybWluZSBob3cgbWFueSBsb2NhbGVzIGhhdmUgdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBhdmFpbGFibGUuCisqIFRoaXMgZnVuY3Rpb24gaXMgbW9zdCB1c2VmdWwgYXMgZGV0ZXJt
aW5pbmcgdGhlIGxvb3AgZW5kaW5nIGNvbmRpdGlvbiBmb3IKKyogY2FsbHMgdG8gXHJlZiB1YnJr
X2dldEF2YWlsYWJsZS4KKyogQHJldHVybiBUaGUgbnVtYmVyIG9mIGxvY2FsZXMgZm9yIHdoaWNo
IHRleHQgYnJlYWtpbmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgorKiBAc2VlIHVicmtfZ2V0
QXZhaWxhYmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX2NvdW50QXZhaWxhYmxlKHZvaWQpOworCisKKy8qKgorKiBSZXR1cm5zIHRydWUg
aWYgdGhlIHNwZWNmaWVkIHBvc2l0aW9uIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uICBBcyBhIHNp
ZGUKKyogZWZmZWN0LCBsZWF2ZXMgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBi
b3VuZGFyeSBwb3NpdGlvbiBhdAorKiBvciBhZnRlciAib2Zmc2V0Ii4KKyogQHBhcmFtIGJpIFRo
ZSBicmVhayBpdGVyYXRvciB0byB1c2UuCisqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCB0byBj
aGVjay4KKyogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24u
CisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFICBVQm9vbCBVX0VYUE9SVDIKK3Vicmtf
aXNCb3VuZGFyeShVQnJlYWtJdGVyYXRvciAqYmksIGludDMyX3Qgb2Zmc2V0KTsKKworLyoqCisg
KiBSZXR1cm4gdGhlIHN0YXR1cyBmcm9tIHRoZSBicmVhayBydWxlIHRoYXQgZGV0ZXJtaW5lZCB0
aGUgbW9zdCByZWNlbnRseQorICogcmV0dXJuZWQgYnJlYWsgcG9zaXRpb24uICBUaGUgdmFsdWVz
IGFwcGVhciBpbiB0aGUgcnVsZSBzb3VyY2UKKyAqIHdpdGhpbiBicmFja2V0cywgezEyM30sIGZv
ciBleGFtcGxlLiAgRm9yIHJ1bGVzIHRoYXQgZG8gbm90IHNwZWNpZnkgYQorICogc3RhdHVzLCBh
IGRlZmF1bHQgdmFsdWUgb2YgMCBpcyByZXR1cm5lZC4KKyAqIDxwPgorICogRm9yIHdvcmQgYnJl
YWsgaXRlcmF0b3JzLCB0aGUgcG9zc2libGUgdmFsdWVzIGFyZSBkZWZpbmVkIGluIGVudW0gVVdv
cmRCcmVhay4KKyAqIEBzdGFibGUgSUNVIDIuMgorICovCitVX1NUQUJMRSAgaW50MzJfdCBVX0VY
UE9SVDIKK3VicmtfZ2V0UnVsZVN0YXR1cyhVQnJlYWtJdGVyYXRvciAqYmkpOworCisvKioKKyAq
IEdldCB0aGUgc3RhdHVzZXMgZnJvbSB0aGUgYnJlYWsgcnVsZXMgdGhhdCBkZXRlcm1pbmVkIHRo
ZSBtb3N0IHJlY2VudGx5CisgKiByZXR1cm5lZCBicmVhayBwb3NpdGlvbi4gIFRoZSB2YWx1ZXMg
YXBwZWFyIGluIHRoZSBydWxlIHNvdXJjZQorICogd2l0aGluIGJyYWNrZXRzLCB7MTIzfSwgZm9y
IGV4YW1wbGUuICBUaGUgZGVmYXVsdCBzdGF0dXMgdmFsdWUgZm9yIHJ1bGVzCisgKiB0aGF0IGRv
IG5vdCBleHBsaWNpdGx5IHByb3ZpZGUgb25lIGlzIHplcm8uCisgKiA8cD4KKyAqIEZvciB3b3Jk
IGJyZWFrIGl0ZXJhdG9ycywgdGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiBlbnVt
IFVXb3JkQnJlYWsuCisgKiBAcGFyYW0gYmkgICAgICAgIFRoZSBicmVhayBpdGVyYXRvciB0byB1
c2UKKyAqIEBwYXJhbSBmaWxsSW5WZWMgYW4gYXJyYXkgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhl
IHN0YXR1cyB2YWx1ZXMuCisgKiBAcGFyYW0gY2FwYWNpdHkgIHRoZSBsZW5ndGggb2YgdGhlIHN1
cHBsaWVkIHZlY3Rvci4gIEEgbGVuZ3RoIG9mIHplcm8gY2F1c2VzCisgKiAgICAgICAgICAgICAg
ICAgIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0dXMgdmFsdWVzLCBp
biB0aGUKKyAqICAgICAgICAgICAgICAgICAgbm9ybWFsIHdheSwgd2l0aG91dCBhdHRlbXRwaW5n
IHRvIHN0b3JlIGFueSB2YWx1ZXMuCisgKiBAcGFyYW0gc3RhdHVzICAgIHJlY2VpdmVzIGVycm9y
IGNvZGVzLgorICogQHJldHVybiAgICAgICAgICBUaGUgbnVtYmVyIG9mIHJ1bGUgc3RhdHVzIHZh
bHVlcyBmcm9tIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lZAorICogICAgICAgICAgICAgICAgICB0aGUg
bW9zdCByZWNlbnQgYm91bmRhcnkgcmV0dXJuZWQgYnkgdGhlIGJyZWFrIGl0ZXJhdG9yLgorICog
QHN0YWJsZSBJQ1UgMy4wCisgKi8KK1VfU1RBQkxFICBpbnQzMl90IFVfRVhQT1JUMgordWJya19n
ZXRSdWxlU3RhdHVzVmVjKFVCcmVha0l0ZXJhdG9yICpiaSwgaW50MzJfdCAqZmlsbEluVmVjLCBp
bnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIFJldHVybiB0
aGUgbG9jYWxlIG9mIHRoZSBicmVhayBpdGVyYXRvci4gWW91IGNhbiBjaG9vc2UgYmV0d2VlbiB0
aGUgdmFsaWQgYW5kCisgKiB0aGUgYWN0dWFsIGxvY2FsZS4KKyAqIEBwYXJhbSBiaSBicmVhayBp
dGVyYXRvcgorICogQHBhcmFtIHR5cGUgbG9jYWxlIHR5cGUgKHZhbGlkIG9yIGFjdHVhbCkKKyAq
IEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZQorICogQHJldHVybiBsb2NhbGUgc3RyaW5nCisgKiBA
c3RhYmxlIElDVSAyLjgKKyAqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1YnJr
X2dldExvY2FsZUJ5VHlwZShjb25zdCBVQnJlYWtJdGVyYXRvciAqYmksIFVMb2NEYXRhTG9jYWxl
VHlwZSB0eXBlLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisvKioKKyAgKiAgU2V0IHRoZSBzdWJq
ZWN0IHRleHQgc3RyaW5nIHVwb24gd2hpY2ggdGhlIGJyZWFrIGl0ZXJhdG9yIGlzIG9wZXJhdGlu
ZworICAqICB3aXRob3V0IGNoYW5naW5nIGFueSBvdGhlciBhc3BlY3Qgb2YgdGhlIHN0YXRlLgor
ICAqICBUaGUgbmV3IGFuZCBwcmV2aW91cyB0ZXh0IHN0cmluZ3MgbXVzdCBoYXZlIHRoZSBzYW1l
IGNvbnRlbnQuCisgICoKKyAgKiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGlu
IGVudmlyb25tZW50cyB3aGVyZSBJQ1UgaXMgb3BlcmF0aW5nIG9uCisgICogIHN0cmluZ3MgdGhh
dCBtYXkgbW92ZSBhcm91bmQgaW4gbWVtb3J5LiAgSXQgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9y
IG5vdGlmeWluZworICAqICBJQ1UgdGhhdCB0aGUgc3RyaW5nIGhhcyBiZWVuIHJlbG9jYXRlZCwg
YW5kIHByb3ZpZGluZyBhIG5ldyBVVGV4dCB0byBhY2Nlc3MgdGhlCisgICogIHN0cmluZyBpbiBp
dHMgbmV3IHBvc2l0aW9uLgorICAqCisgICogIE5vdGUgdGhhdCB0aGUgYnJlYWsgaXRlcmF0b3Ig
bmV2ZXIgY29waWVzIHRoZSB1bmRlcmx5aW5nIHRleHQKKyAgKiAgb2YgYSBzdHJpbmcgYmVpbmcg
cHJvY2Vzc2VkLCBidXQgYWx3YXlzIG9wZXJhdGVzIGRpcmVjdGx5IG9uIHRoZSBvcmlnaW5hbCB0
ZXh0CisgICogIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLiBSZWZyZXNoaW5nIHNpbXBseSBkcm9wcyB0
aGUgcmVmZXJlbmNlcyB0byB0aGUgb2xkIHRleHQKKyAgKiAgYW5kIHJlcGxhY2VzIHRoZW0gd2l0
aCByZWZlcmVuY2VzIHRvIHRoZSBuZXcuCisgICoKKyAgKiAgQ2F1dGlvbjogIHRoaXMgZnVuY3Rp
b24gaXMgbm9ybWFsbHkgdXNlZCBvbmx5IGJ5IHZlcnkgc3BlY2lhbGl6ZWQKKyAgKiAgICAgICAg
ICAgIHN5c3RlbS1sZXZlbCBjb2RlLiAgIE9uZSBleGFtcGxlIHVzZSBjYXNlIGlzIHdpdGggZ2Fy
YmFnZSBjb2xsZWN0aW9uCisgICogICAgICAgICAgICB0aGF0IG1vdmVzIHRoZSB0ZXh0IGluIG1l
bW9yeS4KKyAgKgorICAqIEBwYXJhbSBiaSAgICAgICAgIFRoZSBicmVhayBpdGVyYXRvci4KKyAg
KiBAcGFyYW0gdGV4dCAgICAgICBUaGUgbmV3IChtb3ZlZCkgdGV4dCBzdHJpbmcuCisgICogQHBh
cmFtIHN0YXR1cyAgICAgUmVjZWl2ZXMgZXJyb3JzIGRldGVjdGVkIGJ5IHRoaXMgZnVuY3Rpb24u
CisgICoKKyAgKiBAc3RhYmxlIElDVSA0OQorICAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIK
K3VicmtfcmVmcmVzaFVUZXh0KFVCcmVha0l0ZXJhdG9yICpiaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVVRleHQgICAgICAgICAgKnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgICAgICpzdGF0dXMpOworCisjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0JSRUFLX0lU
RVJBVElPTiAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dXRleHQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRleHQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDMx
OTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIyMjE1ZTY0ZmYzMzllCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5oCkBAIC0wLDAgKzEsMTYwMCBAQAorLyoKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMiwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMu
ICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIGZp
bGUgbmFtZTogIHV0ZXh0LmgKKyogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIHRhYiBzaXpl
OiAgIDggKG5vdCB1c2VkKQorKiAgIGluZGVudGF0aW9uOjQKKyoKKyogICBjcmVhdGVkIG9uOiAy
MDA0b2N0MDYKKyogICBjcmVhdGVkIGJ5OiBNYXJrdXMgVy4gU2NoZXJlcgorKi8KKworI2lmbmRl
ZiBfX1VURVhUX0hfXworI2RlZmluZSBfX1VURVhUX0hfXworCisvKioKKyAqIFxmaWxlCisgKiBc
YnJpZWYgQyBBUEk6IEFic3RyYWN0IFVuaWNvZGUgVGV4dCBBUEkKKyAqCisgKiBUaGUgVGV4dCBB
Y2Nlc3MgQVBJIHByb3ZpZGVzIGEgbWVhbnMgdG8gYWxsb3cgdGV4dCB0aGF0IGlzIHN0b3JlZCBp
biBhbHRlcm5hdGl2ZQorICogZm9ybWF0cyB0byB3b3JrIHdpdGggSUNVIHNlcnZpY2VzLiAgSUNV
IG5vcm1hbGx5IG9wZXJhdGVzIG9uIHRleHQgdGhhdCBpcworICogc3RvcmVkIGluIFVURi0xNiBm
b3JtYXQsIGluIChVQ2hhciAqKSBhcnJheXMgZm9yIHRoZSBDIEFQSXMgb3IgYXMgdHlwZQorICog
VW5pY29kZVN0cmluZyBmb3IgQysrIEFQSXMuCisgKgorICogSUNVIFRleHQgQWNjZXNzIGFsbG93
cyBvdGhlciBmb3JtYXRzLCBzdWNoIGFzIFVURi04IG9yIG5vbi1jb250aWd1b3VzCisgKiBVVEYt
MTYgc3RyaW5ncywgdG8gYmUgcGxhY2VkIGluIGEgVVRleHQgd3JhcHBlciBhbmQgdGhlbiBwYXNz
ZWQgdG8gSUNVIHNlcnZpY2VzLgorICoKKyAqIFRoZXJlIGFyZSB0aHJlZSBnZW5lcmFsIGNsYXNz
ZXMgb2YgdXNhZ2UgZm9yIFVUZXh0OgorICoKKyAqICAgICBBcHBsaWNhdGlvbiBMZXZlbCBVc2Uu
ICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB1c2FnZSAtIGFwcGxpY2F0aW9ucyB3b3VsZAorICogICAg
IHVzZSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMgb24gdGhlaXIgaW5wdXQgdGV4
dCwgYW5kIHBhc3MKKyAqICAgICB0aGUgcmVzdWx0aW5nIFVUZXh0IHRvIHRoZSBkZXNpcmVkIElD
VSBzZXJ2aWNlLgorICoKKyAqICAgICBTZWNvbmQgaXMgdXNhZ2UgaW4gSUNVIFNlcnZpY2VzLCBz
dWNoIGFzIGJyZWFrIGl0ZXJhdGlvbiwgdGhhdCB3aWxsIG5lZWQgdG8KKyAqICAgICBvcGVyYXRl
IG9uIGlucHV0IHByZXNlbnRlZCB0byB0aGVtIGFzIGEgVVRleHQuICBUaGVzZSBpbXBsZW1lbnRh
dGlvbnMKKyAqICAgICB3aWxsIG5lZWQgdG8gdXNlIHRoZSBpdGVyYXRpb24gYW5kIHJlbGF0ZWQg
VVRleHQgZnVuY3Rpb25zIHRvIGdhaW4KKyAqICAgICBhY2Nlc3MgdG8gdGhlIGFjdHVhbCB0ZXh0
LgorICoKKyAqICAgICBUaGUgdGhpcmQgY2xhc3Mgb2YgVVRleHQgdXNlcnMgYXJlICJ0ZXh0IHBy
b3ZpZGVycy4iICBUaGVzZSBhcmUgdGhlCisgKiAgICAgVVRleHQgaW1wbGVtZW50YXRpb25zIGZv
ciB0aGUgdmFyaW91cyB0ZXh0IHN0b3JhZ2UgZm9ybWF0cy4gIEFuIGFwcGxpY2F0aW9uCisgKiAg
ICAgb3Igc3lzdGVtIHdpdGggYSB1bmlxdWUgdGV4dCBzdG9yYWdlIGZvcm1hdCBjYW4gaW1wbGVt
ZW50IGEgc2V0IG9mCisgKiAgICAgVVRleHQgcHJvdmlkZXIgZnVuY3Rpb25zIGZvciB0aGF0IGZv
cm1hdCwgd2hpY2ggd2lsbCB0aGVuIGFsbG93CisgKiAgICAgSUNVIHNlcnZpY2VzIHRvIG9wZXJh
dGUgb24gdGhhdCBmb3JtYXQuCisgKgorICoKKyAqIDxlbT5JdGVyYXRpbmcgb3ZlciB0ZXh0PC9l
bT4KKyAqCisgKiBIZXJlIGlzIHNhbXBsZSBjb2RlIGZvciBhIGZvcndhcmQgaXRlcmF0aW9uIG92
ZXIgdGhlIGNvbnRlbnRzIG9mIGEgVVRleHQKKyAqCisgKiBcY29kZQorICogICAgVUNoYXIzMiAg
YzsKKyAqICAgIFVUZXh0ICAgICp1dCA9IHdoYXRldmVyKCk7CisgKgorICogICAgZm9yIChjPXV0
ZXh0X25leHQzMkZyb20odXQsIDApOyBjPj0wOyBjPXV0ZXh0X25leHQzMih1dCkpIHsKKyAqICAg
ICAgIC8vIGRvIHdoYXRldmVyIHdpdGggdGhlIGNvZGVwb2ludCBjIGhlcmUuCisgKiAgICB9Cisg
KiBcZW5kY29kZQorICoKKyAqIEFuZCBoZXJlIGlzIHNpbWlsYXIgY29kZSB0byBpdGVyYXRlIGlu
IHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgZnJvbSB0aGUgZW5kCisgKiBvZiB0aGUgdGV4dCB0b3dh
cmRzIHRoZSBiZWdpbm5pbmcuCisgKgorICogXGNvZGUKKyAqICAgIFVDaGFyMzIgIGM7CisgKiAg
ICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZlcigpOworICogICAgaW50ICAgICAgdGV4dExlbmd0aCA9
IHV0ZXh0X25hdGl2ZUxlbmd0aCh1dCk7CisgKiAgICBmb3IgKGM9dXRleHRfcHJldmlvdXMzMkZy
b20odXQsIHRleHRMZW5ndGgpOyBjPj0wOyBjPXV0ZXh0X3ByZXZpb3VzMzIodXQpKSB7CisgKiAg
ICAgICAvLyBkbyB3aGF0ZXZlciB3aXRoIHRoZSBjb2RlcG9pbnQgYyBoZXJlLgorICogICAgfQor
ICogXGVuZGNvZGUKKyAqCisgKiA8ZW0+Q2hhcmFjdGVycyBhbmQgSW5kZXhpbmc8L2VtPgorICoK
KyAqIEluZGV4aW5nIGludG8gdGV4dCBieSBVVGV4dCBmdW5jdGlvbnMgaXMgbmVhcmx5IGFsd2F5
cyBpbiB0ZXJtcyBvZiB0aGUgbmF0aXZlCisgKiBpbmRleGluZyBvZiB0aGUgdW5kZXJseWluZyB0
ZXh0IHN0b3JhZ2UuICBUaGUgc3RvcmFnZSBmb3JtYXQgY291bGQgYmUgVVRGLTgKKyAqIG9yIFVU
Ri0zMiwgZm9yIGV4YW1wbGUuICBXaGVuIGNvZGluZyB0byB0aGUgVVRleHQgYWNjZXNzIEFQSSwg
bm8gYXNzdW1wdGlvbnMKKyAqIGNhbiBiZSBtYWRlIHJlZ2FyZGluZyB0aGUgc2l6ZSBvZiBjaGFy
YWN0ZXJzLCBvciBob3cgZmFyIGFuIGluZGV4CisgKiBtYXkgbW92ZSB3aGVuIGl0ZXJhdGluZyBi
ZXR3ZWVuIGNoYXJhY3RlcnMuCisgKgorICogQWxsIGluZGljZXMgc3VwcGxpZWQgdG8gVVRleHQg
ZnVuY3Rpb25zIGFyZSBwaW5uZWQgdG8gdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHRleHQuICBBbiBv
dXQtb2YtYm91bmRzIGluZGV4IGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGFuIGVycm9yLCBidXQg
aXMKKyAqIGFkanVzdGVkIHRvIGJlIGluIHRoZSByYW5nZSAgMCA8PSBpbmRleCA8PSBsZW5ndGgg
b2YgaW5wdXQgdGV4dC4KKyAqCisgKgorICogV2hlbiBhbiBpbmRleCBwb3NpdGlvbiBpcyByZXR1
cm5lZCBmcm9tIGEgVVRleHQgZnVuY3Rpb24sIGl0IHdpbGwgYmUKKyAqIGEgbmF0aXZlIGluZGV4
IHRvIHRoZSB1bmRlcmx5aW5nIHRleHQuICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11bml0IGNoYXJh
Y3RlcnMsCisgKiBpdCB3aWxsICBhbHdheXMgcmVmZXIgdG8gdGhlIGZpcnN0IHBvc2l0aW9uIG9m
IHRoZSBjaGFyYWN0ZXIsCisgKiBuZXZlciB0byB0aGUgaW50ZXJpb3IuICBUaGlzIGlzIGVzc2Vu
dGlhbGx5IHRoZSBzYW1lIHRoaW5nIGFzIHNheWluZyB0aGF0CisgKiBhIHJldHVybmVkIGluZGV4
IHdpbGwgYWx3YXlzIHBvaW50IHRvIGEgYm91bmRhcnkgYmV0d2VlbiBjaGFyYWN0ZXJzLgorICoK
KyAqIFdoZW4gYSBuYXRpdmUgaW5kZXggaXMgc3VwcGxpZWQgdG8gYSBVVGV4dCBmdW5jdGlvbiwg
YWxsIGluZGljZXMgdGhhdAorICogcmVmZXIgdG8gYW55IHBhcnQgb2YgYSBtdWx0aS11bml0IGNo
YXJhY3RlciByZXByZXNlbnRhdGlvbiBhcmUgY29uc2lkZXJlZAorICogdG8gYmUgZXF1aXZhbGVu
dC4gIEluIHRoZSBjYXNlIG9mIG11bHRpLXVuaXQgY2hhcmFjdGVycywgYW4gaW5jb21pbmcgaW5k
ZXgKKyAqIHdpbGwgYmUgbG9naWNhbGx5IG5vcm1hbGl6ZWQgdG8gcmVmZXIgdG8gdGhlIHN0YXJ0
IG9mIHRoZSBjaGFyYWN0ZXIuCisgKiAKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHRlc3Qgd2hldGhl
ciBhIG5hdGl2ZSBpbmRleCBpcyBvbiBhIGNvZGUgcG9pbnQgYm91bmRhcnkKKyAqIGJ5IGRvaW5n
IGEgdXRleHRfc2V0TmF0aXZlSW5kZXgoKSBmb2xsb3dlZCBieSBhIHV0ZXh0X2dldE5hdGl2ZUlu
ZGV4KCkuCisgKiBJZiB0aGUgaW5kZXggaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLCBpdCB3YXMgb24g
YSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAgSWYKKyAqIGFuIGFkanVzdGVkIGluZGV4IGlzIHJldHVy
bmVkLCB0aGUgb3JpZ2luYWwgaW5kZXggcmVmZXJyZWQgdG8gdGhlCisgKiBpbnRlcmlvciBvZiBh
IGNoYXJhY3Rlci4KKyAqCisgKiA8ZW0+Q29udmVudGlvbnMgZm9yIGNhbGxpbmcgVVRleHQgZnVu
Y3Rpb25zPC9lbT4KKyAqCisgKiBNb3N0IFVUZXh0IGFjY2VzcyBmdW5jdGlvbnMgaGF2ZSBhcyB0
aGVpciBmaXJzdCBwYXJhbWV0ZXIgYSAoVVRleHQgKikgcG9pbnRlciwKKyAqIHdoaWNoIHNwZWNp
ZmllcyB0aGUgVVRleHQgdG8gYmUgdXNlZC4gIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZQor
ICogcG9pbnRlciBtdXN0IHJlZmVyIHRvIGEgdmFsaWQsIG9wZW4gVVRleHQuICBBdHRlbXB0aW5n
IHRvCisgKiB1c2UgYSBjbG9zZWQgVVRleHQgb3IgcGFzc2luZyBhIE5VTEwgcG9pbnRlciBpcyBh
IHByb2dyYW1taW5nIGVycm9yIGFuZAorICogd2lsbCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRz
IG9yIE5VTEwgcG9pbnRlciBleGNlcHRpb25zLgorICogCisgKiBUaGUgVVRleHRfT3BlbiBmYW1p
bHkgb2YgZnVuY3Rpb25zIGNhbiBlaXRoZXIgb3BlbiBhbiBleGlzdGluZyAoY2xvc2VkKQorICog
VVRleHQsIG9yIGhlYXAgYWxsb2NhdGUgYSBuZXcgVVRleHQuICBIZXJlIGlzIHNhbXBsZSBjb2Rl
IGZvciBjcmVhdGluZworICogYSBzdGFjay1hbGxvY2F0ZWQgVVRleHQuCisgKgorICogXGNvZGUK
KyAqICAgIGNoYXIgICAgICpzID0gd2hhdGV2ZXIoKTsgIC8vIEEgdXRmLTggc3RyaW5nIAorICog
ICAgVV9FcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogICAgVVRleHQgICAgdXQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAqICAgIHV0ZXh0X29wZW5VVEY4KHV0LCBzLCAtMSwgJnN0
YXR1cyk7CisgKiAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAqICAgICAgICAvLyBlcnJv
ciBoYW5kbGluZworICogICAgfSBlbHNlIHsKKyAqICAgICAgICAvLyB3b3JrIHdpdGggdGhlIFVU
ZXh0CisgKiAgICB9CisgKiBcZW5kY29kZQorICoKKyAqIEFueSBleGlzdGluZyBVVGV4dCBwYXNz
ZWQgdG8gYW4gb3BlbiBmdW5jdGlvbiBfbXVzdF8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLCAKKyAq
IGVpdGhlciBieSB0aGUgVVRFWFRfSU5JVElBTElaRVIsIG9yIGJ5IGhhdmluZyBiZWVuIG9yaWdp
bmFsbHkgaGVhcC1hbGxvY2F0ZWQKKyAqIGJ5IGFuIG9wZW4gZnVuY3Rpb24uICBQYXNzaW5nIE5V
TEwgd2lsbCBjYXVzZSB0aGUgb3BlbiBmdW5jdGlvbiB0bworICogaGVhcC1hbGxvY2F0ZSBhbmQg
ZnVsbHkgaW5pdGlhbGl6ZSBhIG5ldyBVVGV4dC4KKyAqCisgKi8KKworCisKKyNpbmNsdWRlICJ1
bmljb2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWNoYXIuaCIKKyNpZiBVX1NIT1df
Q1BMVVNQTFVTX0FQSQorI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCisjaW5jbHVk
ZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUg
InVuaWNvZGUvY2hhcml0ZXIuaCIKKyNlbmRpZgorCisKK1VfQ0RFQ0xfQkVHSU4KKworc3RydWN0
IFVUZXh0OwordHlwZWRlZiBzdHJ1Y3QgVVRleHQgVVRleHQ7IC8qKjwgQyB0eXBlZGVmIGZvciBz
dHJ1Y3QgVVRleHQuIEBzdGFibGUgSUNVIDMuNiAqLworCisKKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAqCisgKiAgIEMgRnVuY3Rpb25zIGZvciBjcmVhdGluZyBVVGV4dCB3cmFw
cGVycyBhcm91bmQgdmFyaW91cyBraW5kcyBvZiB0ZXh0IHN0cmluZ3MuCisgKgorICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgICogQ2xvc2UgZnVuY3Rpb24gZm9y
IFVUZXh0IGluc3RhbmNlcy4KKyAgKiBDbGVhbnMgdXAsIHJlbGVhc2VzIGFueSByZXNvdXJjZXMg
YmVpbmcgaGVsZCBieSBhbiBvcGVuIFVUZXh0LgorICAqIDxwPgorICAqICAgSWYgdGhlIFVUZXh0
IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZCBieSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4gZnVuY3Rp
b25zLAorICAqICAgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSB1dGV4dCB3aWxsIGFs
c28gYmUgZnJlZWQuCisgICogICBJZiB0aGUgVVRleHQgc3RvcmFnZSBvcmlnaW5hdGVkIHdpdGgg
dGhlIGFwcGxpY2F0aW9uLCBhcyBpdCB3b3VsZCB3aXRoCisgICogICBhIGxvY2FsIG9yIHN0YXRp
YyBpbnN0YW5jZSwgdGhlIHN0b3JhZ2Ugd2lsbCBub3QgYmUgZGVsZXRlZC4KKyAgKgorICAqICAg
QW4gb3BlbiBVVGV4dCBjYW4gYmUgcmVzZXQgdG8gcmVmZXIgdG8gbmV3IHN0cmluZyBieSB1c2lu
ZyBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKQorICAqICAgZnVuY3Rpb25zIHdpdGhvdXQgZmlyc3Qg
Y2xvc2luZyB0aGUgVVRleHQuICAKKyAgKgorICAqIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJl
IGNsb3NlZC4KKyAgKiBAcmV0dXJuICAgIE5VTEwgaWYgdGhlIFVUZXh0IHN0cnVjdCB3YXMgZGVs
ZXRlZCBieSB0aGUgY2xvc2UuICBJZiB0aGUgVVRleHQgc3RydWN0CisgICogICAgICAgICAgICB3
YXMgb3JpZ2luYWxseSBwcm92aWRlZCBieSB0aGUgY2FsbGVyIHRvIHRoZSBvcGVuIGZ1bmN0aW9u
LCBpdCBpcworICAqICAgICAgICAgICAgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIG1h
eSBiZSBzYWZlbHkgdXNlZCBhZ2FpbiBpbgorICAqICAgICAgICAgICAgYSBzdWJzZXF1ZW50IHV0
ZXh0X29wZW4uCisgICoKKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RBQkxFIFVUZXh0
ICogVV9FWFBPUlQyCit1dGV4dF9jbG9zZShVVGV4dCAqdXQpOworCisjaWYgVV9TSE9XX0NQTFVT
UExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xhc3MgTG9jYWxVVGV4
dFBvaW50ZXIKKyAqICJTbWFydCBwb2ludGVyIiBjbGFzcywgY2xvc2VzIGEgVVRleHQgdmlhIHV0
ZXh0X2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFz
ZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2Nh
bFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BP
SU5URVIoTG9jYWxVVGV4dFBvaW50ZXIsIFVUZXh0LCB1dGV4dF9jbG9zZSk7CisKK1VfTkFNRVNQ
QUNFX0VORAorCisjZW5kaWYKKworLyoqCisgKiBPcGVuIGEgcmVhZC1vbmx5IFVUZXh0IGltcGxl
bWVudGF0aW9uIGZvciBVVEYtOCBzdHJpbmdzLgorICogCisgKiBcaHRtbG9ubHkKKyAqIEFueSBp
bnZhbGlkIFVURi04IGluIHRoZSBpbnB1dCB3aWxsIGJlIGhhbmRsZWQgaW4gdGhpcyB3YXk6Cisg
KiBhIHNlcXVlbmNlIG9mIGJ5dGVzIHRoYXQgaGFzIHRoZSBmb3JtIG9mIGEgdHJ1bmNhdGVkLCBi
dXQgb3RoZXJ3aXNlIHZhbGlkLAorICogVVRGLTggc2VxdWVuY2Ugd2lsbCBiZSByZXBsYWNlZCBi
eSBhIHNpbmdsZSB1bmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlciwgXHVGRkZELiAKKyAqIEFu
eSBvdGhlciBpbGxlZ2FsIGJ5dGVzIHdpbGwgZWFjaCBiZSByZXBsYWNlZCBieSBhIFx1RkZGRC4K
KyAqIFxlbmRodG1sb25seQorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4
dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAg
ICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0
IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJl
ZmVyZW5jZSB0aGUgc3BlY2lmaWVkIFVURi04IHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBV
VEYtOCBzdHJpbmcuICBNdXN0IG5vdCBiZSBOVUxMLgorICogQHBhcmFtIGxlbmd0aCBUaGUgbGVu
Z3RoIG9mIHRoZSBVVEYtOCBzdHJpbmcgaW4gYnl0ZXMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMK
KyAqICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBFcnJv
cnMgYXJlIHJldHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgIEEgcG9pbnRlciB0byB0aGUg
VVRleHQuICBJZiBhIHByZS1hbGxvY2F0ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBpdAorICogICAg
ICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAqIEBzdGFibGUg
SUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlblVURjgo
VVRleHQgKnV0LCBjb25zdCBjaGFyICpzLCBpbnQ2NF90IGxlbmd0aCwgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKKworCisvKioKKyAqIE9wZW4gYSByZWFkLW9ubHkgVVRleHQgZm9yIFVDaGFyICogc3Ry
aW5nLgorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJ
ZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElm
IG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hp
Y2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUg
c3BlY2lmaWVkIFVDaGFyIHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBVQ2hhciAoVVRGLTE2
KSBzdHJpbmcKKyAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGlu
cHV0IHN0cmluZywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcworICogICAgICAgICAgICAgICB6ZXJv
IHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4K
KyAqIEByZXR1cm4gICAgICAgQSBwb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgcHJlLWFsbG9j
YXRlZCBVVGV4dCB3YXMgcHJvdmlkZWQsIGl0CisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlz
IGJlIHVzZWQgYW5kIHJldHVybmVkLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuVUNoYXJzKFVUZXh0ICp1dCwgY29uc3QgVUNo
YXIgKnMsIGludDY0X3QgbGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisKKyNpZiBVX1NI
T1dfQ1BMVVNQTFVTX0FQSQorLyoqCisgKiBPcGVuIGEgd3JpdGFibGUgVVRleHQgZm9yIGEgbm9u
LWNvbnN0IFVuaWNvZGVTdHJpbmcuIAorICogCisgKiBAcGFyYW0gdXQgICAgICBQb2ludGVyIHRv
IGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgor
ICogICAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxp
emVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgICAgYmUg
cmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgaW5wdXQgc3RyaW5nLgorICogQHBhcmFt
IHMgICAgICAgQSBVbmljb2RlU3RyaW5nLgorICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElm
IGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgICAg
d2lsbCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LworVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKK3V0ZXh0X29wZW5Vbmljb2RlU3RyaW5nKFVU
ZXh0ICp1dCwgaWN1OjpVbmljb2RlU3RyaW5nICpzLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisK
Ky8qKgorICogT3BlbiBhIFVUZXh0IGZvciBhIGNvbnN0IFVuaWNvZGVTdHJpbmcuICAgVGhlIHJl
c3VsdGluZyBVVGV4dCB3aWxsIG5vdCBiZSB3cml0YWJsZS4KKyAqIAorICogQHBhcmFtIHV0ICAg
IFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJl
IGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFu
IGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAg
ICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIGlucHV0IHN0cmluZy4KKyAq
IEBwYXJhbSBzICAgICAgQSBjb25zdCBVbmljb2RlU3RyaW5nIHRvIGJlIHdyYXBwZWQuCisgKiBA
cGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAg
UG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwg
dGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4K
KyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRl
eHRfb3BlbkNvbnN0VW5pY29kZVN0cmluZyhVVGV4dCAqdXQsIGNvbnN0IGljdTo6VW5pY29kZVN0
cmluZyAqcywgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIE9wZW4gYSB3cml0YWJs
ZSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBmb3IgYW4gSUNVIFJlcGxhY2VhYmxlIG9iamVjdC4KKyAq
IEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcg
VVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVz
dCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4KKyAq
ICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVwbGFj
ZWFibGUgdGV4dC4KKyAqIEBwYXJhbSByZXAgICAgQSBSZXBsYWNlYWJsZSB0ZXh0IG9iamVjdC4K
KyAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgorICogQHJldHVybiAg
ICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlu
cHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVy
bmVkLgorICogQHNlZSBSZXBsYWNlYWJsZQorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuUmVwbGFjZWFibGUoVVRleHQgKnV0LCBp
Y3U6OlJlcGxhY2VhYmxlICpyZXAsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3Bl
biBhICBVVGV4dCBpbXBsZW1lbnRhdGlvbiBvdmVyIGFuIElDVSBDaGFyYWN0ZXJJdGVyYXRvci4K
KyAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBu
ZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwg
bXVzdCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4K
KyAqICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVw
bGFjZWFibGUgdGV4dC4KKyAqIEBwYXJhbSBjaSAgICAgQSBDaGFyYWN0ZXIgSXRlcmF0b3IuCisg
KiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAg
ICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1
dCwgdGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5l
ZC4KKyAqIEBzZWUgUmVwbGFjZWFibGUKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlbkNoYXJhY3Rlckl0ZXJhdG9yKFVUZXh0ICp1
dCwgaWN1OjpDaGFyYWN0ZXJJdGVyYXRvciAqY2ksIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNl
bmRpZgorCisKKy8qKgorICAqICBDbG9uZSBhIFVUZXh0LiAgVGhpcyBpcyBtdWNoIGxpa2Ugb3Bl
bmluZyBhIFVUZXh0IHdoZXJlIHRoZSBzb3VyY2UgdGV4dCBpcyBpdHNlbGYKKyAgKiAgYW5vdGhl
ciBVVGV4dC4KKyAgKgorICAqICBBIGRlZXAgY2xvbmUgd2lsbCBjb3B5IGJvdGggdGhlIFVUZXh0
IGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHVuZGVybHlpbmcgdGV4dC4KKyAgKiAgVGhlIG9yaWdp
bmFsIGFuZCBjbG9uZWQgVVRleHQgd2lsbCBvcGVyYXRlIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnRs
eTsgbW9kaWZpY2F0aW9ucworICAqICBtYWRlIHRvIHRoZSB0ZXh0IGluIG9uZSB3aWxsIG5vdCBh
ZmZlY3QgdGhlIG90aGVyLiAgVGV4dCBwcm92aWRlcnMgYXJlIG5vdAorICAqICByZXF1aXJlZCB0
byBzdXBwb3J0IGRlZXAgY2xvbmVzLiAgVGhlIHVzZXIgb2YgY2xvbmUoKSBtdXN0IGNoZWNrIHRo
ZSBzdGF0dXMgcmV0dXJuCisgICogIGFuZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgZmFpbHVyZXMu
CisgICoKKyAgKiAgVGhlIHN0YW5kYXJkIFVUZXh0IGltcGxlbWVudGF0aW9ucyBmb3IgVVRGOCwg
VUNoYXIgKiwgVW5pY29kZVN0cmluZyBhbmQKKyAgKiAgUmVwbGFjZWFibGUgYWxsIHN1cHBvcnQg
ZGVlcCBjbG9uaW5nLgorICAqCisgICogIFRoZSBVVGV4dCByZXR1cm5lZCBmcm9tIGEgZGVlcCBj
bG9uZSB3aWxsIGJlIHdyaXRhYmxlLCBhc3N1bWluZyB0aGF0IHRoZSB0ZXh0CisgICogIHByb3Zp
ZGVyIGlzIGFibGUgdG8gc3VwcG9ydCB3cml0aW5nLCBldmVuIGlmIHRoZSBzb3VyY2UgVVRleHQg
aGFkIGJlZW4gbWFkZQorICAqICBub24td3JpdGFibGUgYnkgbWVhbnMgb2YgVVRleHRfZnJlZXpl
KCkuCisgICoKKyAgKiAgQSBzaGFsbG93IGNsb25lIHJlcGxpY2F0ZXMgb25seSB0aGUgVVRleHQg
ZGF0YSBzdHJ1Y3R1cmVzOyBpdCBkb2VzIG5vdCBtYWtlCisgICogIGEgY29weSBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0LiAgU2hhbGxvdyBjbG9uZXMgY2FuIGJlIHVzZWQgYXMgYW4gZWZmaWNpZW50
IHdheSB0byAKKyAgKiAgaGF2ZSBtdWx0aXBsZSBpdGVyYXRvcnMgYWN0aXZlIGluIGEgc2luZ2xl
IHRleHQgc3RyaW5nIHRoYXQgaXMgbm90IGJlaW5nCisgICogIG1vZGlmaWVkLgorICAqCisgICog
IEEgc2hhbGxvdyBjbG9uZSBvcGVyYXRpb24gd2lsbCBub3QgZmFpbCwgYmFycmluZyB0cnVseSBl
eGNlcHRpb25hbCBjb25kaXRpb25zIHN1Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFp
bHVyZXMuCisgICoKKyAgKiAgU2hhbGxvdyBVVGV4dCBjbG9uZXMgc2hvdWxkIGJlIGF2b2lkZWQg
aWYgdGhlIFVUZXh0IGZ1bmN0aW9ucyB0aGF0IG1vZGlmeSB0aGUKKyAgKiAgdGV4dCBhcmUgZXhw
ZWN0ZWQgdG8gYmUgdXNlZCwgZWl0aGVyIG9uIHRoZSBvcmlnaW5hbCBvciB0aGUgY2xvbmVkIFVU
ZXh0LgorICAqICBBbnkgc3VjaCBtb2RpZmljYXRpb25zICBjYW4gY2F1c2UgdW5wcmVkaWN0YWJs
ZSBiZWhhdmlvci4gIFJlYWQgT25seQorICAqICBzaGFsbG93IGNsb25lcyBwcm92aWRlIHNvbWUg
cHJvdGVjdGlvbiBhZ2FpbnN0IGVycm9ycyBvZiB0aGlzIHR5cGUgYnkKKyAgKiAgZGlzYWJsaW5n
IHRleHQgbW9kaWZpY2F0aW9uIHZpYSB0aGUgY2xvbmVkIFVUZXh0LgorICAqCisgICogIEEgc2hh
bGxvdyBjbG9uZSBtYWRlIHdpdGggdGhlIHJlYWRPbmx5IHBhcmFtZXRlciA9PSBGQUxTRSB3aWxs
IHByZXNlcnZlIHRoZSAKKyAgKiAgdXRleHRfaXNXcml0YWJsZSgpIHN0YXRlIG9mIHRoZSBzb3Vy
Y2Ugb2JqZWN0LiAgTm90ZSwgaG93ZXZlciwgdGhhdAorICAqICB3cml0ZSBvcGVyYXRpb25zIG11
c3QgYmUgYXZvaWRlZCB3aGlsZSBtb3JlIHRoYW4gb25lIFVUZXh0IGV4aXN0cyB0aGF0IHJlZmVy
CisgICogIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgdGV4dC4KKyAgKgorICAqICBBIFVUZXh0IGFu
ZCBpdHMgY2xvbmUgbWF5IGJlIHNhZmVseSBjb25jdXJyZW50bHkgYWNjZXNzZWQgYnkgc2VwYXJh
dGUgdGhyZWFkcy4KKyAgKiAgVGhpcyBpcyB0cnVlIGZvciByZWFkIGFjY2VzcyBvbmx5IHdpdGgg
c2hhbGxvdyBjbG9uZXMsIGFuZCBmb3IgYm90aCByZWFkIGFuZAorICAqICB3cml0ZSBhY2Nlc3Mg
d2l0aCBkZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBU
ZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25z
dHJhaW50IGlzIG1ldC4KKyAgKgorICAqICBAcGFyYW0gZGVzdCAgIEEgVVRleHQgc3RydWN0IHRv
IGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGNsb25lIG9wZXJhdGlvbiwKKyAg
KiAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZSBjbG9uZSBmdW5jdGlvbiBzaG91bGQgaGVh
cC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBzdHJ1Y3QuCisgICogICAgICAgICAgICAgICAgSWYgbm9u
LU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4dCwgd2hpY2ggd2ls
bCB0aGVuCisgICogICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gYmVjb21lIHRoZSBjbG9uZS4K
KyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQgdG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0g
ZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAgY2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cg
Y2xvbmUuCisgICogIEBwYXJhbSByZWFkT25seSBUUlVFIHRvIHJlcXVlc3QgdGhhdCB0aGUgY2xv
bmVkIFVUZXh0IGhhdmUgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgCisgICogICAgICAgICAgICAg
ICAgdW5kZXJseWluZyB0ZXh0LiAgCisKKyAgKiAgQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuICBGb3IgZGVlcCBjbG9uZXMsIFVfVU5TVVBQT1JURURfRVJST1IKKyAgKiAg
ICAgICAgICAgICAgICB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHByb3ZpZGVyIGlzIHVu
YWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5hbCB0ZXh0LgorICAq
ICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBOVUxMIGlmIHRoZSBj
bG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqICBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9jbG9uZShVVGV4dCAqZGVzdCwgY29uc3QgVVRl
eHQgKnNyYywgVUJvb2wgZGVlcCwgVUJvb2wgcmVhZE9ubHksIFVFcnJvckNvZGUgKnN0YXR1cyk7
CisKKworLyoqCisgICogIENvbXBhcmUgdHdvIFVUZXh0IG9iamVjdHMgZm9yIGVxdWFsaXR5Lgor
ICAqICBVVGV4dHMgYXJlIGVxdWFsIGlmIHRoZXkgYXJlIGl0ZXJhdGluZyBvdmVyIHRoZSBzYW1l
IHRleHQsIGFuZAorICAqICAgIGhhdmUgdGhlIHNhbWUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpdGhp
biB0aGUgdGV4dC4KKyAgKiAgICBJZiBlaXRoZXIgb3IgYm90aCBvZiB0aGUgcGFyYW1ldGVycyBh
cmUgTlVMTCwgdGhlIGNvbXBhcmlzb24gaXMgRkFMU0UuCisgICoKKyAgKiAgQHBhcmFtIGEgICBU
aGUgZmlyc3Qgb2YgdGhlIHR3byBVVGV4dHMgdG8gY29tcGFyZS4KKyAgKiAgQHBhcmFtIGIgICBU
aGUgb3RoZXIgVVRleHQgdG8gYmUgY29tcGFyZWQuCisgICogIEByZXR1cm4gICAgVFJVRSBpZiB0
aGUgdHdvIFVUZXh0cyBhcmUgZXF1YWwuCisgICogIEBzdGFibGUgSUNVIDMuNgorICAqLworVV9T
VEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9lcXVhbHMoY29uc3QgVVRleHQgKmEsIGNvbnN0
IFVUZXh0ICpiKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9u
cyB0byB3b3JrIHdpdGggdGhlIHRleHQgcmVwcmVzZXRlZCBieSBhIFVUZXh0IHdyYXBwZXIKKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICAqIEdldCB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LiAgRGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXJpc3RpY3MKKyAgKiBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1heSBiZSBleHBlbnNpdmUuICAKKyAg
KiBAc2VlICB1dGV4dF9pc0xlbmd0aEV4cGVuc2l2ZSgpCisgICoKKyAgKgorICAqIEBwYXJhbSB1
dCAgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LCBleHByZXNzZWQgaW4gbmF0aXZlIHVuaXRzLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCitVX1NUQUJMRSBpbnQ2NF90IFVfRVhQT1JUMgordXRleHRfbmF0aXZlTGVuZ3Ro
KFVUZXh0ICp1dCk7CisKKy8qKgorICogIFJldHVybiBUUlVFIGlmIGNhbGN1bGF0aW5nIHRoZSBs
ZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgZXhwZW5zaXZlLgorICogIEZpbmRpbmcgdGhlIGxl
bmd0aCBvZiBOVUwgdGVybWluYXRlZCBzdHJpbmdzIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXhwZW5z
aXZlLgorICoKKyAqICBOb3RlIHRoYXQgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gbWF5IGNo
YW5nZQorICogIGFzIHRoZSByZXN1bHQgb2Ygb3RoZXIgb3BlcmF0aW9ucyBvbiBhIFVUZXh0Lgor
ICogIE9uY2UgdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBoYXMgYmVlbiBkaXNjb3ZlcmVkLCBpdCB3
aWxsIG5vIGxvbmdlcgorICogIGJlIGV4cGVuc2l2ZSB0byByZXBvcnQgaXQuCisgKgorICogQHBh
cmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICogQHJldHVybiBUUlVFIGlmIGRldGVy
bWluaW5nIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgdGltZSBjb25zdW1pbmcuCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9p
c0xlbmd0aEV4cGVuc2l2ZShjb25zdCBVVGV4dCAqdXQpOworCisvKioKKyAqIFJldHVybnMgdGhl
IGNvZGUgcG9pbnQgYXQgdGhlIHJlcXVlc3RlZCBpbmRleCwKKyAqIG9yIFVfU0VOVElORUwgKC0x
KSBpZiBpdCBpcyBvdXQgb2YgYm91bmRzLgorICoKKyAqIElmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
cG9pbnRzIHRvIHRoZSBpbnRlcmlvciBvZiBhIG11bHRpLXVuaXQKKyAqIGNoYXJhY3RlciAtIG9u
ZSBvZiB0aGUgdHJhaWwgYnl0ZXMgb2YgYSBVVEYtOCBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUgLQor
ICogdGhlIGNvbXBsZXRlIGNvZGUgcG9pbnQgd2lsbCBiZSByZXR1cm5lZC4KKyAqCisgKiBUaGUg
aXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgcmV0dXJu
ZWQgY29kZSBwb2ludC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkgZXF1aXZhbGVu
dCB0byB0aGUgdGhlIHNlcXVlbmNlCisgKiAgICB1dGV4dF9zZXROYXRpdmVJbmRleChpbmRleCk7
CisgKiAgICB1dGV4dF9jdXJyZW50MzIoKTsKKyAqIChUaGVyZSBpcyBhIHN1YnRsZSBkaWZmZXJl
bmNlIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIGJ5IGJlaW5nIGxlc3MgdGhhbiB6ZXJv
IC0gCisgKiB1dGV4dF9zZXROYXRpdmVJbmRleChuZWdhdGl2ZSB2YWx1ZSkgc2V0cyB0aGUgaW5k
ZXggdG8gemVybywgYWZ0ZXIgd2hpY2ggdXRleHRfY3VycmVudCgpCisgKiB3aWxsIHJldHVybiB0
aGUgY2hhciBhdCB6ZXJvLiAgdXRleHRfY2hhcjMyQXQobmVnYXRpdmUgaW5kZXgpLCBvbiB0aGUg
b3RoZXIgaGFuZCwgd2lsbAorICogcmV0dXJuIHRoZSBVX1NFTlRJTkVMIHZhbHVlIG9mIC0xLikK
KyAqIAorICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkCisgKiBAcGFyYW0gbmF0
aXZlSW5kZXggdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHRvIGJlIGFjY2Vzc2Vk
LiAgSWYgdGhlIGluZGV4IHBvaW50cworICogICAgICAgIHRvIG90aGVyIHRoYW4gdGhlIGZpcnN0
IHVuaXQgb2YgYSBtdWx0aS11bml0IGNoYXJhY3RlciwgaXQgd2lsbCBiZSBhZGp1c3RlZAorICog
ICAgICAgIHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICogQHJldHVybiB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1dGV4dF9jaGFyMzJBdChVVGV4dCAqdXQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgpOworCisKKy8qKgorICoKKyAqIEdldCB0aGUgY29kZSBwb2ludCBh
dCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24sCisgKiBvciBVX1NFTlRJTkVMICgtMSkg
aWYgdGhlIGl0ZXJhdGlvbiBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mCisgKiB0aGUgaW5wdXQgdGV4
dC4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBAcmV0dXJu
IHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24u
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0
ZXh0X2N1cnJlbnQzMihVVGV4dCAqdXQpOworCisKKy8qKgorICogR2V0IHRoZSBjb2RlIHBvaW50
IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBvZiB0aGUgVVRleHQsIGFuZAorICog
YWR2YW5jZSB0aGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0IGluZGV4IGZvbGxvd2luZyB0aGUgY2hh
cmFjdGVyLgorICoKKyAqIElmIHRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0
ICh0aGUgaW5kZXggZm9sbG93aW5nCisgKiB0aGUgbGFzdCBjaGFyYWN0ZXIsIHdoaWNoIGlzIGFs
c28gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCksIAorICogcmV0dXJuIFVfU0VOVElORUwgKC0xKSBh
bmQgZG8gbm90IGFkdmFuY2UgdGhlIGluZGV4LiAKKyAqCisgKiBUaGlzIGlzIGEgcG9zdC1pbmNy
ZW1lbnQgb3BlcmF0aW9uLgorICoKKyAqIEFuIGlubGluZSBtYWNybyB2ZXJzaW9uIG9mIHRoaXMg
ZnVuY3Rpb24sIFVURVhUX05FWFQzMigpLCAKKyAqIGlzIGF2YWlsYWJsZSBmb3IgcGVyZm9ybWFu
Y2UgY3JpdGljYWwgdXNlLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3Nl
ZC4KKyAqIEByZXR1cm4gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBhdCB0aGUgaXRlcmF0aW9uIHBv
c2l0aW9uLgorICogQHNlZSBVVEVYVF9ORVhUMzIKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitV
X1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4dDMyKFVUZXh0ICp1dCk7CisKKwor
LyoqCisgKiAgTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJhY3RlciAoY29k
ZSBwb2ludCkgd2hvc2UKKyAqICBpbmRleCBwcmVjZWRlcyB0aGUgY3VycmVudCBwb3NpdGlvbiwg
YW5kIHJldHVybiB0aGF0IGNoYXJhY3Rlci4KKyAqICBUaGlzIGlzIGEgcHJlLWRlY3JlbWVudCBv
cGVyYXRpb24uCisgKgorICogIElmIHRoZSBpbml0aWFsIHBvc2l0aW9uIGlzIGF0IHRoZSBzdGFy
dCBvZiB0aGUgdGV4dCAoaW5kZXggb2YgMCkgCisgKiAgcmV0dXJuIFVfU0VOVElORUwgKC0xKSwg
YW5kIGxlYXZlIHRoZSBwb3NpdGlvbiB1bmNoYW5nZWQuCisgKgorICogIEFuIGlubGluZSBtYWNy
byB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24sIFVURVhUX1BSRVZJT1VTMzIoKSwgCisgKiAgaXMg
YXZhaWxhYmxlIGZvciBwZXJmb3JtYW5jZSBjcml0aWNhbCB1c2UuCisgKgorICogIEBwYXJhbSB1
dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KKyAqICBAcmV0dXJuIHRoZSBwcmV2aW91cyBVQ2hh
cjMyIGNvZGUgcG9pbnQsIG9yIFVfU0VOVElORUwgKC0xKSAKKyAqICAgICAgICAgIGlmIHRoZSBp
dGVyYXRpb24gaGFzIHJlYWNoZWQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICogIEBzZWUgVVRF
WFRfUFJFVklPVVMzMgorICogIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVQ2hhcjMy
IFVfRVhQT1JUMgordXRleHRfcHJldmlvdXMzMihVVGV4dCAqdXQpOworCisKKy8qKgorICAqIFNl
dCB0aGUgaXRlcmF0aW9uIGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhhdCBp
bmRleC4gCisgICogTGVhdmUgdGhlIGl0ZXJhdGlvbiBpbmRleCBhdCB0aGUgc3RhcnQgb2YgdGhl
IGZvbGxvd2luZyBjb2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9z
dCBlZmZpY2llbnQgYW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBmb3J3YXJkIGl0
ZXJhdGlvbi4gIFRoZSByZXN1bHRzIGFyZSBpZGVudGljYWwgdG8gdGhlIHRob3NlCisgICogZnJv
bSB0aGUgc2VxdWVuY2UKKyAgKiBcY29kZQorICAqICAgIHV0ZXh0X3NldEluZGV4KCk7CisgICog
ICAgdXRleHRfbmV4dDMyKCk7CisgICogXGVuZGNvZGUKKyAgKgorICAqICBAcGFyYW0gdXQgdGhl
IHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogIEBwYXJhbSBuYXRpdmVJbmRleCBJdGVyYXRpb24g
aW5kZXgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCisgICogIEBy
ZXR1cm4gQ29kZSBwb2ludCB3aGljaCBzdGFydHMgYXQgb3IgYmVmb3JlIGluZGV4LAorICAqICAg
ICAgICAgb3IgVV9TRU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCisgICogQHN0
YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4
dDMyRnJvbShVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisKKworLyoqCisgICog
U2V0IHRoZSBpdGVyYXRpb24gaW5kZXgsIGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgcHJlY2Vk
aW5nIHRoZQorICAqIG9uZSBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwgaW5kZXguICBMZWF2ZSB0
aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisgICogYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXR1cm5lZCBj
b2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9zdCBlZmZpY2llbnQg
YW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBiYWNrd2FyZHMgaXRlcmF0aW9uLgor
ICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEBwYXJhbSBu
YXRpdmVJbmRleCBJdGVyYXRpb24gaW5kZXggaW4gdGhlIG5hdGl2ZSB1bml0cyBvZiB0aGUgdGV4
dCBwcm92aWRlci4KKyAgKiBAcmV0dXJuIENvZGUgcG9pbnQgcHJlY2VkaW5nIHRoZSBvbmUgYXQg
dGhlIGluaXRpYWwgaW5kZXgsCisgICogICAgICAgICBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQg
aXMgb3V0IG9mIGJvdW5kcy4KKyAgKgorICAqIEBzdGFibGUgSUNVIDMuNAorICAqLworVV9TVEFC
TEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0ZXh0X3ByZXZpb3VzMzJGcm9tKFVUZXh0ICp1dCwgaW50
NjRfdCBuYXRpdmVJbmRleCk7CisKKy8qKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBw
b3NpdGlvbiwgd2hpY2ggY2FuIHJhbmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LgorICAqIFRoZSBwb3NpdGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1
dCB0ZXh0LCBpbiB3aGF0ZXZlciBmb3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRG
LTggZm9yIGV4YW1wbGUpLCBhbmQgbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0
aGUgY29ycmVzcG9uZGluZyBVQ2hhciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQg
cG9zaXRpb24gd2lsbCBhbHdheXMgYmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnku
IAorICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEByZXR1
cm4gdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhl
IHRleHQgcHJvdmlkZXIuCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBpbnQ2
NF90IFVfRVhQT1JUMgordXRleHRfZ2V0TmF0aXZlSW5kZXgoY29uc3QgVVRleHQgKnV0KTsKKwor
LyoqCisgKiBTZXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBuZWFyZXN0
IGNvZGUgcG9pbnQKKyAqIGJvdW5kYXJ5IGF0IG9yIHByZWNlZGluZyB0aGUgc3BlY2lmaWVkIGlu
ZGV4LgorICogVGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFs
IGlucHV0IHRleHQuCisgKiBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCBpdCB3aWxsIGJl
IHBpbm5lZCB0byBiZSB3aXRoaW4KKyAqIHRoZSByYW5nZSBvZiB0aGUgaW5wdXQgdGV4dC4KKyAq
IDxwPgorICogSXQgd2lsbCB1c3VhbGx5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGJlZ2luIGFuIGl0
ZXJhdGlvbgorICogdXNpbmcgdGhlIGZ1bmN0aW9ucyB1dGV4dF9uZXh0MzJGcm9tKCkgb3IgdXRl
eHRfcHJldmlvdXMzMkZyb20oKQorICogcmF0aGVyIHRoYW4gc2V0SW5kZXgoKS4KKyAqIDxwPgor
ICogTW92aW5nIHRoZSBpbmRleCBwb3NpdGlvbiB0byBhbiBhZGphY2VudCBjaGFyYWN0ZXIgaXMg
YmVzdCBkb25lCisgKiB3aXRoIHV0ZXh0X25leHQzMigpLCB1dGV4dF9wcmV2aW91czMyKCkgb3Ig
dXRleHRfbW92ZUluZGV4MzIoKS4KKyAqIEF0dGVtcHRpbmcgdG8gZG8gZGlyZWN0IGFyaXRobWV0
aWMgb24gdGhlIGluZGV4IHBvc2l0aW9uIGlzCisgKiBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0
aGF0IHRoZSBzaXplIChpbiBuYXRpdmUgdW5pdHMpIG9mIGEKKyAqIGNoYXJhY3RlciBkZXBlbmRz
IG9uIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0ZXIKKyAqIChV
VEYtOCwgVVRGLTE2LCBVVEYtMzIsIGFyYml0cmFyeSBjb2RlcGFnZSksIGFuZCBpcyBub3QKKyAq
IGVhc2lseSBrbm93YWJsZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNz
ZWQuCisgKiBAcGFyYW0gbmF0aXZlSW5kZXggdGhlIG5hdGl2ZSB1bml0IGluZGV4IG9mIHRoZSBu
ZXcgaXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyCit1dGV4dF9zZXROYXRpdmVJbmRleChVVGV4dCAqdXQsIGludDY0X3Qg
bmF0aXZlSW5kZXgpOworCisvKioKKyAqIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc3Rpb24gYnkgZGVs
dGEgY29kZSBwb2ludHMuICBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzCisgKiBpcyBhIHNpZ25l
ZCBudW1iZXI7IGEgbmVnYXRpdmUgZGVsdGEgd2lsbCBtb3ZlIHRoZSBpdGVyYXRvciBiYWNrd2Fy
ZHMsCisgKiB0b3dhcmRzIHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KKyAqIDxwPgorICogVGhlIGlu
ZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRlbHRhPC9jb2RlPiBjb2RlIHBvaW50cworICogZm9yd2Fy
ZCBvciBiYWNrd2FyZCwgYnV0IG5vIGZ1cnRoZXIgYmFja3dhcmQgdGhhbiB0byAwIGFuZAorICog
bm8gZnVydGhlciBmb3J3YXJkIHRoYW4gdG8gdXRleHRfbmF0aXZlTGVuZ3RoKCkuCisgKiBUaGUg
cmVzdWx0aW5nIGluZGV4IHZhbHVlIHdpbGwgYmUgaW4gYmV0d2VlbiAwIGFuZCBsZW5ndGgsIGlu
Y2x1c2l2ZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBA
cGFyYW0gZGVsdGEgdGhlIHNpZ25lZCBudW1iZXIgb2YgY29kZSBwb2ludHMgdG8gbW92ZSB0aGUg
aXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHJldHVybiBUUlVFIGlmIHRoZSBwb3NpdGlvbiBjb3Vs
ZCBiZSBtb3ZlZCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBwb3NpdGlvbnMgd2hpbGUKKyAqICAg
ICAgICAgICAgICBzdGF5aW5nIHdpdGhpbiB0aGUgcmFuZ2UgWzAgLSB0ZXh0IGxlbmd0aF0uCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9t
b3ZlSW5kZXgzMihVVGV4dCAqdXQsIGludDMyX3QgZGVsdGEpOworCisvKioKKyAqIEdldCB0aGUg
bmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgY3VycmVudCBwb3Np
dGlvbi4KKyAqIElmIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgYWxyZWFkeSBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHRleHQsIHplcm8KKyAqIGlzIHJldHVybmVkLgorICogVGhlIHZhbHVlIHJldHVy
bmVkIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNlcXVl
bmNlLAorICogYnV0IHdpdGhvdXQgdGhlIHNpZGUgZWZmZWN0IG9mIGNoYW5naW5nIHRoZSBpdGVy
YXRpb24gcG9zaXRpb24uCisgKiAgIAorICogXGNvZGUKKyAqICAgIFVUZXh0ICAqdXQgPSB3aGF0
ZXZlcjsKKyAqICAgICAgLi4uCisgKiAgICB1dGV4dF9wcmV2aW91cyh1dCkKKyAqICAgIHV0ZXh0
X2dldE5hdGl2ZUluZGV4KHV0KTsKKyAqIFxlbmRjb2RlCisgKgorICogVGhpcyBmdW5jdGlvbiBp
cyBtb3N0IHVzZWZ1bCBkdXJpbmcgZm9yd2FyZHMgaXRlcmF0aW9uLCB3aGVyZSBpdCB3aWxsIGdl
dCB0aGUKKyAqICAgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgbW9zdCByZWNlbnRseSBy
ZXR1cm5lZCBmcm9tIHV0ZXh0X25leHQoKS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8g
YmUgYWNjZXNzZWQKKyAqIEByZXR1cm4gdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVy
IHByZWNlZWRpbmcgdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sCisgKiAgICAgICAgIG9yIHpl
cm8gaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0Lgor
ICogQHN0YWJsZSBJQ1UgMy42CisgKi8KK1VfU1RBQkxFIGludDY0X3QgVV9FWFBPUlQyCit1dGV4
dF9nZXRQcmV2aW91c05hdGl2ZUluZGV4KFVUZXh0ICp1dCk7IAorCisKKy8qKgorICoKKyAqIEV4
dHJhY3QgdGV4dCBmcm9tIGEgVVRleHQgaW50byBhIFVDaGFyIGJ1ZmZlci4gIFRoZSByYW5nZSBv
ZiB0ZXh0IHRvIGJlIGV4dHJhY3RlZAorICogaXMgc3BlY2lmaWVkIGluIHRoZSBuYXRpdmUgaW5k
aWNlcyBvZiB0aGUgVVRleHQgcHJvdmlkZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vzc2FyaWx5Cisg
KiBiZSBVVEYtMTYgaW5kaWNlcy4KKyAqIDxwPgorICogVGhlIHNpemUgKG51bWJlciBvZiAxNiBi
aXQgVUNoYXJzKSBvZiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJuZWQuICBUaGUK
KyAqIGZ1bGwgbnVtYmVyIG9mIFVDaGFycyBpcyByZXR1cm5lZCwgZXZlbiB3aGVuIHRoZSBleHRy
YWN0ZWQgdGV4dCBpcyB0cnVuY2F0ZWQKKyAqIGJlY2F1c2UgdGhlIHNwZWNpZmllZCBidWZmZXIg
c2l6ZSBpcyB0b28gc21hbGwuCisgKiA8cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwg
KGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQor
ICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUg
ZGVzdGluYXRpb24gYnVmZmVyLiAgVGhpcworICogdGVybWluYXRpbmcgTlVMIGlzIG5vdCBpbmNs
dWRlZCBpbiB0aGUgcmV0dXJuZWQgbGVuZ3RoLgorICogPHA+CisgKiBUaGUgaXRlcmF0aW9uIGlu
ZGV4IGlzIGxlZnQgYXQgdGhlIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgbGFzdCBleHRyYWN0ZWQg
Y2hhcmFjdGVyLgorICoKKyAqIEBwYXJhbSAgdXQgICAgdGhlIFVUZXh0IGZyb20gd2hpY2ggdG8g
ZXh0cmFjdCBkYXRhLgorICogQHBhcmFtICBuYXRpdmVTdGFydCB0aGUgbmF0aXZlIGluZGV4IG9m
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gZXh0cmFjdC5cCisgKiAgICAgICAgICAgICAgIElmIHRo
ZSBzcGVjaWZpZWQgaW5kZXggaXMgb3V0IG9mIHJhbmdlLAorICogICAgICAgICAgICAgICBpdCB3
aWxsIGJlIHBpbm5lZCB0byB0byBiZSB3aXRoaW4gMCA8PSBpbmRleCA8PSB0ZXh0TGVuZ3RoCisg
KiBAcGFyYW0gIG5hdGl2ZUxpbWl0IHRoZSBuYXRpdmUgc3RyaW5nIGluZGV4IG9mIHRoZSBwb3Np
dGlvbiBmb2xsb3dpbmcgdGhlIGxhc3QKKyAqICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4
dHJhY3QuICBJZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG91dCBvZiByYW5nZSwKKyAqICAgICAg
ICAgICAgICAgaXQgd2lsbCBiZSBwaW5uZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0gaW5kZXggPD0g
dGV4dExlbmd0aC4KKyAqICAgICAgICAgICAgICAgbmF0aXZlTGltaXQgbXVzdCBiZSA+PSBuYXRp
dmVTdGFydC4KKyAqIEBwYXJhbSAgZGVzdCAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRv
IHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFj
aXR5ICBUaGUgc2l6ZSwgaW4gVUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5
IGJlIHplcm8KKyAqICAgICAgICAgICAgICAgZm9yIHByZWNvbXB1dGluZyB0aGUgcmVxdWlyZWQg
c2l6ZS4KKyAqIEBwYXJhbSAgc3RhdHVzIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAg
ICAgICAgIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOiB0aGUgZXh0cmFjdGVkIHRleHQgd2FzIHRy
dW5jYXRlZCBiZWNhdXNlIHRoZSAKKyAqICAgICAgICAgYnVmZmVyIHdhcyB0b28gc21hbGwuICBS
ZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMgZm9yIHByZWZsaWdodGluZy4KKyAqIEByZXR1cm4gTnVt
YmVyIG9mIFVDaGFycyBpbiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgordXRleHRfZXh0cmFjdChVVGV4dCAqdXQsCisgICAgICAgICAg
ICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKKyAgICAgICAgICAg
ICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAgVUVycm9y
Q29kZSAqc3RhdHVzKTsKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg
KiAgI2RlZmluZSBpbmxpbmUgdmVyc2lvbnMgb2Ygc2VsZWN0ZWQgcGVyZm9ybWFuY2UtY3JpdGlj
YWwgdGV4dCBhY2Nlc3MgZnVuY3Rpb25zCisgKiAgICAgICAgICBDYXV0aW9uOiAgZG8gbm90IHVz
ZSBhdXRvIGluY3JlbWVudCsrIG9yIGRlY3JlbWVudC0tIGV4cHJlc3Npb25zCisgKiAgICAgICAg
ICAgICAgICAgICAgYXMgcGFyYW1ldGVycyB0byB0aGVzZSBtYWNyb3MuCisgKgorICogICAgICAg
ICAgRm9yIG1vc3QgdXNlLCB3aGVyZSB0aGVyZSBpcyBubyBleHRyZW1lIHBlcmZvcm1hbmNlIGNv
bnN0cmFpbnQsIHRoZQorICogICAgICAgICAgbm9ybWFsLCBub24taW5saW5lIGZ1bmN0aW9ucyBh
cmUgYSBiZXR0ZXIgY2hvaWNlLiAgVGhlIHJlc3VsdGluZyBjb2RlCisgKiAgICAgICAgICB3aWxs
IGJlIHNtYWxsZXIsIGFuZCwgaWYgdGhlIG5lZWQgZXZlciBhcmlzZXMsIGVhc2llciB0byBkZWJ1
Zy4KKyAqCisgKiAgICAgICAgICBUaGVzZSBhcmUgaW1wbGVtZW50ZWQgYXMgI2RlZmluZXMgcmF0
aGVyIHRoYW4gcmVhbCBmdW5jdGlvbnMKKyAqICAgICAgICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8g
ZnVsbHkgcG9ydGFibGUgd2F5IHRvIGRvIGlubGluZSBmdW5jdGlvbnMgaW4gcGxhaW4gQy4KKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIFVfSElERV9JTlRFUk5B
TF9BUEkKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfY3VycmVudDMyKCksIGZvciBw
ZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29kZSBwb2lu
dCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LgorICogUmV0
dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhl
CisgKiB0ZXh0LgorICoKKyAqIEBpbnRlcm5hbCBJQ1UgNC40IHRlY2hub2xvZ3kgcHJldmlldwor
ICovCisjZGVmaW5lIFVURVhUX0NVUlJFTlQzMih1dCkgIFwKKyAgICAoKHV0KS0+Y2h1bmtPZmZz
ZXQgPCAodXQpLT5jaHVua0xlbmd0aCAmJiAoKHV0KS0+Y2h1bmtDb250ZW50cylbKHV0KS0+Y2h1
bmtPZmZzZXRdPDB4ZDgwMCA/IFwKKyAgICAoKHV0KS0+Y2h1bmtDb250ZW50cylbKCh1dCktPmNo
dW5rT2Zmc2V0KV0gOiB1dGV4dF9jdXJyZW50MzIodXQpKQorI2VuZGlmICAvKiBVX0hJREVfSU5U
RVJOQUxfQVBJICovCisKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfbmV4dDMyKCks
IGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LCBh
bmQKKyAqIGFkdmFuY2UgdGhlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBpbmRleCBmb2xsb3dpbmcg
dGhlIGNoYXJhY3Rlci4KKyAqIFRoaXMgaXMgYSBwb3N0LWluY3JlbWVudCBvcGVyYXRpb24uCisg
KiBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIGVuZCBv
ZiB0aGUKKyAqIHRleHQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KKyNkZWZpbmUgVVRF
WFRfTkVYVDMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8ICh1dCktPmNodW5rTGVu
Z3RoICYmICgodXQpLT5jaHVua0NvbnRlbnRzKVsodXQpLT5jaHVua09mZnNldF08MHhkODAwID8g
XAorICAgICgodXQpLT5jaHVua0NvbnRlbnRzKVsoKHV0KS0+Y2h1bmtPZmZzZXQpKytdIDogdXRl
eHRfbmV4dDMyKHV0KSkKKworLyoqCisgKiBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4dF9wcmV2aW91
czMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqICBNb3Zl
IHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgY2hhcmFjdGVyIChjb2RlIHBvaW50KSB3aG9z
ZQorICogIGluZGV4IHByZWNlZGVzIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQgcmV0dXJuIHRo
YXQgY2hhcmFjdGVyLgorICogIFRoaXMgaXMgYSBwcmUtZGVjcmVtZW50IG9wZXJhdGlvbi4KKyAq
ICBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0
IG9mIHRoZSAgdGV4dC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworI2RlZmluZSBVVEVY
VF9QUkVWSU9VUzMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA+IDAgJiYgXAorICAg
ICAodXQpLT5jaHVua0NvbnRlbnRzWyh1dCktPmNodW5rT2Zmc2V0LTFdIDwgMHhkODAwID8gXAor
ICAgICAgICAgICh1dCktPmNodW5rQ29udGVudHNbLS0oKHV0KS0+Y2h1bmtPZmZzZXQpXSAgOiAg
dXRleHRfcHJldmlvdXMzMih1dCkpCisKKy8qKgorICAqICBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4
dF9nZXROYXRpdmVJbmRleCgpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4K
KyAgKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBwb3NpdGlvbiwgd2hpY2ggY2FuIHJh
bmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LgorICAqIFRoZSBwb3Np
dGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1dCB0ZXh0LCBpbiB3aGF0ZXZlciBm
b3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRGLTggZm9yIGV4YW1wbGUpLCBhbmQg
bWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0aGUgY29ycmVzcG9uZGluZyBVQ2hh
ciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQgcG9zaXRpb24gd2lsbCBhbHdheXMg
YmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuIAorICAqCisgICogQHN0YWJsZSBJ
Q1UgMy42CisgICovCisjZGVmaW5lIFVURVhUX0dFVE5BVElWRUlOREVYKHV0KSAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8PSAodXQpLT5uYXRpdmVJbmRl
eGluZ0xpbWl0PyAgIFwKKyAgICAgICAgKHV0KS0+Y2h1bmtOYXRpdmVTdGFydCsodXQpLT5jaHVu
a09mZnNldCA6ICAgICBcCisgICAgICAgICh1dCktPnBGdW5jcy0+bWFwT2Zmc2V0VG9OYXRpdmUo
dXQpKSAgICAKKworLyoqCisgICogIGlubGluZSB2ZXJzaW9uIG9mIHV0ZXh0X3NldE5hdGl2ZUlu
ZGV4KCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICAqCisgICogU2V0
IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUgbmVhcmVzdCBjb2RlIHBvaW50
CisgICogYm91bmRhcnkgYXQgb3IgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgaW5kZXguCisgICog
VGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFsIGlucHV0IHRl
eHQuCisgICogSWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZSwgaXQgd2lsbCBiZSBwaW5uZWQg
dG8gYmUgd2l0aGluCisgICogdGhlIHJhbmdlIG9mIHRoZSBpbnB1dCB0ZXh0LgorICAqCisgICog
QHN0YWJsZSBJQ1UgMy44CisgICovCisjZGVmaW5lIFVURVhUX1NFVE5BVElWRUlOREVYKHV0LCBp
eCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IGludDY0X3QgX19vZmZzZXQgPSAoaXgp
IC0gKHV0KS0+Y2h1bmtOYXRpdmVTdGFydDsgXAorICAgICAgaWYgKF9fb2Zmc2V0Pj0wICYmIF9f
b2Zmc2V0PD0oaW50NjRfdCkodXQpLT5uYXRpdmVJbmRleGluZ0xpbWl0KSB7IFwKKyAgICAgICAg
ICAodXQpLT5jaHVua09mZnNldD0oaW50MzJfdClfX29mZnNldDsgXAorICAgICAgfSBlbHNlIHsg
XAorICAgICAgICAgIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCh1dCksIChpeCkpOyB9IH0KKworCisK
Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9ucyByZWxhdGVk
IHRvIHdyaXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSB0ZXh0LgorICogICBUaGVzZSB3aWxsIHdvcmsg
b25seSB3aXRoIG1vZGlmaWFibGUgVVRleHRzLiAgQXR0ZW1wdGluZyB0bworICogICBtb2RpZnkg
YSByZWFkLW9ubHkgVVRleHQgd2lsbCByZXR1cm4gYW4gZXJyb3Igc3RhdHVzLgorICoKKyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgKiAgUmV0dXJuIFRSVUUgaWYgdGhl
IHRleHQgY2FuIGJlIHdyaXR0ZW4gKG1vZGlmaWVkKSB3aXRoIHV0ZXh0X3JlcGxhY2UoKSBvcgor
ICogIHV0ZXh0X2NvcHkoKS4gIEZvciB0aGUgdGV4dCB0byBiZSB3cml0YWJsZSwgdGhlIHRleHQg
cHJvdmlkZXIgbXVzdAorICogIGJlIG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzIHdyaXRpbmcgYW5k
IHRoZSBVVGV4dCBtdXN0IG5vdCBiZSBmcm96ZW4uCisgKgorICogIEF0dGVtcHRpbmcgdG8gbW9k
aWZ5IHRleHQgd2hlbiB1dGV4dF9pc1dyaXRlYWJsZSgpIGlzIEZBTFNFIHdpbGwgZmFpbCAtCisg
KiAgdGhlIHRleHQgd2lsbCBub3QgYmUgbW9kaWZpZWQsIGFuZCBhbiBlcnJvciB3aWxsIGJlIHJl
dHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uCisgKiAgdGhhdCBhdHRlbXB0ZWQgdGhlIG1vZGlmaWNh
dGlvbi4KKyAqCisgKiBAcGFyYW0gIHV0ICAgdGhlIFVUZXh0IHRvIGJlIHRlc3RlZC4KKyAqIEBy
ZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCBpcyBtb2RpZmlhYmxlLgorICoKKyAqIEBzZWUgICAgdXRl
eHRfZnJlZXplKCkKKyAqIEBzZWUgICAgdXRleHRfcmVwbGFjZSgpCisgKiBAc2VlICAgIHV0ZXh0
X2NvcHkoKQorICogQHN0YWJsZSBJQ1UgMy40CisgKgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VY
UE9SVDIKK3V0ZXh0X2lzV3JpdGFibGUoY29uc3QgVVRleHQgKnV0KTsKKworCisvKioKKyAgKiBU
ZXN0IHdoZXRoZXIgdGhlcmUgaXMgbWV0YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4K
KyAgKiBAc2VlIFJlcGxhY2VhYmxlOjpoYXNNZXRhRGF0YSgpCisgICoKKyAgKiBAcGFyYW0gdXQg
VGhlIFVUZXh0IHRvIGJlIHRlc3RlZAorICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdW5kZXJseWlu
ZyB0ZXh0IGluY2x1ZGVzIG1ldGEgZGF0YS4KKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1Vf
U1RBQkxFIFVCb29sIFVfRVhQT1JUMgordXRleHRfaGFzTWV0YURhdGEoY29uc3QgVVRleHQgKnV0
KTsKKworCisvKioKKyAqIFJlcGxhY2UgYSByYW5nZSBvZiB0aGUgb3JpZ2luYWwgdGV4dCB3aXRo
IGEgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBMZWF2ZXMgdGhlIGN1cnJlbnQgaXRlcmF0aW9u
IHBvc2l0aW9uIGF0IHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlCisgKiAgbmV3bHkgaW5zZXJ0
ZWQgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh
YmxlIG9uIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0aW5nLAorICogdGhhdCBpcywgb25l
cyB3aGVyZSB1dGV4dF9pc1dyaXRhYmxlKCkgcmV0dXJucyBUUlVFLgorICoKKyAqIFdoZW4gdXNp
bmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRleHQgb3Bl
bmVkIG9udG8gdGhlCisgKiB1bmRlcmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIEJlaGF2aW9y
IGFmdGVyIGEgcmVwbGFjZSBvcGVyYXRpb24KKyAqIG9uIGEgVVRleHQgaXMgdW5kZWZpbmVkIGZv
ciBhbnkgb3RoZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlm
aWVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgICAgICB0aGUgVVRleHQgcmVw
cmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgorICogQHBhcmFtIG5hdGl2ZVN0
YXJ0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJlZ2lvbiB0byBi
ZSByZXBsYWNlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBv
ZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICog
QHBhcmFtIHJlcGxhY2VtZW50VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAor
ICogQHBhcmFtIHJlcGxhY2VtZW50TGVuZ3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgdGV4
dCwgb3IgLTEgaWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVz
ICAgICAgICAgICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGlu
Y2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgor
ICoKKyAqIEByZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0
cyBieSB3aGljaAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9y
IGNvbnRyYWN0ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIGludDMy
X3QgVV9FWFBPUlQyCit1dGV4dF9yZXBsYWNlKFVUZXh0ICp1dCwKKyAgICAgICAgICAgICBpbnQ2
NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICpyZXBsYWNlbWVudFRleHQsIGludDMyX3QgcmVwbGFjZW1lbnRMZW5ndGgsCisgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisKKy8qKgorICoKKyAqIENvcHkgb3Ig
bW92ZSBhIHN1YnN0cmluZyBmcm9tIG9uZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUg
dGV4dCwKKyAqIHdoaWxlIHJldGFpbmluZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRo
ZSB0ZXh0LgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVy
IHN1YnN0cmluZ3MuCisgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0
aGUgc291cmNlIHJhbmdlLgorICoKKyAqIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBp
cyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3
cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4KKyAqCisgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlz
IGxlZnQgZm9sbG93aW5nIHRoZSBuZXdseSBpbnNlcnRlZCB0ZXh0CisgKiBhdCB0aGUgZGVzdGlu
YXRpb24gcG9zaXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv
biBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3JpdGluZywKKyAqIHRoYXQgaXMsIG9uZXMgd2hl
cmUgdXRleHRfaXNXcml0YWJsZSgpIHJldHVybnMgVFJVRS4KKyAqCisgKiBXaGVuIHVzaW5nIHRo
aXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBvbmx5IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBv
bnRvIHRoZQorICogdW5kZXJseWluZyBuYXRpdmUgdGV4dCBzdHJpbmcuICBCZWhhdmlvciBhZnRl
ciBhIGNvcHkgb3BlcmF0aW9uCisgKiBvbiBhIFVUZXh0IGlzIHVuZGVmaW5lZCBpbiBhbnkgb3Ro
ZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlmaWVkIHN0cmlu
Zy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgIFRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhl
IHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQgIFRoZSBuYXRp
dmUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgY29waWVkIG9yIG1vdmVk
CisgKiBAcGFyYW0gbmF0aXZlTGltaXQgIFRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3Rl
ciBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIHJlZ2lvbgorICogICAgICAgICAgICAgICAgICAgICB0
byBiZSBjb3BpZWQuCisgKiBAcGFyYW0gZGVzdEluZGV4ICAgIFRoZSBuYXRpdmUgZGVzdGluYXRp
b24gaW5kZXggdG8gd2hpY2ggdGhlIHNvdXJjZSBzdWJzdHJpbmcgaXMKKyAqICAgICAgICAgICAg
ICAgICAgICAgY29waWVkIG9yIG1vdmVkLgorICogQHBhcmFtIG1vdmUgICAgICAgICBJZiBUUlVF
LCB0aGVuIHRoZSBzdWJzdHJpbmcgaXMgbW92ZWQsIG5vdCBjb3BpZWQvZHVwbGljYXRlZC4KKyAq
IEBwYXJhbSBzdGF0dXMgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3NpYmxl
IGVycm9ycyBpbmNsdWRlIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICogICAgICAgICAgICAgICAg
ICAgICAgIAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQy
Cit1dGV4dF9jb3B5KFVUZXh0ICp1dCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBp
bnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgIGludDY0X3QgZGVzdEluZGV4LAorICAgICAg
ICAgIFVCb29sIG1vdmUsCisgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioK
KyAgKiAgPHA+CisgICogIEZyZWV6ZSBhIFVUZXh0LiAgVGhpcyBwcmV2ZW50cyBhbnkgbW9kaWZp
Y2F0aW9uIHRvIHRoZSB1bmRlcmx5aW5nIHRleHQgaXRzZWxmCisgICogIGJ5IG1lYW5zIG9mIGZ1
bmN0aW9ucyBvcGVyYXRpbmcgb24gdGhpcyBVVGV4dC4KKyAgKiAgPC9wPgorICAqICA8cD4KKyAg
KiAgT25jZSBmcm96ZW4sIGEgVVRleHQgY2FuIG5vdCBiZSB1bmZyb3plbi4gIFRoZSBpbnRlbnQg
aXMgdG8gZW5zdXJlCisgICogIHRoYXQgYSB0aGUgdGV4dCB1bmRlcmx5aW5nIGEgZnJvemVuIFVU
ZXh0IHdyYXBwZXIgY2Fubm90IGJlIG1vZGlmaWVkIHZpYSB0aGF0IFVUZXh0LgorICAqICA8L3A+
CisgICogIDxwPgorICAqICBDYXV0aW9uOiAgZnJlZXppbmcgYSBVVGV4dCB3aWxsIGRpc2FibGUg
Y2hhbmdlcyBtYWRlIHZpYSB0aGUgc3BlY2lmaWMKKyAgKiAgIGZyb3plbiBVVGV4dCB3cmFwcGVy
IG9ubHk7IGl0IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYWJpbGl0eSB0bworICAq
ICAgZGlyZWN0bHkgbW9kaWZ5IHRoZSB0ZXh0IGJ5IGJ5cGFzc2luZyB0aGUgVVRleHQuICBBbnkg
c3VjaCBiYWNrZG9vciBtb2RpZmljYXRpb25zCisgICogICBhcmUgYWx3YXlzIGFuIGVycm9yIHdo
aWxlIFVUZXh0IGFjY2VzcyBpcyBvY2N1cmluZyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nCisgICog
ICB0ZXh0IGNhbiBnZXQgb3V0IG9mIHN5bmMgd2l0aCBVVGV4dCdzIGJ1ZmZlcmluZy4KKyAgKiAg
PC9wPgorICAqCisgICogIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJlIGZyb3plbi4KKyAgKiAg
QHNlZSAgIHV0ZXh0X2lzV3JpdGFibGUoKQorICAqICBAc3RhYmxlIElDVSAzLjYKKyAgKi8KK1Vf
U1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9mcmVlemUoVVRleHQgKnV0KTsKKworCisvKioK
KyAqIFVUZXh0IHByb3ZpZGVyIHByb3BlcnRpZXMgKGJpdCBmaWVsZCBpbmRleGVzKS4KKyAqCisg
KiBAc2VlIFVUZXh0CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworZW51bSB7CisgICAgLyoqCisg
ICAgICogSXQgaXMgcG90ZW50aWFsbHkgdGltZSBjb25zdW1pbmcgZm9yIHRoZSBwcm92aWRlciB0
byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjQKKyAgICAgKi8KKyAgICBVVEVYVF9QUk9WSURFUl9MRU5HVEhfSVNfRVhQRU5TSVZFID0gMSwK
KyAgICAvKioKKyAgICAgKiBUZXh0IGNodW5rcyByZW1haW4gdmFsaWQgYW5kIHVzYWJsZSB1bnRp
bCB0aGUgdGV4dCBvYmplY3QgaXMgbW9kaWZpZWQgb3IKKyAgICAgKiBkZWxldGVkLCBub3QganVz
dCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSBhY2Nlc3MoKSBmdW5jdGlvbiBpcyBjYWxsZWQKKyAg
ICAgKiAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLgorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAg
ICAqLworICAgIFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVOS1MgPSAyLAorICAgIC8qKgorICAg
ICAqIFRoZSBwcm92aWRlciBzdXBwb3J0cyBtb2RpZnlpbmcgdGhlIHRleHQgdmlhIHRoZSByZXBs
YWNlKCkgYW5kIGNvcHkoKQorICAgICAqIGZ1bmN0aW9ucy4KKyAgICAgKiBAc2VlIFJlcGxhY2Vh
YmxlCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgVVRFWFRfUFJPVklERVJf
V1JJVEFCTEUgPSAzLAorICAgIC8qKgorICAgICAqIFRoZXJlIGlzIG1ldGEgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhlIHRleHQuCisgICAgICogQHNlZSBSZXBsYWNlYWJsZTo6aGFzTWV0YURhdGEo
KQorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAqLyAKKyAgICBVVEVYVF9QUk9WSURFUl9I
QVNfTUVUQV9EQVRBID0gNCwKKyAgICAvKioKKyAgICAgKiBUZXh0IHByb3ZpZGVyIG93bnMgdGhl
IHRleHQgc3RvcmFnZS4KKyAgICAgKiAgR2VuZXJhbGx5IG9jY3VycyBhcyB0aGUgcmVzdWx0IG9m
IGEgZGVlcCBjbG9uZSBvZiB0aGUgVVRleHQuCisgICAgICogIFdoZW4gY2xvc2luZyB0aGUgVVRl
eHQsIHRoZSBhc3NvY2lhdGVkIHRleHQgbXVzdAorICAgICAqICBhbHNvIGJlIGNsb3NlZC9kZWxl
dGVkL2ZyZWVkLyB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZS4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjYKKyAgICAgKi8KKyAgICAgVVRFWFRfUFJPVklERVJfT1dOU19URVhUID0gNQorfTsKKworLyoq
CisgICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuY2xvbmUoKS4KKyAgKgor
ICAqICBjbG9uZSBhIFVUZXh0LiAgTXVjaCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3aGVyZSB0aGUg
c291cmNlIHRleHQgaXMgaXRzZWxmCisgICogIGFub3RoZXIgVVRleHQuCisgICoKKyAgKiAgQSBk
ZWVwIGNsb25lIHdpbGwgY29weSBib3RoIHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRo
ZSB1bmRlcmx5aW5nIHRleHQuCisgICogIFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVkIFVUZXh0IHdp
bGwgb3BlcmF0ZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlvbnMKKyAgKiAg
bWFkZSB0byB0aGUgdGV4dCBpbiBvbmUgd2lsbCBub3QgZWZmZWN0IHRoZSBvdGhlci4gIFRleHQg
cHJvdmlkZXJzIGFyZSBub3QKKyAgKiAgcmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVwIGNsb25lcy4g
IFRoZSB1c2VyIG9mIGNsb25lKCkgbXVzdCBjaGVjayB0aGUgc3RhdHVzIHJldHVybgorICAqICBh
bmQgYmUgcHJlcGFyZWQgdG8gaGFuZGxlIGZhaWx1cmVzLgorICAqCisgICogIEEgc2hhbGxvdyBj
bG9uZSByZXBsaWNhdGVzIG9ubHkgdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlczsgaXQgZG9lcyBu
b3QgbWFrZQorICAqICBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgdGV4dC4gIFNoYWxsb3cgY2xv
bmVzIGNhbiBiZSB1c2VkIGFzIGFuIGVmZmljaWVudCB3YXkgdG8gCisgICogIGhhdmUgbXVsdGlw
bGUgaXRlcmF0b3JzIGFjdGl2ZSBpbiBhIHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0IGlzIG5vdCBi
ZWluZworICAqICBtb2RpZmllZC4KKyAgKgorICAqICBBIHNoYWxsb3cgY2xvbmUgb3BlcmF0aW9u
IG11c3Qgbm90IGZhaWwgZXhjZXB0IGZvciB0cnVseSBleGNlcHRpb25hbCBjb25kaXRpb25zIHN1
Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICoKKyAgKiAgQSBVVGV4
dCBhbmQgaXRzIGNsb25lIG1heSBiZSBzYWZlbHkgY29uY3VycmVudGx5IGFjY2Vzc2VkIGJ5IHNl
cGFyYXRlIHRocmVhZHMuCisgICogIFRoaXMgaXMgdHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBk
ZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBUZXh0IFBy
b3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25zdHJhaW50
IGlzIG1ldC4KKworICAqCisgICogIEBwYXJhbSBkZXN0ICAgQSBVVGV4dCBzdHJ1Y3QgdG8gYmUg
ZmlsbGVkIGluIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgY2xvbmUgb3BlcmF0aW9uLAorICAqICAg
ICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhlIGNsb25lIGZ1bmN0aW9uIHNob3VsZCBoZWFwLWFs
bG9jYXRlIGEgbmV3IFVUZXh0IHN0cnVjdC4KKyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQg
dG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAg
Y2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cgY2xvbmUuCisgICogIEBwYXJhbSBzdGF0dXMgRXJy
b3JzIGFyZSByZXR1cm5lZCBoZXJlLiAgRm9yIGRlZXAgY2xvbmVzLCBVX1VOU1VQUE9SVEVEX0VS
Uk9SCisgICogICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHBy
b3ZpZGVyIGlzIHVuYWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5h
bCB0ZXh0LgorICAqICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBO
VUxMIGlmIHRoZSBjbG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCit0eXBlZGVmIFVUZXh0ICogVV9DQUxMQ09OVgorVVRleHRDbG9uZShVVGV4dCAq
ZGVzdCwgY29uc3QgVVRleHQgKnNyYywgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSAqc3RhdHVzKTsK
KworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm5hdGl2ZUxl
bmd0aCgpLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgVVRleHQgdG8gZ2V0IHRoZSBsZW5ndGggb2Yu
CisgKiBAcmV0dXJuIHRoZSBsZW5ndGgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdp
bmFsIHRleHQgc3RyaW5nLgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgaW50NjRfdCBVX0NBTExDT05WCitVVGV4dE5hdGl2ZUxlbmd0aChVVGV4dCAqdXQp
OworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmFjY2Vzcygp
LiAgR2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGV4dCBjaHVuaworICogIGNvbnRhaW5pbmcg
dGhlIHRleHQgYXQgYSByZXF1ZXN0ZWQgbmF0aXZlIGluZGV4LiAgVGhlIFVUZXh0J3MgaXRlcmF0
aW9uCisgKiAgcG9zaXRpb24gd2lsbCBiZSBsZWZ0IGF0IHRoZSByZXF1ZXN0ZWQgaW5kZXguICBJ
ZiB0aGUgaW5kZXggaXMgb3V0CisgKiAgb2YgYm91bmRzLCB0aGUgaXRlcmF0aW9uIHBvc2l0aW9u
IHdpbGwgYmUgbGVmdCBhdCB0aGUgc3RhcnQgb3IgZW5kCisgKiAgb2YgdGhlIHN0cmluZywgYXMg
YXBwcm9wcmlhdGUuCisgKgorICogIENodW5rcyBtdXN0IGJlZ2luIGFuZCBlbmQgb24gY29kZSBw
b2ludCBib3VuZGFyaWVzLiAgQSBzaW5nbGUgY29kZSBwb2ludAorICogIGNvbXByaXNlZCBvZiBt
dWx0aXBsZSBzdG9yYWdlIHVuaXRzIG11c3QgbmV2ZXIgc3BhbiBhIGNodW5rIGJvdW5kYXJ5Lgor
ICoKKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgdGhlIFVUZXh0IGJlaW5nIGFjY2Vzc2VkLgor
ICogQHBhcmFtIG5hdGl2ZUluZGV4IFJlcXVlc3RlZCBpbmRleCBvZiB0aGUgdGV4dCB0byBiZSBh
Y2Nlc3NlZC4KKyAqIEBwYXJhbSBmb3J3YXJkICAgICBJZiBUUlVFLCB0aGVuIHRoZSByZXR1cm5l
ZCBjaHVuayBtdXN0IGNvbnRhaW4gdGV4dAorICogICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5n
IGZyb20gdGhlIGluZGV4LCBzbyB0aGF0IHN0YXJ0PD1pbmRleDxsaW1pdC4KKyAqICAgICAgICAg
ICAgICAgICAgICBJZiBGQUxTRSwgdGhlbiB0aGUgcmV0dXJuZWQgY2h1bmsgbXVzdCBjb250YWlu
IHRleHQKKyAqICAgICAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGluZGV4LCBzbyB0aGF0IHN0
YXJ0PGluZGV4PD1saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBUcnVlIGlmIHRoZSByZXF1
ZXN0ZWQgaW5kZXggY291bGQgYmUgYWNjZXNzZWQuICBUaGUgY2h1bmsKKyAqICAgICAgICAgICAg
ICAgICAgICB3aWxsIGNvbnRhaW4gdGhlIHJlcXVlc3RlZCB0ZXh0LgorICogICAgICAgICAgICAg
ICAgICAgIEZhbHNlIHZhbHVlIGlmIGEgY2h1bmsgY2Fubm90IGJlIGFjY2Vzc2VkCisgKiAgICAg
ICAgICAgICAgICAgICAgKHRoZSByZXF1ZXN0ZWQgaW5kZXggaXMgb3V0IG9mIGJvdW5kcykuCisg
KgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgVUJvb2wg
VV9DQUxMQ09OVgorVVRleHRBY2Nlc3MoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBV
VGV4dC5leHRyYWN0KCkuCisgKgorICogRXh0cmFjdCB0ZXh0IGZyb20gYSBVVGV4dCBpbnRvIGEg
VUNoYXIgYnVmZmVyLiAgVGhlIHJhbmdlIG9mIHRleHQgdG8gYmUgZXh0cmFjdGVkCisgKiBpcyBz
cGVjaWZpZWQgaW4gdGhlIG5hdGl2ZSBpbmRpY2VzIG9mIHRoZSBVVGV4dCBwcm92aWRlci4gIFRo
ZXNlIG1heSBub3QgbmVjZXNzYXJpbHkKKyAqIGJlIFVURi0xNiBpbmRpY2VzLgorICogPHA+Cisg
KiBUaGUgc2l6ZSAobnVtYmVyIG9mIDE2IGJpdCBVQ2hhcnMpIGluIHRoZSBkYXRhIHRvIGJlIGV4
dHJhY3RlZCBpcyByZXR1cm5lZC4gIFRoZQorICogZnVsbCBhbW91bnQgaXMgcmV0dXJuZWQsIGV2
ZW4gd2hlbiB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBzaXplIGlzIHNtYWxsZXIuCisgKiA8cD4KKyAq
IFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlm
IHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQorICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUg
aXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICoKKyAqIEBw
YXJhbSAgdXQgICAgICAgICAgICB0aGUgVVRleHQgZnJvbSB3aGljaCB0byBleHRyYWN0IGRhdGEu
CisgKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0ICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjZXIgdG8gZXh0cmFjdC4KKyAqIEBwYXJhbSAgbmF0aXZlTGltaXQgICB0aGUgbmF0aXZl
IHN0cmluZyBpbmRleCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0CisgKiAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4dHJhY3QuCisgKiBAcGFyYW0gIGRlc3Qg
ICAgICAgICAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0
ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSwgaW4g
VUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5IGJlIHplcm8KKyAqICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgcHJlY29tcHV0aW5nIHRoZSByZXF1aXJlZCBzaXplLgorICog
QHBhcmFtICBzdGF0dXMgICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgSWYgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I6IFJldHVybnMgbnVt
YmVyIG9mIFVDaGFycyBmb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICBwcmVmbGlnaHRpbmcu
CisgKiBAcmV0dXJuIE51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGRhdGEuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCit0eXBlZGVm
IGludDMyX3QgVV9DQUxMQ09OVgorVVRleHRFeHRyYWN0KFVUZXh0ICp1dCwKKyAgICAgICAgICAg
ICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAg
IFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAgICBVRXJyb3JD
b2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVU
ZXh0LnJlcGxhY2UoKS4KKyAqCisgKiBSZXBsYWNlIGEgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIHRl
eHQgd2l0aCBhIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogTGVhdmVzIHRoZSBjdXJyZW50IGl0
ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZQorICogIG5ld2x5
IGluc2VydGVkIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogVGhpcyBmdW5jdGlvbiBuZWVkIG9u
bHkgYmUgaW1wbGVtZW50ZWQgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisg
KgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNp
bmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3Ry
aW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRl
eHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlv
biBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRvIGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVu
ZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJlIGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3Bl
cmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAgICAgICAgICAgICAgIHRoZSBVVGV4dCByZXByZXNl
bnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQg
ICAgICB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgcmVwbGFjZWQK
KyAqIEBwYXJhbSBuYXRpdmVMaW1pdCAgICAgIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZv
bGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICogQHBhcmFtIHJlcGxhY2VtZW50
VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICogQHBhcmFtIHJlcGxhY21l
bnRMZW5ndGggbGVuZ3RoIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGluIFVDaGFycywgb3IgLTEg
aWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgICAg
ICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICoKKyAqIEBy
ZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0cyBieSB3aGlj
aAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9yIGNvbnRyYWN0
ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgaW50MzJfdCBVX0NBTExD
T05WCitVVGV4dFJlcGxhY2UoVVRleHQgKnV0LAorICAgICAgICAgICAgIGludDY0X3QgbmF0aXZl
U3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCisgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnJl
cGxhY2VtZW50VGV4dCwgaW50MzJfdCByZXBsYWNtZW50TGVuZ3RoLAorICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBm
b3IgVVRleHQuY29weSgpLgorICoKKyAqIENvcHkgb3IgbW92ZSBhIHN1YnN0cmluZyBmcm9tIG9u
ZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxlIHJldGFpbmlu
ZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgorICogVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmluZ3MuCisgKiBUaGUgZGVz
dGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICoKKyAq
IFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7
CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4K
KyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5lZWQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgVVRleHQg
dHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisgKgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0
aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUK
KyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3Bv
bnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRleHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0
byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRv
IGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJl
IGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAg
ICAgICAgICAgVGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBv
bi4KKyAqIEBwYXJhbSBuYXRpdmVTdGFydCAgVGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUg
cmVnaW9uIHRvIGJlIGNvcGllZCBvciBtb3ZlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICBUaGUg
aW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNl
ZC4KKyAqIEBwYXJhbSBuYXRpdmVEZXN0ICAgVGhlIGRlc3RpbmF0aW9uIGluZGV4IHRvIHdoaWNo
IHRoZSBzb3VyY2Ugc3Vic3RyaW5nIGlzIGNvcGllZCBvciBtb3ZlZC4KKyAqIEBwYXJhbSBtb3Zl
ICAgICAgICAgSWYgVFJVRSwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBub3QgY29waWVk
L2R1cGxpY2F0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBz
dGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX05PX1dSSVRFX1BFUk1JU1NJT04KKyAq
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRlZiB2b2lkIFVfQ0FMTENPTlYKK1VUZXh0
Q29weShVVGV4dCAqdXQsCisgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBu
YXRpdmVMaW1pdCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZURlc3QsCisgICAgICAgICAgVUJv
b2wgbW92ZSwKKyAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0
aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm1hcE9mZnNldFRvTmF0aXZlKCkuCisgKiBN
YXAgZnJvbSB0aGUgY3VycmVudCBVQ2hhciBvZmZzZXQgd2l0aGluIHRoZSBjdXJyZW50IHRleHQg
Y2h1bmsgdG8KKyAqICB0aGUgY29ycmVzcG9uZGluZyBuYXRpdmUgaW5kZXggaW4gdGhlIG9yaWdp
bmFsIHNvdXJjZSB0ZXh0LgorICoKKyAqIFRoaXMgaXMgcmVxdWlyZWQgb25seSBmb3IgdGV4dCBw
cm92aWRlcnMgdGhhdCBkbyBub3QgdXNlIG5hdGl2ZSBVVEYtMTYgaW5kZXhlcy4KKyAqCisgKiBA
cGFyYW0gdXQgICAgIHRoZSBVVGV4dC4KKyAqIEByZXR1cm4gQWJzb2x1dGUgKG5hdGl2ZSkgaW5k
ZXggY29ycmVzcG9uZGluZyB0byBjaHVua09mZnNldCBpbiB0aGUgY3VycmVudCBjaHVuay4KKyAq
ICAgICAgICAgVGhlIHJldHVybmVkIG5hdGl2ZSBpbmRleCBzaG91bGQgYWx3YXlzIGJlIHRvIGEg
Y29kZSBwb2ludCBib3VuZGFyeS4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRl
ZiBpbnQ2NF90IFVfQ0FMTENPTlYKK1VUZXh0TWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQg
KnV0KTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5tYXBJ
bmRleFRvVVRGMTYoKS4KKyAqIE1hcCBmcm9tIGEgbmF0aXZlIGluZGV4IHRvIGEgVUNoYXIgb2Zm
c2V0IHdpdGhpbiBhIHRleHQgY2h1bmsuCisgKiBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgdGhl
IG5hdGl2ZSBpbmRleCBkb2VzIG5vdCBmYWxsIHdpdGhpbiB0aGUKKyAqICAgY3VycmVudCBjaHVu
ay4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIG9ubHkgZm9yIHRleHQgcHJvdmlk
ZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRpdmUgVVRGLTE2IGluZGV4ZXMuCisgKgorICogQHBhcmFt
IHV0ICAgICAgICAgIFRoZSBVVGV4dCBjb250YWluaW5nIHRoZSB0ZXh0IGNodW5rLgorICogQHBh
cmFtIG5hdGl2ZUluZGV4IEFic29sdXRlIChuYXRpdmUpIHRleHQgaW5kZXgsIGNodW5rLT5zdGFy
dDw9aW5kZXg8PWNodW5rLT5saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBDaHVuay1yZWxh
dGl2ZSBVVEYtMTYgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBuYXRpdmUK
KyAqICAgICAgICAgICAgICAgICAgICBpbmRleC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LwordHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKK1VUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2
KGNvbnN0IFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7CisKKworLyoqCisgKiBGdW5j
dGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC51dGV4dENsb3NlKCkuCisgKgorICogQSBU
ZXh0IFByb3ZpZGVyIGNsb3NlIGZ1bmN0aW9uIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHByb3ZpZGVy
IHR5cGVzIHRoYXQgbWFrZQorICogIGFsbG9jYXRpb25zIGluIHRoZWlyIG9wZW4gZnVuY3Rpb24g
KG9yIG90aGVyIGZ1bmN0aW9ucykgdGhhdCBtdXN0IGJlIAorICogIGNsZWFuZWQgd2hlbiB0aGUg
VVRleHQgaXMgY2xvc2VkLgorICoKKyAqIFRoZSBhbGxvY2F0aW9uIG9mIHRoZSBVVGV4dCBzdHJ1
Y3QgaXRzZWxmIGFuZCBhbnkgImV4dHJhIiBzdG9yYWdlCisgKiBhc3NvY2lhdGVkIHdpdGggdGhl
IFVUZXh0IGlzIGhhbmRsZWQgYnkgdGhlIGNvbW1vbiBVVGV4dCBpbXBsZW1lbnRhdGlvbgorICog
YW5kIGRvZXMgbm90IHJlcXVpcmUgcHJvdmlkZXIgc3BlY2lmaWMgY2xlYW51cCBpbiBhIGNsb3Nl
IGZ1bmN0aW9uLgorICoKKyAqIE1vc3QgVVRleHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb25zIGRv
IG5vdCBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSB1dCBB
IFVUZXh0IG9iamVjdCB0byBiZSBjbG9zZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgdm9pZCBVX0NBTExDT05WCitVVGV4dENsb3NlKFVUZXh0ICp1dCk7CisKKworLyoq
CisgICogICAocHVibGljKSAgRnVuY3Rpb24gZGlzcGF0Y2ggdGFibGUgZm9yIFVUZXh0LgorICAq
ICAgICAgICAgICAgIENvbmNlcHR1YWxseSB2ZXJ5IG11Y2ggbGlrZSBhIEMrKyBWaXJ0dWFsIEZ1
bmN0aW9uIFRhYmxlLgorICAqICAgICAgICAgICAgIFRoaXMgc3RydWN0IGRlZmluZXMgdGhlIG9y
Z2FuaXphdGlvbiBvZiB0aGUgdGFibGUuCisgICogICAgICAgICAgICAgRWFjaCB0ZXh0IHByb3Zp
ZGVyIGltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBhbgorICAqICAgICAgICAgICAgICBhY3R1
YWwgdGFibGUgdGhhdCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlv
bnMKKyAgKiAgICAgICAgICAgICAgZm9yIHRoZSB0eXBlIG9mIHRleHQgYmVpbmcgaGFuZGxlZC4K
KyAgKiAgIEBzdGFibGUgSUNVIDMuNgorICAqLworc3RydWN0IFVUZXh0RnVuY3MgeworICAgIC8q
KgorICAgICAqICAgKHB1YmxpYykgIEZ1bmN0aW9uIHRhYmxlIHNpemUsIHNpemVvZihVVGV4dEZ1
bmNzKQorICAgICAqICAgICAgICAgICAgIEludGVuZGVkIGZvciB1c2Ugc2hvdWxkIHRoZSB0YWJs
ZSBncm93IHRvIGFjY29tb2RhdGUgYWRkZWQKKyAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbnMg
aW4gdGhlIGZ1dHVyZSwgdG8gYWxsb3cgdGVzdHMgZm9yIG9sZGVyIGZvcm1hdAorICAgICAqICAg
ICAgICAgICAgIGZ1bmN0aW9uIHRhYmxlcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBleHRlbnNp
b25zLgorICAgICAqCisgICAgICogICAgICAgICAgICAgRmllbGRzIGFyZSBwbGFjZWQgZm9yIG9w
dGltYWwgYWxpZ25tZW50IG9uCisgICAgICogICAgICAgICAgICAgMzIvNjQvMTI4LWJpdC1wb2lu
dGVyIG1hY2hpbmVzLCBieSBub3JtYWxseSBncm91cGluZyB0b2dldGhlcgorICAgICAqICAgICAg
ICAgICAgIDQgMzItYml0IGZpZWxkcywKKyAgICAgKiAgICAgICAgICAgICA0IHBvaW50ZXJzLAor
ICAgICAqICAgICAgICAgICAgIDIgNjQtYml0IGZpZWxkcworICAgICAqICAgICAgICAgICAgIGlu
IHNlcXVlbmNlLgorICAgICAqICAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgaW50MzJf
dCAgICAgICB0YWJsZVNpemU7CisKKyAgICAvKioKKyAgICAgICogICAocHJpdmF0ZSkgIEFsaWdu
bWVudCBwYWRkaW5nLgorICAgICAgKiAgICAgICAgICAgICAgRG8gbm90IHVzZSwgcmVzZXJ2ZWQg
Zm9yIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrIG9ubHkuCisgICAgICAqICAgQGludGVybmFs
CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgcmVzZXJ2ZWQxLCAvKiogQGludGVybmFsICov
IHJlc2VydmVkMiwgLyoqIEBpbnRlcm5hbCAqLyByZXNlcnZlZDM7CisKKworICAgIC8qKgorICAg
ICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0Q2xvbmUKKyAgICAgKgorICAg
ICAqIEBzZWUgVVRleHRDbG9uZQorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAg
IFVUZXh0Q2xvbmUgKmNsb25lOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgZnVuY3Rpb24g
cG9pbnRlciBmb3IgVVRleHRMZW5ndGgKKyAgICAgKiBNYXkgYmUgZXhwZW5zaXZlIHRvIGNvbXB1
dGUhCisgICAgICoKKyAgICAgKiBAc2VlIFVUZXh0TGVuZ3RoCisgICAgICogQHN0YWJsZSBJQ1Ug
My42CisgICAgICovCisgICAgVVRleHROYXRpdmVMZW5ndGggKm5hdGl2ZUxlbmd0aDsKKworICAg
IC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0QWNjZXNzLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dEFjY2VzcworICAgICAqIEBzdGFibGUgSUNVIDMuNgor
ICAgICAqLworICAgIFVUZXh0QWNjZXNzICphY2Nlc3M7CisKKyAgICAvKioKKyAgICAgKiAocHVi
bGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dEV4dHJhY3QuCisgICAgICoKKyAgICAgKiBA
c2VlIFVUZXh0RXh0cmFjdAorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIFVU
ZXh0RXh0cmFjdCAqZXh0cmFjdDsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9u
IHBvaW50ZXIgZm9yIFVUZXh0UmVwbGFjZS4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRSZXBs
YWNlCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRSZXBsYWNlICpy
ZXBsYWNlOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3Ig
VVRleHRDb3B5LgorICAgICAqCisgICAgICogQHNlZSBVVGV4dENvcHkKKyAgICAgKiBAc3RhYmxl
IElDVSAzLjYKKyAgICAgKi8KKyAgICBVVGV4dENvcHkgKmNvcHk7CisKKyAgICAvKioKKyAgICAg
KiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dE1hcE9mZnNldFRvTmF0aXZlLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dE1hcE9mZnNldFRvTmF0aXZlCisgICAgICogQHN0YWJs
ZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRNYXBPZmZzZXRUb05hdGl2ZSAqbWFwT2Zmc2V0
VG9OYXRpdmU7CisKKyAgICAvKioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZv
ciBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNi4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRN
YXBOYXRpdmVJbmRleFRvVVRGMTYKKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAg
ICBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNiAqbWFwTmF0aXZlSW5kZXhUb1VURjE2OworCisg
ICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRDbG9zZS4K
KyAgICAgICoKKyAgICAgICogQHNlZSBVVGV4dENsb3NlCisgICAgICAqIEBzdGFibGUgSUNVIDMu
NgorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqY2xvc2U7CisKKyAgICAvKioKKyAgICAgICog
KHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAg
ICAgKi8KKyAgICBVVGV4dENsb3NlICAqc3BhcmUxOworICAgIAorICAgIC8qKgorICAgICAgKiAo
cHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9uIHBvaW50ZXIKKyAgICAgICogQGludGVybmFsCisgICAg
ICAqLworICAgIFVUZXh0Q2xvc2UgICpzcGFyZTI7CisKKyAgICAvKioKKyAgICAgICogKHByaXZh
dGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAgICAgKi8K
KyAgICBVVGV4dENsb3NlICAqc3BhcmUzOworCit9OworLyoqCisgKiBGdW5jdGlvbiBkaXNwYXRj
aCB0YWJsZSBmb3IgVVRleHQKKyAqIEBzZWUgVVRleHRGdW5jcworICovCit0eXBlZGVmIHN0cnVj
dCBVVGV4dEZ1bmNzIFVUZXh0RnVuY3M7CisKKyAvKioKKyAgKiAgIFVUZXh0IHN0cnVjdC4gIFBy
b3ZpZGVzIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBVVGV4dCBhY2Nlc3MgY29k
ZQorICAqICAgICAgICAgICAgICAgICAgYW5kIHRoZSBVVGV4dCBwcm92aWRlciBjb2RlIHRoYXQg
d29ya3Mgb24gc3BlY2lmaWMga2luZHMgb2YKKyAgKiAgICAgICAgICAgICAgICAgIHRleHQgIChV
VEYtOCwgbm9uY29udGlndW91cyBVVEYtMTYsIHdoYXRldmVyLikKKyAgKgorICAqICAgICAgICAg
ICAgICAgICAgQXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHByZWRlZmluZWQgdHlwZXMgb2Yg
dGV4dCBwcm92aWRlcnMKKyAgKiAgICAgICAgICAgICAgICAgIHRvIHBhc3MgdGV4dCBkYXRhIHRv
IElDVSBzZXJ2aWNlcyB3aWxsIGhhdmUgbm8gbmVlZCB0byB2aWV3IHRoZQorICAqICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzIG9mIHRoZSBVVGV4dCBzdHJ1Y3RzIHRoYXQgdGhleSBvcGVuLgor
ICAqCisgICogQHN0YWJsZSBJQ1UgMy42CisgICovCitzdHJ1Y3QgVVRleHQgeworICAgIC8qKgor
ICAgICAqICAgICAocHJpdmF0ZSkgIE1hZ2ljLiAgVXNlZCB0byBoZWxwIGRldGVjdCB3aGVuIFVU
ZXh0IGZ1bmN0aW9ucyBhcmUgaGFuZGVkCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBp
bnZhbGlkIG9yIHVuaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCisgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICB1dGV4dF9vcGVuWFlaKCkgZnVuY3Rpb25zIHRha2UgYW4gaW5pdGlhbGl6ZWQs
CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG9wZW4s
IFVUZXh0IHN0cnVjdCBhcyBhbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
YWwgZmlsbC1pbiBwYXJhbWV0ZXIuICBUaGlzIG1hZ2ljIGZpZWxkCisgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNoZWNrIGZvciB0aGF0IGluaXRpYWxpemF0aW9uLgor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCBwcm92aWRlciBjbG9zZSBmdW5jdGlv
bnMgbXVzdCBOT1QgY2xlYXIKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWdp
YyBmaWVsZCBiZWNhdXNlIHRoYXQgd291bGQgcHJldmVudAorICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgcmV1c2Ugb2YgdGhlIFVUZXh0IHN0cnVjdC4KKyAgICAgKiBAaW50ZXJuYWwKKyAg
ICAgKi8KKyAgICB1aW50MzJfdCAgICAgICBtYWdpYzsKKworCisgICAgLyoqCisgICAgICogICAg
IChwcml2YXRlKSAgRmxhZ3MgZm9yIG1hbmFnaW5nIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5n
IG9mCisgICAgICogICAgICAgICAgICAgICAgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFVU
ZXh0LgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIGludDMyX3QgICAgICAgIGZsYWdz
OworCisKKyAgICAvKioKKyAgICAgICogIFRleHQgcHJvdmlkZXIgcHJvcGVydGllcy4gIFRoaXMg
c2V0IG9mIGZsYWdzIGlzIG1haW50YWludGVkIGJ5IHRoZQorICAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICogIEBz
dGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgcHJvdmlkZXJQcm9w
ZXJ0aWVzOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgc2l6ZU9mU3RydWN0PXNpemVvZihV
VGV4dCkKKyAgICAgKiBBbGxvd3MgcG9zc2libGUgYmFja3dhcmQgY29tcGF0aWJsZSBleHRlbnNp
b24uCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBpbnQzMl90
ICAgICAgICAgc2l6ZU9mU3RydWN0OworICAgIAorICAgIC8qIC0tLS0tLSAxNiBieXRlIGFsaWdu
bWVudCBib3VuZGFyeSAtLS0tLS0tLS0tLSAgKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAg
KHByb3RlY3RlZCkgTmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgcG9zaXRpb24g
Zm9sbG93aW5nCisgICAgICAqICAgICAgICAgICAgICB0aGUgY3VycmVudCBjaHVuay4KKyAgICAg
ICogIEBzdGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBpbnQ2NF90ICAgICAgICAgY2h1bmtO
YXRpdmVMaW1pdDsKKworICAgIC8qKgorICAgICAqICAgKHByb3RlY3RlZCkgIFNpemUgaW4gYnl0
ZXMgb2YgdGhlIGV4dHJhIHNwYWNlIChwRXh0cmEpLgorICAgICAqICBAc3RhYmxlIElDVSAzLjQK
KyAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICBleHRyYVNpemU7CisKKyAgICAvKioKKyAgICAg
ICogICAgKHByb3RlY3RlZCkgVGhlIGhpZ2hlc3QgY2h1bmsgb2Zmc2V0IHdoZXJlIG5hdGl2ZSBp
bmRleGluZyBhbmQKKyAgICAgICogICAgY2h1bmsgKFVURi0xNikgaW5kZXhpbmcgY29ycmVzcG9u
ZC4gIEZvciBVVEYtMTYgc291cmNlcywgdmFsdWUKKyAgICAgICogICAgd2lsbCBiZSBlcXVhbCB0
byBjaHVua0xlbmd0aC4KKyAgICAgICoKKyAgICAgICogICAgQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBuYXRpdmVJbmRleGluZ0xpbWl0OworCisgICAgLyog
LS0tLSAxNiBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tLS0tLSAqLworICAgIAorICAgIC8qKgor
ICAgICAqICAocHJvdGVjdGVkKSBOYXRpdmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBp
biB0aGUgdGV4dCBjaHVuay4KKyAgICAgKiAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAg
aW50NjRfdCAgICAgICAgIGNodW5rTmF0aXZlU3RhcnQ7CisKKyAgICAvKioKKyAgICAgKiAgKHBy
b3RlY3RlZCkgQ3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0IGNodW5r
IChVVEYtMTYgYnVmZmVyKS4KKyAgICAgKiAgVGhpcyBpcyB0aGUgaW5kZXggdG8gdGhlIGNoYXJh
Y3RlciB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdXRleHRfbmV4dDMyKCkuCisgICAgICogIEBz
dGFibGUgSUNVIDMuNgorICAgICAqLworICAgIGludDMyX3QgICAgICAgICBjaHVua09mZnNldDsK
KworICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSBMZW5ndGggdGhlIHRleHQgY2h1bmsgKFVU
Ri0xNiBidWZmZXIpLCBpbiBVQ2hhcnMuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAq
LworICAgIGludDMyX3QgICAgICAgICBjaHVua0xlbmd0aDsKKworICAgIC8qIC0tLS0gMTYgIGJ5
dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAqICAocHJv
dGVjdGVkKSAgcG9pbnRlciB0byBhIGNodW5rIG9mIHRleHQgaW4gVVRGLTE2IGZvcm1hdC4KKyAg
ICAgKiAgTWF5IHJlZmVyIGVpdGhlciB0byBvcmlnaW5hbCBzdG9yYWdlIG9mIHRoZSBzb3VyY2Ug
b2YgdGhlIHRleHQsIG9yCisgICAgICogIGlmIGNvbnZlcnNpb24gd2FzIHJlcXVpcmVkLCB0byBh
IGJ1ZmZlciBvd25lZCBieSB0aGUgVVRleHQuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAg
ICAqLworICAgIGNvbnN0IFVDaGFyICAgICpjaHVua0NvbnRlbnRzOworCisgICAgIC8qKgorICAg
ICAgKiAocHVibGljKSAgICAgUG9pbnRlciB0byBEaXNwYXRjaCB0YWJsZSBmb3IgYWNjZXNzaW5n
IGZ1bmN0aW9ucyBmb3IgdGhpcyBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGNvbnN0IFVUZXh0RnVuY3MgICAgICpwRnVuY3M7CisKKyAgICAvKioKKyAgICAg
KiAgKHByb3RlY3RlZCkgIFBvaW50ZXIgdG8gYWRkaXRpb25hbCBzcGFjZSByZXF1ZXN0ZWQgYnkg
dGhlCisgICAgICogICAgICAgICAgICAgICB0ZXh0IHByb3ZpZGVyIGR1cmluZyB0aGUgdXRleHRf
b3BlbiBvcGVyYXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgdm9p
ZCAgICAgICAgICAqcEV4dHJhOworCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRl
ciB0byBzdHJpbmcgb3IgdGV4dC1jb250YWluaW4gb2JqZWN0IG9yIHNpbWlsYXIuCisgICAgICog
VGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSB0ZXh0IHRoYXQgdGhpcyBVVGV4dCBpcyB3cmFwcGlu
ZywgaW4gYSBmb3JtYXQKKyAgICAgKiAgdGhhdCBpcyBrbm93biB0byB0aGUgdGV4dCBwcm92aWRl
ciBmdW5jdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgY29uc3Qg
dm9pZCAgICpjb250ZXh0OworCisgICAgLyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tICovCisKKyAgICAvKioKKyAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFp
bGFibGUgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAgKiBOb3QgdXNlZCBieSBV
VGV4dCBjb21tb24gY29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBj
b25zdCB2b2lkICAgICAqcDsgCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRlciBm
aWVsZHMgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisgICAgICogTm90
IHVzZWQgYnkgVVRleHQgY29tbW9uIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICovCisgICAgY29uc3Qgdm9pZCAgICAgKnE7CisgICAgIC8qKgorICAgICAqIChwcm90ZWN0ZWQp
IFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgor
ICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgorICAgICAqIEBzdGFibGUgSUNV
IDMuNgorICAgICAgKi8KKyAgICBjb25zdCB2b2lkICAgICAqcjsKKworICAgIC8qKgorICAgICAg
KiAgUHJpdmF0ZSBmaWVsZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJh
bWV3b3JrCisgICAgICAqICAgICBpdHNlbGYuICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5
IHRoZSB0ZXh0IHByb3ZpZGVycy4KKyAgICAgICogQGludGVybmFsIElDVSAzLjQKKyAgICAgICov
CisgICAgdm9pZCAgICAgICAgICAgKnByaXZQOworCisKKyAgICAvKiAtLS0gMTYgYnl0ZSBhbGln
bm1lbnQgYm91bmRhcnktLS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAocHJvdGVjdGVk
KSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisg
ICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmssIG9yIGJ5IHRoZSBjbGllbnQg
KHVzZXIpIG9mIHRoZSBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICAqLwor
ICAgIGludDY0X3QgICAgICAgICBhOworCisgICAgLyoqCisgICAgICAqIChwcm90ZWN0ZWQpIElu
dGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAg
ICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZyYW1ld29yaywgb3IgYnkgdGhlIGNsaWVudCAodXNl
cikgb2YgdGhlIFVUZXh0LgorICAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgICovCisgICAg
aW50MzJfdCAgICAgICAgIGI7CisKKyAgICAvKioKKyAgICAgICogKHByb3RlY3RlZCkgSW50ZWdl
ciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgorICAgICAgKiBO
b3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3b3JrLCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBv
ZiB0aGUgVVRleHQuCisgICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQz
Ml90ICAgICAgICAgYzsKKworICAgIC8qICAtLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tLSAqLworCisKKyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9y
IGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAg
VGhpcyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAq
IEBpbnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGludDY0X3QgICAgICAgICBwcml2QTsK
KyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2Ug
YnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3Qg
dG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJ
Q1UgMy40CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QjsKKyAgICAvKioKKyAg
ICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0
IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hl
ZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QzsKK307CisKKworLyoqCisgKiAgQ29tbW9u
IGZ1bmN0aW9uIGZvciB1c2UgYnkgVGV4dCBQcm92aWRlciBpbXBsZW1lbnRhdGlvbnMgdG8gYWxs
b2NhdGUgYW5kL29yIGluaXRpYWxpemUKKyAqICBhIG5ldyBVVGV4dCBzdHJ1Y3QuICBUbyBiZSBj
YWxsZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMuCisg
KiAgSWYgdGhlIHN1cHBsaWVkIFVUZXh0IHBhcmFtZXRlciBpcyBudWxsLCBhIG5ldyBVVGV4dCBz
dHJ1Y3Qgd2lsbCBiZSBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisgKiAgSWYgdGhlIHN1cHBsaWVk
IFVUZXh0IGlzIGFscmVhZHkgb3BlbiwgdGhlIHByb3ZpZGVyJ3MgY2xvc2UgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQKKyAqICBzbyB0aGF0IHRoZSBzdHJ1Y3QgY2FuIGJlIHJldXNlZCBieSB0aGUg
b3BlbiB0aGF0IGlzIGluIHByb2dyZXNzLgorICoKKyAqIEBwYXJhbSB1dCAgIHBvaW50ZXIgdG8g
YSBVVGV4dCBzdHJ1Y3QgdG8gYmUgcmUtdXNlZCwgb3IgbnVsbCBpZiBhIG5ldyBVVGV4dAorICog
ICAgICAgICAgICAgc2hvdWxkIGJlIGFsbG9jYXRlZC4KKyAqIEBwYXJhbSBleHRyYVNwYWNlIFRo
ZSBhbW91bnQgb2YgYWRkaXRpb25hbCBzcGFjZSB0byBiZSBhbGxvY2F0ZWQgYXMgcGFydAorICog
ICAgICAgICAgICAgb2YgdGhpcyBVVGV4dCwgZm9yIHVzZSBieSB0eXBlcyBvZiBwcm92aWRlcnMg
dGhhdCByZXF1aXJlCisgKiAgICAgICAgICAgICBhZGRpdGlvbmFsIHN0b3JhZ2UuCisgKiBAcGFy
YW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gcG9pbnRlciB0
byB0aGUgVVRleHQsIGFsbG9jYXRlZCBpZiBuZWNlc3NhcnksIHdpdGggZXh0cmEgc3BhY2Ugc2V0
IHVwIGlmIHJlcXVlc3RlZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4
dCAqIFVfRVhQT1JUMgordXRleHRfc2V0dXAoVVRleHQgKnV0LCBpbnQzMl90IGV4dHJhU3BhY2Us
IFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorLyoq
CisgICogQGludGVybmFsCisgICogIFZhbHVlIHVzZWQgdG8gaGVscCBpZGVudGlmeSBjb3JyZWN0
bHkgaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0cy4KKyAgKiAgTm90ZTogIG11c3QgYmUgcHVibGlj
bHkgdmlzaWJsZSBzbyB0aGF0IFVURVhUX0lOSVRJQUxJWkVSIGNhbiBhY2Nlc3MgaXQuCisgICov
CitlbnVtIHsKKyAgICBVVEVYVF9NQUdJQyA9IDB4MzQ1YWQ4MmMKK307CisjZW5kaWYgIC8qIFVf
SElERV9JTlRFUk5BTF9BUEkgKi8KKworLyoqCisgKiBpbml0aWFsaXplciB0byBiZSB1c2VkIHdp
dGggbG9jYWwgKHN0YWNrKSBpbnN0YW5jZXMgb2YgYSBVVGV4dAorICogIHN0cnVjdC4gIFVUZXh0
IHN0cnVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgcGFzc2luZworICogIHRoZW0gdG8g
b25lIG9mIHRoZSB1dGV4dF9vcGVuIGZ1bmN0aW9ucy4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjYK
KyAqLworI2RlZmluZSBVVEVYVF9JTklUSUFMSVpFUiB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIFVURVhUX01BR0lDLCAgICAgICAg
ICAvKiBtYWdpYyAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAg
ICAgICAgICAgICAgICAgLyogZmxhZ3MgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAg
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHByb3ZpZGVyUHJvcHMgICAgICAgICovIFwK
KyAgICAgICAgICAgICAgICAgIHNpemVvZihVVGV4dCksICAgICAgICAvKiBzaXplT2ZTdHJ1Y3Qg
ICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyog
Y2h1bmtOYXRpdmVMaW1pdCAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAg
ICAgICAgICAgIC8qIGV4dHJhU2l6ZSAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAg
IDAsICAgICAgICAgICAgICAgICAgICAvKiBuYXRpdmVJbmRleGluZ0xpbWl0ICAqLyBcCisgICAg
ICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtOYXRpdmVTdGFydCAg
ICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGNodW5r
T2Zmc2V0ICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAvKiBjaHVua0xlbmd0aCAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxM
LCAgICAgICAgICAgICAgICAgLyogY2h1bmtDb250ZW50cyAgICAgICAgKi8gXAorICAgICAgICAg
ICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIHBGdW5jcyAgICAgICAgICAgICAgICov
IFwKKyAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwRXh0cmEgICAg
ICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAg
LyogY29udGV4dCAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgTlVMTCwgTlVM
TCwgTlVMTCwgICAgIC8qIHAsIHEsIHIgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAg
ICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwcml2UCAgICAgICAgICAgICAgICAqLyBcCisg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAgICAgICAgICAgICAgLyogYSwgYiwgYyAgICAgICAg
ICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgMCwgMCAgICAgICAgICAgICAgIC8qIHBy
aXZBLEIsQywgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIH0KKworCitVX0NERUNM
X0VORAorCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDIxNTU5NjY3NDg0Njgy
MTRjMDM2NThkMDNhNWQ3NzQ2ZmZlODA4YTQuLjZlY2RjZTZiZTdmZTg0ZTFmMGVhMjgyM2NiOGM5
MzVlYjlkNzIwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0
KFdURl9IRUFERVJTCiAgICAgdGV4dC9DU3RyaW5nLmgKICAgICB0ZXh0L0ludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uaAogICAgIHRleHQvTENoYXIuaAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmgKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5oCiAgICAgdGV4dC9TdHJpbmdDb21t
b24uaAogICAgIHRleHQvU3RyaW5nSGFzaC5oCkBAIC0xNDcsOSArMTQ4LDE1IEBAIHNldChXVEZf
SEVBREVSUwogICAgIHRleHQvU3RyaW5nVmlldy5oCiAgICAgdGV4dC9TeW1ib2xJbXBsLmgKICAg
ICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKyAgICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKyAg
ICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaAogICAgIHRleHQvVW5pcXVlZFN0
cmluZ0ltcGwuaAogICAgIHRleHQvV1RGU3RyaW5nLmgKIAorICAgIHRleHQvaWN1L1VUZXh0UHJv
dmlkZXIuaAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAorICAgIHRleHQvaWN1
L1VUZXh0UHJvdmlkZXJVVEYxNi5oCisKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCiAK
ICAgICB1bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgKQEAgLTIyMSw4ICsyMjgsMTMgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAogICAgIHRleHQvU3RyaW5nVmll
dy5jcHAKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAorICAgIHRleHQvVGV4dEJyZWFrSXRl
cmF0b3IuY3BwCiAgICAgdGV4dC9XVEZTdHJpbmcuY3BwCiAKKyAgICB0ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmNwcAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAgdGV4
dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAorCiAgICAgdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwCiAKICAgICB1bmljb2RlL1VURjguY3BwCkBAIC0yMzQsNiArMjQ2LDcgQEAgc2V0KFdU
Rl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V1RGX0RJUn0vd3RmIgogICAgICIke1dURl9E
SVJ9L3d0Zi9kdG9hIgogICAgICIke1dURl9ESVJ9L3d0Zi90ZXh0IgorICAgICIke1dURl9ESVJ9
L3d0Zi90ZXh0L2ljdSIKICAgICAiJHtXVEZfRElSfS93dGYvdGhyZWFkcyIKICAgICAiJHtXVEZf
RElSfS93dGYvdW5pY29kZSIKICAgICAiJHtUSElSRFBBUlRZX0RJUn0iCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDcxYTUyYWU1ZTFlMjdhNGM4ODk1NjU3Y2Q0ZTA1ZjM4YmM2YTBhOWUu
LmJhMTU0NzQ4NzAxOWIyMWMzN2NmOTZmOWUwOTM3MmI4ZGQxZGM4OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xLDYgKzEsOCBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAg
ICBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAogCisgICAgdGV4dC9lZmwv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKKwogICAgIGVmbC9EaXNwYXRjaFF1
ZXVlRWZsLmNwcAogICAgIGVmbC9NYWluVGhyZWFkRWZsLmNwcAogICAgIGVmbC9SdW5Mb29wRWZs
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyMGI5Yjk5M2E3YWE3ZjhjNTY1Y2Iy
ODMyNDZjY2JmZDViMDc1NDAyLi5mNjE5ZGQ1N2M3Nzg4ZGUyYzk1MzcyZDJiYWVhOTk4MGY3NmI1
N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOCw2ICs4LDggQEAgbGlzdChBUFBF
TkQgV1RGX1NPVVJDRVMKICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcAogICAgIGdsaWIvUnVu
TG9vcEdMaWIuY3BwCiAgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAK
KworICAgIHRleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCiApCiAK
IGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
Y2UzZGRiY2IwODFiZjczNzllNTM1N2QxN2JiOWJiYmRhZDBhOTNlOS4uNDkzYjc5OGQ2MzY2NTJm
MjMyZWEzZjk2ZDdjZjg5Zjg5MzIzYjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTE4LDYgKzE4LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJD
Ri5jcHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAgIHRleHQvbWFjL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KKwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAgIGNv
Y29hL1dvcmtRdWV1ZUNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAzYjNm
OThiYmNjZmQ5MDI5Njk0ZmRlMjUyNjExMjdhNjEyYmRjMzIzLi5hMGJkMTMyYzNlNGMxNzIzYjg5
MTVkMTBiYjk0MzQ0ZWZkZTAyOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMSw1
ICsxLDcgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0gICAgUExhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzV2luLmNwcAorICAgIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1dp
bi5jcHAKKworICAgIHRleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3Bw
CiAKICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmlu
Z0NGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAppbmRleCA2NzhmOGJmZDEyMGEzYTM2MTFiM2NjZThl
MWNlOThmZWM5YWFjMDJkLi45MWIzMWY5ZGRmOTAwYTY2Zjk3ODg4YjljM2YxMWZiYjU2NjEyNTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaW55TFJVQ2FjaGUuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIFZhbHVlVHlwZT4KIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewpAQCAtNzgsNCAr
NzgsNyBAQCBwcml2YXRlOgogCiB9CiAKK3VzaW5nIFdURjo6VGlueUxSVUNhY2hlOwordXNpbmcg
V1RGOjpUaW55TFJVQ2FjaGVQb2xpY3k7CisKICNlbmRpZiAvLyBUaW55TFJVQ2FjaGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDc2NjA3ZDJhOTNkNWY4YjEwNDQ3MGVkODdjNDRkOWNjZjA4OTMxOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAg
LTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCisjZGVmaW5lIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVV9oCisKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKyNpbmNsdWRlIDx1bmljb2Rl
L3VicmsuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNz
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJy
ZWFrSXRlcmF0b3JQb29sKTsKK3B1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7
IH0KKworICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQorICAg
IHsKKyAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQ
b29sPiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9v
bD47CisgICAgICAgIHJldHVybiAqKnBvb2w7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBt
YWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGxv
Y2FsZVdpdGhLZXl3b3JkOworICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmQobG9jYWxl
KTsKKyAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgiQGJyZWFrPSIpOwor
ICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKKyAg
ICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoImxvb3NlIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5v
cm1hbDoKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIm5vcm1h
bCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTRTdHJpY3Q6CisgICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRl
cmFsKCJzdHJpY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBsb2NhbGVXaXRoS2V5d29yZC50b1N0cmluZygpOworICAgIH0KKworICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVy
YXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZyBs
b2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7CisgICAgICAgIGlmIChtb2RlID09IExpbmVC
cmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJl
YWtLZXl3b3JkID0gbG9jYWxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUs
IG1vZGUpOworCisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IDA7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAobV9wb29sW2ldLmZpcnN0ID09IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29y
ZCkgeworICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbV9wb29sW2ldLnNlY29uZDsKKyAgICAg
ICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpdGVyYXRvcikgeworICAgICAg
ICAgICAgaXRlcmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFs
QnJlYWtLZXl3b3JkLCBtb2RlLCBpc0NKSyk7CisgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKCFt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworICAgICAgICBtX3ZlbmRlZEl0
ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCk7Cisg
ICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICB9CisKKyAgICB2b2lkIHB1dChUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IpCisgICAgeworICAgICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworCisgICAgICAgIGlmIChtX3Bv
b2wuc2l6ZSgpID09IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJh
dG9yKG1fcG9vbFswXS5zZWNvbmQpOworICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fcG9vbC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMu
dGFrZShpdGVyYXRvciksIGl0ZXJhdG9yKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OworCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRv
bWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5OworICAgIHR5cGVkZWYgVmVjdG9y
PEVudHJ5LCBjYXBhY2l0eT4gUG9vbDsKKyAgICBQb29sIG1fcG9vbDsKKyAgICBIYXNoTWFwPFRl
eHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKworICAg
IGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJh
dG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ODI0ZTY0MThm
NDI4MmIzZjlkMzUxZTU1MjBjNWRmY2MyYmEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDkyOSBAQAorLyoK
KyAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorCisj
aW5jbHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCisjaW5jbHVkZSAiVVRleHRQcm92
aWRlckxhdGluMS5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgorCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJldHRlciBuYW1lCisjZGVmaW5l
IEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkpCisKK25hbWVz
cGFjZSBXVEYgeworCisvLyBJdGVyYXRvciBpbml0aWFsaXphdGlvbgorCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkpCit7CisgICAg
VUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJr
X29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJl
YWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1
cyk7CisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCisjaWYgIVBMQVRGT1JNKElPUykKKworc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3Qg
Y2hhciogYnJlYWtSdWxlcykKK3sKKyAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKKyAgICBV
RXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RybGVuKGJyZWFrUnVsZXMpOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0g
U3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnJlYWtSdWxlcyksIGxl
bmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3BlblJ1
bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZv
cGVuU3RhdHVzKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1
cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjogJXMgKCVkKSIsIHVfZXJy
b3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9
CisKKyNlbmRpZgorCisKKy8vIEl0ZXJhdG9yIHRleHQgc2V0dGluZworCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcmF0
b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAg
ICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKKyAgICAgICAgdGV4dExvY2FsLnRleHQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAgICAgICAgdGV4dExvY2FsLnRleHQuZXh0cmFTaXplID0g
c2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOworICAgICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0cmEg
PSB0ZXh0TG9jYWwuYnVmZmVyOworCisgICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0aW4xVVRleHRQcm92aWRl
cigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCAmb3Bl
blN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9w
ZW5TdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVi
cmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciks
IHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3Rh
dHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRo
IHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKworICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9y
KSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksICZzZXRUZXh0U3RhdHVz
KTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAmaXRlcmF0b3I7Cit9CisKK3N0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICBpZiAoc3Ry
aW5nLmlzOEJpdCgpKSB7CisgICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7CisgICAg
ICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7CisgICAgICAgIHRleHRMb2Nh
bC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKKyAgICAgICAgdGV4
dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKKworICAgICAgICBVRXJyb3JD
b2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFVUZXh0KiB0ZXh0ID0gb3Bl
bkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgsICZvcGVuU3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
ciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdXRleHRf
Y2xvc2UodGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVVRleHQgdGV4dExvY2FsID0gVVRF
WFRfSU5JVElBTElaRVI7CisKKyAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0
UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQi
LCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAg
ICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJr
X3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0
ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1
cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBz
dGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CisgICAgfQorCisgICAgcmV0
dXJuICZpdGVyYXRvcjsKK30KKworCisvLyBTdGF0aWMgaXRlcmF0b3JzCisKK1RleHRCcmVha0l0
ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgaWYgKCFzdGF0aWNXb3JkQnJlYWtJdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9y
KCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciA9IGluaXRp
YWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKKyAgICBpZiAoIXN0YXRpY1NlbnRlbmNlQnJl
YWtJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4
dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Cit9CisK
K1RleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8gVGhpcyBydWxlIHNldCBpcyBiYXNl
ZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2YgSUNVIDQuMAorICAgIC8vIDxo
dHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3MvcmVsZWFzZS00
LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KKyAgICAvLyBUaGUgbWFqb3IgZGlmZmVy
ZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVkIGJlbG93OgorICAgIC8vICog
UmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gU3BhY2luZ01hcmt9XScgd2l0
aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9IC0gJEV4dGVuZF0nIGZvciBJ
Q1UgMy44IG9yIGVhcmxpZXI7CisgICAgLy8gKiBSZW1vdmVkIHJ1bGVzIHRoYXQgcHJldmVudCBh
IGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJhY3RlcnMgKEJ1ZyAyNDM0Mik7
CisgICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3Zpbmcg
YWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBleGNlcHQgVGFtaWwgKEJ1ZyAx
NTc5MCksIGFuZDsKKyAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBm
cm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2FyYSB2b2ljZWQgbWFy
a3MuCisgICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwgaW5kaWNhdG9yIHN5bWJvbHMu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9CisgICAgICAgICIkQ1IgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgorICAgICAgICAiJExGICAgICAgPSBb
XFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKKyAgICAgICAgIiRDb250cm9sID0g
W1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1dOyIKKyAgICAgICAgIiRWb2lj
ZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiIC8vIEphcGFuZXNlIGhhbGYtd2lkdGgga2F0YWth
bmEgdm9pY2VkIG1hcmtzCisgICAgICAgICIkRXh0ZW5kICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rl
cl9CcmVhayA9IEV4dGVuZH0gJFZvaWNlTWFya3MgLSBbXFx1MEUzMCBcXHUwRTMyIFxcdTBFNDUg
XFx1MEVCMCBcXHUwRUIyXV07IgorICAgICAgICAiJFNwYWNpbmdNYXJrID0gW1tcXHB7R2VuZXJh
bF9DYXRlZ29yeSA9IFNwYWNpbmcgTWFya31dIC0gJEV4dGVuZF07IgorICAgICAgICAiJEwgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMfV07IgorICAgICAgICAiJFYgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBWfV07IgorICAgICAgICAiJFQgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBUfV07IgorICAgICAgICAiJExWICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVn1dOyIKKyAgICAgICAgIiRMVlQg
ICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZUfV07IgorICAgICAgICAiJEhp
bjAgICAgPSBbXFx1MDkwNS1cXHUwOTM5XTsiIC8vIERldmFuYWdhcmkgTGV0dGVyIEEsLi4uLEhh
CisgICAgICAgICIkSGluViAgICA9IFxcdTA5NEQ7IiAvLyBEZXZhbmFnYXJpIFNpZ24gVmlyYW1h
CisgICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5MzldOyIgLy8gRGV2YW5hZ2FyaSBM
ZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkQmVuMCAgICA9IFtcXHUwOTg1LVxcdTA5QjldOyIg
Ly8gQmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRCZW5WICAgID0gXFx1MDlDRDsi
IC8vIEJlbmdhbGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1
MDlCOV07IiAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRQYW4wICAgID0g
W1xcdTBBMDUtXFx1MEEzOV07IiAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAg
IiRQYW5WICAgID0gXFx1MEE0RDsiIC8vIEd1cm11a2hpIFNpZ24gVmlyYW1hCisgICAgICAgICIk
UGFuMSAgICA9IFtcXHUwQTE1LVxcdTBBMzldOyIgLy8gR3VybXVraGkgTGV0dGVyIEthLC4uLixI
YQorICAgICAgICAiJEd1ajAgICAgPSBbXFx1MEE4NS1cXHUwQUI5XTsiIC8vIEd1amFyYXRpIExl
dHRlciBBLC4uLixIYQorICAgICAgICAiJEd1alYgICAgPSBcXHUwQUNEOyIgLy8gR3VqYXJhdGkg
U2lnbiBWaXJhbWEKKyAgICAgICAgIiRHdWoxICAgID0gW1xcdTBBOTUtXFx1MEFCOV07IiAvLyBH
dWphcmF0aSBMZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkT3JpMCAgICA9IFtcXHUwQjA1LVxc
dTBCMzldOyIgLy8gT3JpeWEgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkT3JpViAgICA9IFxc
dTBCNEQ7IiAvLyBPcml5YSBTaWduIFZpcmFtYQorICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIx
NS1cXHUwQjM5XTsiIC8vIE9yaXlhIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRUZWwwICAg
ID0gW1xcdTBDMDUtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCisgICAgICAg
ICIkVGVsViAgICA9IFxcdTBDNEQ7IiAvLyBUZWx1Z3UgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRU
ZWwxICAgID0gW1xcdTBDMTQtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEthLC4uLixIYQor
ICAgICAgICAiJEthbjAgICAgPSBbXFx1MEM4NS1cXHUwQ0I5XTsiIC8vIEthbm5hZGEgTGV0dGVy
IEEsLi4uLEhhCisgICAgICAgICIkS2FuViAgICA9IFxcdTBDQ0Q7IiAvLyBLYW5uYWRhIFNpZ24g
VmlyYW1hCisgICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1LVxcdTBDQjldOyIgLy8gS2FubmFk
YSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRNYWwwICAgID0gW1xcdTBEMDUtXFx1MEQzOV07
IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkTWFsViAgICA9IFxcdTBE
NEQ7IiAvLyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKKyAgICAgICAgIiRNYWwxICAgID0gW1xcdTBE
MTUtXFx1MEQzOV07IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkUkkg
ICAgICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRp
Y2F0b3JzCisgICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7IiAvLyBaZXJvIHdpZHRoIGpvaW5l
cgorICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgLy8gRW1vamktc3R5bGUgdmFyaWF0
aW9uIHNlbGVjdG9yCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkRW1v
amlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0Njkg
XFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBa
V0ogc2VxdWVuY2VzCisgICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBc
XHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAw
MUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxV
MDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0Nzgg
XFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0
ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAw
MUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxV
MDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThd
IDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKKyNlbHNlCisgICAg
ICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxV
MDAwMUY0OEJdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCisg
ICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFG
Mzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAw
MDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxc
VTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgx
LVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFG
NTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAw
MDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0
aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZW5kaWYKKyAgICAgICAgIiRFbW9qaU1v
ZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIgLy8gRml0enBhdHJpY2sgbW9kaWZpZXJz
CisgICAgICAgICIhIWNoYWluOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAg
ICAgIiEhUklOb0NoYWluOyIKKyNlbmRpZgorICAgICAgICAiISFmb3J3YXJkOyIKKyAgICAgICAg
IiRDUiAkTEY7IgorICAgICAgICAiJEwgKCRMIHwgJFYgfCAkTFYgfCAkTFZUKTsiCisgICAgICAg
ICIoJExWIHwgJFYpICgkViB8ICRUKTsiCisgICAgICAgICIoJExWVCB8ICRUKSAkVDsiCisjaWYg
QURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkUkkgJFJJICRFeHRlbmQqIC8gJFJJ
OyIKKyAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCo7IgorICAgICAgICAiW14kQ29udHJvbCAkQ1Ig
JExGXSAkRXh0ZW5kOyIKKyAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJr
OyIKKyNlbHNlCisgICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRFeHRlbmQ7IgorICAgICAg
ICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7IgorICAgICAgICAiJFJJICRSSSAv
ICRSSTsiCisgICAgICAgICIkUkkgJFJJOyIKKyNlbmRpZgorICAgICAgICAiJEhpbjAgJEhpblYg
JEhpbjE7IiAvLyBEZXZhbmFnYXJpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRCZW4wICRC
ZW5WICRCZW4xOyIgLy8gQmVuZ2FsaSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkUGFuMCAk
UGFuViAkUGFuMTsiIC8vIEd1cm11a2hpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRHdWow
ICRHdWpWICRHdWoxOyIgLy8gR3VqYXJhdGkgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE9y
aTAgJE9yaVYgJE9yaTE7IiAvLyBPcml5YSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkVGVs
MCAkVGVsViAkVGVsMTsiIC8vIFRlbHVndSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkS2Fu
MCAkS2FuViAkS2FuMTsiIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE1h
bDAgJE1hbFYgJE1hbDE7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAi
JFpXSiAkRW1vamlGb3JTZXFzOyIgLy8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNl
cworICAgICAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IiAvLyBEb24n
dCBicmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBz
ZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCisgICAgICAgICIhIXJldmVyc2U7Igor
ICAgICAgICAiJExGICRDUjsiCisgICAgICAgICIoJEwgfCAkViB8ICRMViB8ICRMVlQpICRMOyIK
KyAgICAgICAgIigkViB8ICRUKSAoJExWIHwgJFYpOyIKKyAgICAgICAgIiRUICgkTFZUIHwgJFQp
OyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiRFeHRlbmQqICRSSSAk
UkkgLyAkRXh0ZW5kKiAkUkkgJFJJOyIKKyAgICAgICAgIiRFeHRlbmQqICRSSSAkUkk7IgorICAg
ICAgICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENSICRMRl07IgorICAgICAgICAiJFNwYWNp
bmdNYXJrIFteJENvbnRyb2wgJENSICRMRl07IgorI2Vsc2UKKyAgICAgICAgIiRFeHRlbmQgICAg
ICBbXiRDb250cm9sICRDUiAkTEZdOyIKKyAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9s
ICRDUiAkTEZdOyIKKyAgICAgICAgIiRSSSAkUkkgLyAkUkkgJFJJOyIKKyAgICAgICAgIiRSSSAk
Ukk7IgorI2VuZGlmCisgICAgICAgICIkSGluMSAkSGluViAkSGluMDsiIC8vIERldmFuYWdhcmkg
VmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRCZW4xICRCZW5WICRCZW4wOyIgLy8gQmVuZ2Fs
aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFBhbjEgJFBhblYgJFBhbjA7IiAvLyBHdXJt
dWtoaSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEd1ajEgJEd1alYgJEd1ajA7IiAvLyBH
dWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE9yaTEgJE9yaVYgJE9yaTA7IiAv
LyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFRlbDEgJFRlbFYgJFRlbDA7
IiAvLyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRLYW4xICRLYW5WICRLYW4w
OyIgLy8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE1hbDEgJE1hbFYgJE1h
bDA7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRFbW9qaUZvclNl
cXMgJFpXSjsiIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKKyAgICAgICAg
IiRFbW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0
d2VlbiByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFu
ZCBGaXR6cGF0cmljayBtb2RpZmllcgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAg
ICAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICAgICAiJFJJICRSSSs7IgorICAgICAgICAiWyRF
bW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIhIXNhZmVfZm9y
d2FyZDsiCisgICAgICAgICIkUkkgJFJJKzsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1v
amlWYXIgJEVtb2ppTW9kc10rOyI7CisjZWxzZQorICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlN
b2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIg
JEVtb2ppTW9kc10rOyIKKyAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKKyAgICAgICAgIiEhc2Fm
ZV9mb3J3YXJkOyI7CisjZW5kaWYKKyAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRp
Y0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoa1J1
bGVzKTsKKyNlbHNlIC8vIFBMQVRGT1JNKElPUykKKyAgICAvLyBVc2UgdGhlIHNwZWNpYWwgVGhh
aSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBsb2NhbGVzCisgICAgc3RhdGljIFRl
eHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQorCisgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY0N1cnNv
ck1vdmVtZW50SXRlcmF0b3IsIHN0cmluZyk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRl
eHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQoreworICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hh
cmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CisgICAgaWYgKCFpdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4
dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4
dExlbmd0aCk7Cit9CisKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7
CisKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS5wdXQoaXRlcmF0b3Ip
OworfQorCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9sb2d1ZSA9CisgICAgIiEhY2hhaW47
IgorICAgICIhIUxCQ01Ob0NoYWluOyIKKyAgICAiISFsb29rQWhlYWRIYXJkQnJlYWs7IjsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNCZWZvcmUgPQorICAgIC8vIGV4cGxp
Y2l0bHkgZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lvbnMgcHJpb3IgdG8gNDkgZG9uJ3Qg
c3VwcG9ydCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6CisgICAgIiRD
SiA9IFsiCisjaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJT
SU9OX01JTk9SX05VTSA+PSA5KQorICAgICI6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNl
X1N0YXJ0ZXI6IgorI2Vsc2UKKyAgICAiXFx1MzA0MVxcdTMwNDNcXHUzMDQ1XFx1MzA0N1xcdTMw
NDlcXHUzMDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4RVxcdTMwOTVcXHUzMDk2XFx1MzBB
MVxcdTMwQTNcXHUzMEE1XFx1MzBBNyIKKyAgICAiXFx1MzBBOVxcdTMwQzNcXHUzMEUzXFx1MzBF
NVxcdTMwRTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZDIgorICAgICJcXHUzMUYwXFx1MzFG
MVxcdTMxRjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2XFx1MzFGN1xcdTMxRjhcXHUzMUY5
XFx1MzFGQVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVcXHUzMUZGIgorICAgICJcXHVGRjY3
XFx1RkY2OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNcXHVGRjZEXFx1RkY2RVxcdUZGNkZc
XHVGRjcwIgorI2VuZGlmCisgICAgIl07IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNz
aWdubWVudHNDdXN0b21Mb29zZUNKSyA9CisgICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNd
OyIKKyAgICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxcdUZGMDFcXHVGRjFGXTsiCisgICAg
IiRJRF9TVUIgPSAnJzsiCisgICAgIiRJTl9TVUIgPSBbXFx1MjAyNVxcdTIwMjZdOyIKKyAgICAi
JElTX1NVQiA9IFtcXHUwMDNBXFx1MDAzQl07IgorICAgICIkTlNfU1VCID0gW1xcdTIwM0NcXHUy
MDQ3XFx1MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMw
QTBcXHUzMEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYxQlxcdUZGNjVdOyIKKyAgICAiJFBP
X1NVQiA9IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMwXFx1MjAzMlxcdTIwMzNcXHUyMTAz
XFx1RkYwNVxcdUZGRTBdOyIKKyAgICAiJFBSX1NVQiA9IFtcXHUwMDI0XFx1MDBBM1xcdTAwQTVc
XHUyMEFDXFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07IgorICAgICIkSURfQUREID0gWyRD
SiAkQkFfU1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICROU19TVUIgJFBPX1NVQiAkUFJfU1VC
XTsiCisgICAgIiROU19BREQgPSAnJzsiOworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3Np
Z25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLID0KKyAgICAiJEJBX1NVQiA9ICcnOyIKKyAgICAiJEVY
X1NVQiA9ICcnOyIKKyAgICAiJElEX1NVQiA9ICcnOyIKKyAgICAiJElOX1NVQiA9IFtcXHUyMDI1
XFx1MjAyNl07IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMDVc
XHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07IgorICAgICIkUE9fU1VCID0gJyc7
IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0gWyRDSiAkSU5fU1VCICROU19T
VUJdOyIKKyAgICAiJE5TX0FERCA9ICcnOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLID0KKyAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAx
M107IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSURf
U1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMUNc
XHUzMEEwXTsiCisgICAgIiRQT19TVUIgPSAnJzsiCisgICAgIiRQUl9TVUIgPSAnJzsiCisgICAg
IiRJRF9BREQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07IgorICAgICIkTlNfQUREID0gJyc7IjsK
Kworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksg
PQorICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VC
ID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIk
TlNfU1VCID0gJyc7IgorICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7Igor
ICAgICIkSURfQUREID0gWyRDSl07IgorICAgICIkTlNfQUREID0gJyc7IjsKKworc3RhdGljIGNv
bnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgPQorICAgICIkQkFfU1VC
ID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIk
SU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gJyc7Igor
ICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0g
Jyc7IgorICAgICIkTlNfQUREID0gWyRDSl07IjsKKworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tU3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSwor
I2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyAgICAgICAgdWF4MTRBc3Np
Z25tZW50c0N1c3RvbU5vcm1hbENKSworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVm
YXVsdE5vbkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdE5vbkNKSworCitzdGF0
aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVyID0KKyAgICAiJEFJID0gWzpMaW5l
QnJlYWsgPSBBbWJpZ3VvdXM6XTsiCisgICAgIiRBTCA9IFs6TGluZUJyZWFrID0gQWxwaGFiZXRp
YzpdOyIKKyAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJlYWtfQWZ0ZXI6XSAtICRCQV9TVUJd
OyIKKyAgICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19CZWZvcmU6XTsiCisgICAgIiRCSyA9
IFs6TGluZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07IgorICAgICIkQjIgPSBbOkxpbmVCcmVh
ayA9IEJyZWFrX0JvdGg6XTsiCisgICAgIiRDQiA9IFs6TGluZUJyZWFrID0gQ29udGluZ2VudF9C
cmVhazpdOyIKKyAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QdW5jdHVhdGlvbjpdOyIK
KyAgICAiJENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdfTWFyazpdOyIKKyAgICAiJENQID0g
WzpMaW5lQnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIKKyAgICAiJENSID0gWzpMaW5lQnJl
YWsgPSBDYXJyaWFnZV9SZXR1cm46XTsiCisgICAgIiRFWCA9IFtbOkxpbmVCcmVhayA9IEV4Y2xh
bWF0aW9uOl0gLSAkRVhfU1VCXTsiCisgICAgIiRHTCA9IFs6TGluZUJyZWFrID0gR2x1ZTpdOyIK
KyNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlO
T1JfTlVNID49IDkpCisgICAgIiRITCA9IFs6TGluZUJyZWFrID0gSGVicmV3X0xldHRlcjpdOyIK
KyNlbHNlCisgICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpMZXR0ZXI6XV07IgorI2VuZGlmCisg
ICAgIiRIWSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07IgorICAgICIkSDIgPSBbOkxpbmVCcmVh
ayA9IEgyOl07IgorICAgICIkSDMgPSBbOkxpbmVCcmVhayA9IEgzOl07IgorICAgICIkSUQgPSBb
W1tbOkxpbmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pdICRJRF9BRERdIC0gJElEX1NVQl07
IgorICAgICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFyYWJsZTpdIC0gJElOX1NVQl07Igor
ICAgICIkSVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1lcmljOl0gLSAkSVNfU1VCXTsiCisg
ICAgIiRKTCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCisgICAgIiRKViA9IFs6TGluZUJyZWFrID0g
SlY6XTsiCisgICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6XTsiCisgICAgIiRMRiA9IFs6TGlu
ZUJyZWFrID0gTGluZV9GZWVkOl07IgorICAgICIkTkwgPSBbOkxpbmVCcmVhayA9IE5leHRfTGlu
ZTpdOyIKKyAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBOb25zdGFydGVyOl0gLSAkQ0pdICRO
U19BRERdIC0gJE5TX1NVQl07IgorICAgICIkTlUgPSBbOkxpbmVCcmVhayA9IE51bWVyaWM6XTsi
CisgICAgIiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5jdHVhdGlvbjpdOyIKKyAgICAiJFBP
ID0gW1s6TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0gLSAkUE9fU1VCXTsiCisgICAgIiRQ
UiA9IFtbOkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0gLSAkUFJfU1VCXTsiCisgICAgIiRR
VSA9IFs6TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgorICAgICIkUkkgPSBbXFxVMDAwMUYxRTYt
XFxVMDAwMUYxRkZdOyIKKyAgICAiJFNBID0gWzpMaW5lQnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6
XTsiCisgICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9nYXRlOl07IgorICAgICIkU1AgPSBb
OkxpbmVCcmVhayA9IFNwYWNlOl07IgorICAgICIkU1kgPSBbOkxpbmVCcmVhayA9IEJyZWFrX1N5
bWJvbHM6XTsiCisgICAgIiRXSiA9IFs6TGluZUJyZWFrID0gV29yZF9Kb2luZXI6XTsiCisgICAg
IiRYWCA9IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKKyAgICAiJFpXID0gWzpMaW5lQnJlYWsg
PSBaV1NwYWNlOl07IgorICAgICIkWldKID0gXFx1MjAwRDsiCisgICAgIiRFbW9qaVZhciA9IFxc
dUZFMEY7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkRW1vamlGb3JTZXFz
ID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0
OEIgXFxVMDAwMUY1RThdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI2Rjkg
XFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAw
MDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxc
VTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4
IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFG
NDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAw
MDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxc
VTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4
XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZWxzZQorICAg
ICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAw
MUY0OEJdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1MjcwQyBc
XFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAxRjND
QSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAx
RjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUw
MDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBc
XFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0
RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIgLy8g
RW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycworI2VuZGlmCisgICAgIiRFbW9q
aU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIKKyAgICAiJGRpY3Rpb25hcnkgPSBb
OkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKKyAgICAiJEFMUGx1cyA9IFskQUwgJEFJ
ICRTQSAkU0cgJFhYXTsiCisgICAgIiRBTGNtID0gJEFMUGx1cyAkQ00qOyIKKyAgICAiJEJBY20g
PSAkQkEgJENNKjsiCisgICAgIiRCQmNtID0gJEJCICRDTSo7IgorICAgICIkQjJjbSA9ICRCMiAk
Q00qOyIKKyAgICAiJENMY20gPSAkQ0wgJENNKjsiCisgICAgIiRDUGNtID0gJENQICRDTSo7Igor
ICAgICIkRVhjbSA9ICRFWCAkQ00qOyIKKyAgICAiJEdMY20gPSAkR0wgJENNKjsiCisgICAgIiRI
TGNtID0gJEhMICRDTSo7IgorICAgICIkSFljbSA9ICRIWSAkQ00qOyIKKyAgICAiJEgyY20gPSAk
SDIgJENNKjsiCisgICAgIiRIM2NtID0gJEgzICRDTSo7IgorICAgICIkSURjbSA9ICRJRCAkQ00q
OyIKKyAgICAiJElOY20gPSAkSU4gJENNKjsiCisgICAgIiRJU2NtID0gJElTICRDTSo7IgorICAg
ICIkSkxjbSA9ICRKTCAkQ00qOyIKKyAgICAiJEpWY20gPSAkSlYgJENNKjsiCisgICAgIiRKVGNt
ID0gJEpUICRDTSo7IgorICAgICIkTlNjbSA9ICROUyAkQ00qOyIKKyAgICAiJE5VY20gPSAkTlUg
JENNKjsiCisgICAgIiRPUGNtID0gJE9QICRDTSo7IgorICAgICIkUE9jbSA9ICRQTyAkQ00qOyIK
KyAgICAiJFBSY20gPSAkUFIgJENNKjsiCisgICAgIiRRVWNtID0gJFFVICRDTSo7IgorICAgICIk
UkljbSA9ICRRVSAkQ00qOyIKKyAgICAiJFNZY20gPSAkU1kgJENNKjsiCisgICAgIiRXSmNtID0g
JFdKICRDTSo7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0Rm9yd2FyZCA9CisgICAgIiEh
Zm9yd2FyZDsiCisgICAgIiRDQU5fQ00gPSBbXiRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07
IgorICAgICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKKyAgICAi
JEFMX0ZPTExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCisgICAgIiRBTF9G
T0xMT1dfQ00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kgJFdKICRHTCAkT1AgJFFVICRCQSAk
SFkgJE5TICRJTiAkTlUgJEFMUGx1c107IgorICAgICIkQUxfRk9MTE9XID0gWyRBTF9GT0xMT1df
Tk9DTSAkQUxfRk9MTE9XX0NNXTsiCisgICAgIiRMQjRCcmVha3MgPSBbJEJLICRDUiAkTEYgJE5M
XTsiCisgICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1IgJExGICROTF07IgorICAgICIkTEI4
QnJlYWtzID0gWyRMQjRCcmVha3MgJFpXXTsiCisgICAgIiRMQjhOb25CcmVha3MgPSBbWyRMQjRO
b25CcmVha3NdIC0gWyRaV11dOyIKKyAgICAiJExCMThOb25CcmVha3MgPSBbJExCOE5vbkJyZWFr
cyAtIFskU1BdXTsiCisgICAgIiRMQjE4QnJlYWtzID0gWyRMQjhCcmVha3MgJFNQXTsiCisgICAg
IiRMQjIwTm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0gJENCXTsiCisgICAgIiRBTFBsdXMg
JENNKzsiCisgICAgIiRCQSAkQ00rOyIKKyAgICAiJEJCICRDTSs7IgorICAgICIkQjIgJENNKzsi
CisgICAgIiRDTCAkQ00rOyIKKyAgICAiJENQICRDTSs7IgorICAgICIkRVggJENNKzsiCisgICAg
IiRHTCAkQ00rOyIKKyAgICAiJEhMICRDTSs7IgorICAgICIkSFkgJENNKzsiCisgICAgIiRIMiAk
Q00rOyIKKyAgICAiJEgzICRDTSs7IgorICAgICIkSUQgJENNKzsiCisgICAgIiRJTiAkQ00rOyIK
KyAgICAiJElTICRDTSs7IgorICAgICIkSkwgJENNKzsiCisgICAgIiRKViAkQ00rOyIKKyAgICAi
JEpUICRDTSs7IgorICAgICIkTlMgJENNKzsiCisgICAgIiROVSAkQ00rOyIKKyAgICAiJE9QICRD
TSs7IgorICAgICIkUE8gJENNKzsiCisgICAgIiRQUiAkQ00rOyIKKyAgICAiJFFVICRDTSs7Igor
ICAgICIkU1kgJENNKzsiCisgICAgIiRXSiAkQ00rOyIKKyAgICAiJENSICRMRiB7MTAwfTsiCisg
ICAgIiRMQjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07IgorICAgICIkQ0FOX0NNICRDTSog
JExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRDTSsgJExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRM
QjROb25CcmVha3MgWyRTUCAkWlddOyIKKyAgICAiJENBTl9DTSAkQ00qIFskU1AgJFpXXTsiCisg
ICAgIiRDTSsgWyRTUCAkWlddOyIKKyAgICAiJEVtb2ppRm9yU2VxcyAkRW1vamlWYXI/ICRFbW9q
aU1vZHM/ICRaV0ogJEVtb2ppRm9yU2VxczsiCisgICAgIiRDQU5fQ00gJENNKzsiCisgICAgIiRD
TSs7IgorICAgICIkQ0FOX0NNICRDTSogJFdKY207IgorICAgICIkTEI4Tm9uQnJlYWtzICRXSmNt
OyIKKyAgICAiJENNKyAkV0pjbTsiCisgICAgIiRXSmNtICRDQU5UX0NNOyIKKyAgICAiJFdKY20g
JENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENB
TlRfQ007IgorICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRTUCAkQkEgJEhZXV0gJENNKiAkR0xj
bTsiCisgICAgIiRDTSsgR0xjbTsiCisgICAgIiRMQjhOb25CcmVha3MgJENMOyIKKyAgICAiJENB
Tl9DTSAkQ00qICRDTDsiCisgICAgIiRDTSsgJENMOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkQ1A7
IgorICAgICIkQ0FOX0NNICRDTSogJENQOyIKKyAgICAiJENNKyAkQ1A7IgorICAgICIkTEI4Tm9u
QnJlYWtzICRFWDsiCisgICAgIiRDQU5fQ00gJENNKiAkRVg7IgorICAgICIkQ00rICRFWDsiCisg
ICAgIiRMQjhOb25CcmVha3MgJElTOyIKKyAgICAiJENBTl9DTSAkQ00qICRJUzsiCisgICAgIiRD
TSsgJElTOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkU1k7IgorICAgICIkQ0FOX0NNICRDTSogJFNZ
OyIKKyAgICAiJENNKyAkU1k7IgorICAgICIkT1BjbSAkU1AqICRDQU5fQ00gJENNKjsiCisgICAg
IiRPUGNtICRTUCogJENBTlRfQ007IgorICAgICIkT1BjbSAkU1ArICRDTSsgJEFMX0ZPTExPVz87
IgorICAgICIkUVVjbSAkU1AqICRPUGNtOyIKKyAgICAiKCRDTGNtIHwgJENQY20pICRTUCogJE5T
Y207IgorICAgICIkQjJjbSAkU1AqICRCMmNtOyIKKyAgICAiJExCMThOb25CcmVha3MgJENNKiAk
UVVjbTsiCisgICAgIiRDTSsgJFFVY207IgorICAgICIkUVVjbSAuPzsiCisgICAgIiRRVWNtICRM
QjE4Tm9uQnJlYWtzICRDTSo7IgorICAgICIkTEIyME5vbkJyZWFrcyAkQ00qICgkQkFjbSB8ICRI
WWNtIHwgJE5TY20pOyAiCisgICAgIiRCQmNtIFteJENCXTsiCisgICAgIiRCQmNtICRMQjIwTm9u
QnJlYWtzICRDTSo7IgorICAgICIkSExjbSAoJEhZY20gfCAkQkFjbSkgW14kQ0JdPzsiCisgICAg
IigkQUxjbSB8ICRITGNtKSAkSU5jbTsiCisgICAgIiRDTSsgJElOY207IgorICAgICIkSURjbSAk
SU5jbTsiCisgICAgIiRJTmNtICRJTmNtOyIKKyAgICAiJE5VY20gJElOY207IgorICAgICIkSURj
bSAkUE9jbTsiCisgICAgIiRBTGNtICROVWNtOyIKKyAgICAiJEhMY20gJE5VY207IgorICAgICIk
Q00rICROVWNtOyIKKyAgICAiJE5VY20gJEFMY207IgorICAgICIkTlVjbSAkSExjbTsiCisgICAg
IiRQUmNtICRJRGNtOyIKKyAgICAiJFBSY20gKCRBTGNtIHwgJEhMY20pOyIKKyAgICAiJFBPY20g
KCRBTGNtIHwgJEhMY20pOyIKKyAgICAiKCRQUmNtIHwgJFBPY20pPyAoJE9QY20gfCAkSFljbSk/
ICROVWNtICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENMY20gfCAkQ1BjbSk/ICgkUFJjbSB8
ICRQT2NtKT87IgorICAgICIkSkxjbSAoJEpMY20gfCAkSlZjbSB8ICRIMmNtIHwgJEgzY20pOyIK
KyAgICAiKCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNtKTsiCisgICAgIigkSlRjbSB8ICRI
M2NtKSAkSlRjbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KSAkSU5jbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAk
UE9jbTsiCisgICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KTsiCisgICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAkSExjbSk7IgorICAgICIkQ00rICgk
QUxjbSB8ICRITGNtKTsiCisgICAgIiRJU2NtICgkQUxjbSB8ICRITGNtKTsiCisgICAgIigkQUxj
bSB8ICRITGNtIHwgJE5VY20pICRPUGNtOyIKKyAgICAiJENNKyAkT1BjbTsiCisgICAgIiRDUGNt
ICgkQUxjbSB8ICRITGNtIHwgJE5VY20pOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJFJJY20gJFJJY207IgorI2VuZGlmCisgICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFy
PyAkRW1vamlNb2RzOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFJldmVyc2UgPQorICAg
ICIhIXJldmVyc2U7IgorICAgICIkQ00rICRBTFBsdXM7IgorICAgICIkQ00rICRCQTsiCisgICAg
IiRDTSsgJEJCOyIKKyAgICAiJENNKyAkQjI7IgorICAgICIkQ00rICRDTDsiCisgICAgIiRDTSsg
JENQOyIKKyAgICAiJENNKyAkRVg7IgorICAgICIkQ00rICRHTDsiCisgICAgIiRDTSsgJEhMOyIK
KyAgICAiJENNKyAkSFk7IgorICAgICIkQ00rICRIMjsiCisgICAgIiRDTSsgJEgzOyIKKyAgICAi
JENNKyAkSUQ7IgorICAgICIkQ00rICRJTjsiCisgICAgIiRDTSsgJElTOyIKKyAgICAiJENNKyAk
Skw7IgorICAgICIkQ00rICRKVjsiCisgICAgIiRDTSsgJEpUOyIKKyAgICAiJENNKyAkTlM7Igor
ICAgICIkQ00rICROVTsiCisgICAgIiRDTSsgJE9QOyIKKyAgICAiJENNKyAkUE87IgorICAgICIk
Q00rICRQUjsiCisgICAgIiRDTSsgJFFVOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJENNKyAkUkk7IgorI2VuZGlmCisgICAgIiRDTSsgJFNZOyIKKyAgICAiJENNKyAkV0o7
IgorICAgICIkQ00rOyIKKyAgICAiJEFMX0ZPTExPVyAkQ00rIC8gKFskQksgJENSICRMRiAkTkwg
JFpXIHtlb2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRDTSogKFteJE9QICRDTSAkU1BdIHwg
WyRBTCB7ZW9mfV0pKTsiCisgICAgIlskUFJdIC8gJENNKyBbJEJLICRDUiAkTEYgJE5MICRaVyAk
U1Age2VvZn1dOyIKKyAgICAiJExCNEJyZWFrcyBbJExCNE5vbkJyZWFrcy0kQ01dOyIKKyAgICAi
JExCNEJyZWFrcyAkQ00rICRDQU5fQ007IgorICAgICIkTEYgJENSOyIKKyAgICAiWyRTUCAkWldd
IFskTEI0Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJFNQICRaV10gJENNKyAkQ0FOX0NNOyIKKyAg
ICAiJEVtb2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRFbW9qaVZhcj8gJEVtb2ppRm9yU2Vx
czsiCisgICAgIiRDTSsgJENBTl9DTTsiCisgICAgIiRDTSogJFdKICRDTSogJENBTl9DTTsiCisg
ICAgIiRDTSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIkQ0FOVF9DTSAkQ00qICRX
SjsiCisgICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCisgICAgIiRDTSogJEdMICRDTSogWyRM
QjhOb25CcmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKKyAgICAiJENBTlRfQ00gJENNKiAkR0w7
IgorICAgICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgorICAgICIkQ0wgJENNKyAkQ0FOX0NNOyIK
KyAgICAiJENQICRDTSsgJENBTl9DTTsiCisgICAgIiRFWCAkQ00rICRDQU5fQ007IgorICAgICIk
SVMgJENNKyAkQ0FOX0NNOyIKKyAgICAiJFNZICRDTSsgJENBTl9DTTsiCisgICAgIiRDTCBbJExC
OE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJENQIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIk
RVggWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRJUyBbJExCOE5vbkJyZWFrcy0kQ01dOyIK
KyAgICAiJFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJENMICRDUCAkRVggJElTICRT
WV0gJENNKyAkU1ArICRDTSogJE9QOyAiCisgICAgIiRDTSogJENBTl9DTSAkU1AqICRDTSogJE9Q
OyIKKyAgICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCisgICAgIiRBTF9GT0xMT1c/ICRDTSsg
JFNQICRTUCogJENNKiAkT1A7IgorICAgICIkQUxfRk9MTE9XX05PQ00gJENNKyAkU1ArICRDTSog
JE9QOyIKKyAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsgJFNQKyAkQ00qICRPUDsiCisgICAg
IiRTWSAkQ00gJFNQKyAkT1A7IgorICAgICIkQ00qICRPUCAkU1AqICRDTSogJFFVOyIKKyAgICAi
JENNKiAkTlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAgICAiJENNKiAkQjIgJFNQKiAkQ00q
ICRCMjsiCisgICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsiCisgICAgIiRDTSogJFFVICRMQjE4
Tm9uQnJlYWtzOyIKKyAgICAiJENNKiAkQ0FOX0NNICRDTSogJFFVOyIKKyAgICAiJENBTlRfQ00g
JENNKiAkUVU7IgorICAgICIkQ00qICgkQkEgfCAkSFkgfCAkTlMpICRDTSogWyRMQjIwTm9uQnJl
YWtzLSRDTV07IgorICAgICIkQ00qIFskTEIyME5vbkJyZWFrcy0kQ01dICRDTSogJEJCOyIKKyAg
ICAiW14kQ0JdICRDTSogJEJCOyIKKyAgICAiW14kQ0JdICRDTSogKCRIWSB8ICRCQSkgJENNKiAk
SEw7IgorICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCisgICAgIiRDTSogJElO
ICRDTSogJElEOyIKKyAgICAiJENNKiAkSU4gJENNKiAkSU47IgorICAgICIkQ00qICRJTiAkQ00q
ICROVTsiCisgICAgIiRDTSogJFBPICRDTSogJElEOyIKKyAgICAiJENNKiAkTlUgJENNKiAoJEFM
UGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICROVTsiCisgICAg
IiRDTSogJElEICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUFI7
IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQTzsiCisgICAgIigkQ00qICgkUFIg
fCAkUE8pKT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAoJE5VIHwgJElTIHwgJFNZKSkqICRD
TSogJE5VICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQUiB8ICRQTykpPzsiCisgICAgIiRD
TSogKCRIMyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7IgorICAgICIkQ00qICgkSlQgfCAk
SlYpICRDTSogKCRIMiB8ICRKVik7IgorICAgICIkQ00qICRKVCAkQ00qICgkSDMgfCAkSlQpOyIK
KyAgICAiJENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCisgICAg
IiRDTSogJFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCk7IgorICAgICIkQ00q
ICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFM
UGx1cyB8ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMKSAkQ00qICRJUzsiCisgICAgIiRDTSogJE9QICRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUp
OyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkgJENNKiAkQ1A7IgorI2lmIEFERElU
SU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkQ00qICRSSSAkQ00qICRSSTsiCisjZW5kaWYKKyAg
ICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IjsKKworc3RhdGljIGNvbnN0
IGNoYXIqIHVheDE0U2FmZUZvcndhcmQgPQorICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgIlsk
Q00gJE9QICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAkU1AgJGRpY3Rpb25hcnldKyBbXiRD
TSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRkaWN0aW9uYXJ5XTsiCisgICAgIiRk
aWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFNhZmVS
ZXZlcnNlID0KKyAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICIkQ00rIFteJENNICRCSyAkQ1Ig
JExGICROTCAkWlcgJFNQXTsiCisgICAgIiRDTSsgJFNQIC8gLjsiCisgICAgIiRTUCsgJENNKiAk
T1A7IgorICAgICIkU1ArICRDTSogJFFVOyIKKyAgICAiJFNQKyAkQ00qICgkQ0wgfCAkQ1ApOyIK
KyAgICAiJFNQKyAkQ00qICRCMjsiCisgICAgIiRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7Igor
ICAgICIoJENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIKKyAgICAiKCRDTCB8ICRDUCkgJENN
KiAoJE5VIHwgJElTIHwgJFNZKTsiCisgICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisK
K3N0YXRpYyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMoTGluZUJyZWFrSXRlcmF0
b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgU3RyaW5nQnVpbGRlciBydWxlc0J1aWxk
ZXI7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFByb2xvZ3VlKTsKKyAgICBydWxlc0J1
aWxkZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUpOworICAgIHN3aXRjaCAobW9kZSkg
eworICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6CisgICAgICAgIHJ1bGVzQnVp
bGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyA6IHVh
eDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgorICAgICAgICBydWxlc0J1aWxk
ZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLIDogdWF4MTRB
c3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFw
cGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxDSksgOiB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5l
QnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJ1bGVz
QnVpbGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVyKTsKKyAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKHVheDE0Rm9yd2FyZCk7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFJldmVy
c2UpOworICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRTYWZlRm9yd2FyZCk7CisgICAgcnVs
ZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsKKyAgICByZXR1cm4gcnVsZXNCdWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisKKy8vIFJlY29nbml6ZSBCQ1A0NyBjb21wbGlhbnQgcHJpbWFy
eSBsYW5ndWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tvJworLy8gKGluIGFueSBjb21iaW5h
dGlvbiBvZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBzdWJ0YWdzLiBEb24ndAorLy8g
cmVjb2duaXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6aG8nLCAnanBuJywgb3IgJ2tvcicg
c2luY2UgQkNQNDcKKy8vIHJlcXVpcmVzIHVzZSBvZiBzaG9ydGVzdCBsYW5ndWFnZSB0YWcuCiti
b29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQoreworICAgIHNpemVf
dCBsZW5ndGggPSBsb2NhbGUubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGMxID0gbG9jYWxlWzBdOworICAgIGF1dG8gYzIgPSBs
b2NhbGVbMV07CisgICAgYXV0byBjMyA9IGxlbmd0aCA9PSAyID8gMCA6IGxvY2FsZVsyXTsKKyAg
ICBpZiAoIWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycgfHwgYzMgPT0gJ0AnKSB7CisgICAg
ICAgIGlmIChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQorICAgICAgICAgICAgcmV0dXJuIGMyID09
ICdoJyB8fCBjMiA9PSAnSCc7CisgICAgICAgIGlmIChjMSA9PSAnaicgfHwgYzEgPT0gJ0onKQor
ICAgICAgICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9PSAnQSc7CisgICAgICAgIGlmIChj
MSA9PSAnaycgfHwgYzEgPT0gJ0snKQorICAgICAgICAgICAgcmV0dXJuIGMyID09ICdvJyB8fCBj
MiA9PSAnTyc7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgVUJyZWFrSXRlcmF0
b3IqIHVicmtJdGVyOworICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBib29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNFbXB0eSgpOworICAgIGlmIChtb2Rl
ID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICB1YnJrSXRlciA9IHVicmtf
b3BlbihVQlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQo
KSA6IGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAmb3BlblN0YXR1cyk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFVQYXJzZUVycm9yIHBhcnNlU3RhdHVzOworICAgICAgICBhdXRv
IHJ1bGVzID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMobW9kZSwgaXNDSkspOworICAgICAg
ICB1YnJrSXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1ZpZXcocnVsZXMpLnVwY29udmVydGVk
Q2hhcmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0
YXR1cyk7CisgICAgfQorICAgIC8vIGxvY2FsZSBjb21lcyBmcm9tIGEgd2ViIHBhZ2UgYW5kIGl0
IGNhbiBiZSBpbnZhbGlkLCBsZWFkaW5nIElDVQorICAgIC8vIHRvIGZhaWwsIGluIHdoaWNoIGNh
c2Ugd2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICBpZiAoIWxvY2FsZUlz
RW1wdHkgJiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIG9wZW5TdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgY3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKKyAgICB9CisKKyAg
ICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIExPR19FUlJPUigidWJya19v
cGVuIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJ
dGVyYXRvcio+KHVicmtJdGVyKTsKK30KKwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IpCit7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gcmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKKyAgICBB
U1NFUlQodWJya0l0ZXIpOworICAgIHVicmtfY2xvc2UodWJya0l0ZXIpOworICAgIGl0ZXJhdG9y
ID0gbnVsbHB0cjsKK30KKworc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yOworCitzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3YXBO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBlY3Rl
ZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQoreworICAgIHJldHVybiBXVEY6OndlYWtD
b21wYXJlQW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciwgZXhwZWN0ZWQs
IG5ld1ZhbHVlKTsKK30KKworTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBtX2l0
ZXJhdG9yID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKKworICAgIGJvb2wgY3Jl
YXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7CisgICAgaWYgKCFjcmVhdGVkSXRlcmF0
b3IpCisgICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNU
RVIpOworICAgIGlmICghbV9pdGVyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pdGVy
YXRvciA9IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRvciwgc3RyaW5nKTsKK30KKworTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IoKQoreworICAgIGlmICghY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKDAsIG1faXRlcmF0b3IpKQorICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0
X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7Cit9CisKKworLy8gSXRlcmF0b3Ig
aW1wbGVtZW5hdGlvbi4KKworaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKK30KKworaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX2xhc3QocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9CisKK2ludCB0ZXh0QnJlYWtOZXh0
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19uZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitpbnQgdGV4
dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVy
biB1YnJrX3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOworfQorCitpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciwgaW50IHBvcykKK3sKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zKTsKK30KKworaW50IHRleHRCcmVh
a0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCit7CisgICAg
cmV0dXJuIHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihp
dGVyYXRvciksIHBvcyk7Cit9CisKK2ludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19jdXJyZW50KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitib29sIGlzVGV4dEJyZWFrKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0aW9uKQoreworICAgIHJldHVybiB1
YnJrX2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9y
KSwgcG9zaXRpb24pOworfQorCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMo
cmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7CisgICAgcmV0dXJu
IHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisKK3Vuc2lnbmVkIG51bUdyYXBoZW1l
Q2x1c3RlcnMoY29uc3QgU3RyaW5nJiBzKQoreworICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9
IHMubGVuZ3RoKCk7CisgICAgCisgICAgaWYgKCFzdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVy
biAwOworCisgICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVy
IGlzIENSIExGCisgICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCisgICAg
ICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yIGl0KHMpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7
CisKKyAgICB1bnNpZ25lZCBudW0gPSAwOworICAgIHdoaWxlICh0ZXh0QnJlYWtOZXh0KGl0KSAh
PSBUZXh0QnJlYWtEb25lKQorICAgICAgICArK251bTsKKyAgICByZXR1cm4gbnVtOworfQorCit1
bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcm
IHMsIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCit7CisgICAgdW5zaWduZWQgc3RyaW5n
TGVuZ3RoID0gcy5sZW5ndGgoKTsKKworICAgIGlmICghc3RyaW5nTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1
c3RlciBpcyBDUiBMRgorICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQor
ICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJz
KTsKKworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7CisgICAgaWYg
KCFpdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVD
bHVzdGVycyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR3JhcGhlbWVDbHVz
dGVyczsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0QnJlYWtOZXh0KGl0KSA9PSBUZXh0QnJlYWtE
b25lKQorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKKyAgICB9CisgICAgcmV0dXJu
IHRleHRCcmVha0N1cnJlbnQoaXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTQ1MzQ2OGZiOGNjMjNk
NjNmYTJjM2EzNDg1MTYwNGI2NmI1ODAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9yX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0
b3JfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVGV4dEJyZWFr
SXRlcmF0b3I7CisKKy8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkg
dW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNx
dWlyZUxpbmVCcmVha0l0ZXJhdG9yLgorCitlbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCisgICAgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTRMb29zZSwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKKyAgICBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKK307CisKKy8vIFRoaXMgaXMgc2ltaWxh
ciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9zdCBjYXNlcywgYnV0IGlzIHN1Ympl
Y3QgdG8KKy8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBPbmUgbm90YWJsZSBleGFtcGxlIHdo
ZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVudAorLy8gZnJvbSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0
b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBidWcgMjQzNDIuCisvLyBVc2UgdGhp
cyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KK1dURl9F
WFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiB3b3Jk
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJ
dGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOworCitXVEZfRVhQT1JU
X1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29u
dGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUs
IGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7CitUZXh0QnJlYWtJdGVyYXRvciogb3BlbkxpbmVC
cmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVh
a0l0ZXJhdG9yKiYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0ZpcnN0KFRl
eHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0xhc3Qo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrTmV4
dChUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtQ
cmV2aW91cyhUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0
QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50
IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvcios
IGludCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFr
SXRlcmF0b3IqKTsKKworY29uc3QgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisKK2NsYXNz
IExhenlMaW5lQnJlYWtJdGVyYXRvciB7CitwdWJsaWM6CisgICAgTGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCisgICAgICAgICwgbV9jYWNoZWRQ
cmlvckNvbnRleHQobnVsbHB0cikKKyAgICAgICAgLCBtX21vZGUoTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTQpCisgICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKKyAgICAg
ICAgLCBtX2lzQ0pLKGZhbHNlKQorICAgIHsKKyAgICAgICAgcmVzZXRQcmlvckNvbnRleHQoKTsK
KyAgICB9CisKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKKyAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCisgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQorICAgICAgICAsIG1faXRlcmF0
b3IobnVsbHB0cikKKyAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQorICAg
ICAgICAsIG1fbW9kZShtb2RlKQorICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3Ro
KDApCisgICAgeworICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOworICAgICAgICBtX2lzQ0pL
ID0gaXNDSktMb2NhbGUobG9jYWxlKTsKKyAgICB9CisKKyAgICB+TGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgIH0KKworICAgIFN0cmluZyBzdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIGJvb2wgaXNMb29zZUNKS01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNExvb3NlOyB9CisKKyAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQp
ID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgp
OworICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07CisgICAgfQorCisgICAgVUNoYXIg
c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNT
RVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJh
dG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICByZXR1cm4gbV9w
cmlvckNvbnRleHRbMF07CisgICAgfQorCisgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIg
bGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3Jf
dW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIG1fcHJpb3JDb250ZXh0
WzBdID0gc2Vjb25kVG9MYXN0OworICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7Cisg
ICAgfQorCisgICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQoVUNoYXIgbGFzdCkKKyAgICB7Cisg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09
IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwor
ICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JDb250ZXh0WzFdOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7CisgICAgfQorCisgICAgdm9pZCByZXNldFByaW9yQ29u
dGV4dCgpCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1f
cHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2Nv
bnRleHRfbGVuZ3RoKTsKKyAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCA9IDA7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNv
bnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9s
ZW5ndGgpOworICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMV0pIHsKKyAgICAgICAgICAgICsr
cHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzBdKQor
ICAgICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgfQorCisgICAgLy8gT2J0YWluIHRleHQg
YnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0
ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKKyAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHBy
ZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFu
ZCB1c2luZworICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVt
cHR5LgorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNv
bnRleHRDYXBhY2l0eSk7CisgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlv
ckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBw
cmlvckNvbnRleHRMZW5ndGhdIDogMDsKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKG1fc3RyaW5nLCBt
X2xvY2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsIG1fbW9kZSwgbV9pc0NK
Syk7CisgICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dDsKKyAg
ICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gcHJpb3JDb250ZXh0TGVuZ3Ro
OworICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAhPSBtX2NhY2hlZFByaW9yQ29udGV4
dCB8fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgpIHsK
KyAgICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKG1fc3RyaW5nLCBtX2xv
Y2FsZSwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JDb250ZXh0
TGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKKyAgICB9CisK
KyAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVh
a0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsKKyAgICAg
ICAgbV9sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIG1faXRlcmF0b3IgPSBudWxscHRyOworICAg
ICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fbW9kZSA9IG1v
ZGU7CisgICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOworICAgICAgICBtX2Nh
Y2hlZFByaW9yQ29udGV4dExlbmd0aCA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9IDI7CisgICAgU3RyaW5nIG1f
c3RyaW5nOworICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKKyAgICBUZXh0QnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvcjsKKyAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQ7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKKyAgICB1bnNpZ25lZCBtX2NhY2hlZFBy
aW9yQ29udGV4dExlbmd0aDsKKyAgICBVQ2hhciBtX3ByaW9yQ29udGV4dFtwcmlvckNvbnRleHRD
YXBhY2l0eV07CisgICAgYm9vbCBtX2lzQ0pLOworfTsKKworLy8gSXRlcmF0ZXMgb3ZlciAiZXh0
ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCisvLyBOb3Rl
IHRoYXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBiZSBsZXNzIHNvcGhpc3RpY2F0ZWQg
LSBlLmcuIElDVSBwcmlvciB0bworLy8gdmVyc2lvbiA0LjAgb25seSBzdXBwb3J0cyAibGVnYWN5
IGdyYXBoZW1lIGNsdXN0ZXJzIi4KKy8vIFVzZSB0aGlzIGZvciBnZW5lcmFsIHRleHQgcHJvY2Vz
c2luZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KKworY2xhc3MgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcik7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCk7CisKKyAgICBvcGVyYXRv
ciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9CisKK3By
aXZhdGU6CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3I7Cit9OworCisvLyBDb3Vu
dHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4gQSBzdXJyb2dhdGUgcGFpciBvciBh
IHNlcXVlbmNlCisvLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hhcmFjdGVyIGFuZCBmb2xsb3dpbmcg
Y29tYmluaW5nIGNoYXJhY3RlcnMgaXMKKy8vIGNvdW50ZWQgYXMgMSBncmFwaGVtZSBjbHVzdGVy
LgorV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3Qg
U3RyaW5nJik7CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxs
IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworLy8gdGhlIHNwZWNpZmllZCBncmFwaGVtZSBjbHVz
dGVyIGxlbmd0aC4KK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCk7CisKK30KKwordXNp
bmcgV1RGOjpMaW5lQnJlYWtJdGVyYXRvck1vZGU7Cit1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0OwordXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7Cit1c2luZyBX
VEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OlRleHRCcmVh
a0RvbmU7Cit1c2luZyBXVEY6OlRleHRCcmVha0l0ZXJhdG9yOworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDI1YTVmZTkxODFmYWU0Y2E5YmFjYTM1M2RmOWEyY2VlM2Q3YWNkNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVV9oCisKKy8vIEZJ
WE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9jYWxlcyBmb3IgSUNVLCBub3QganVzdCBmb3Ig
dGV4dCBicmVha2luZywKKy8vIHRoaXMgZmlsZSBhbmQgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRp
b24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCk7CisKK30K
KwordXNpbmcgV1RGOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQ7CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVm
bC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDU2ODY5ZjE0NWRkNzY4MWRmZWJiNjg4ODk1YmMxOTU1
MWUxM2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9lZmwvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQoreworICAgIC8vIEZJ
WE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICIiOworfQorCitjb25z
dCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQoreworICAgIHJldHVybiAiZW5fdXMi
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2d0ay9UZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVR3RrLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1ZTVhMDVmYTQ5MTk1
ZmIzMGJmNjlkZWQ1NjJkNTQzYjhiNjEwMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcApAQCAtMCww
ICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciogY3VycmVu
dFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9j
YWxlLgorICAgIHJldHVybiAiIjsKK30KKworY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xv
Y2FsZUlEKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgorICAg
IHJldHVybiAiZW5fdXMiOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJv
dmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczODhmZGJmN2NhNDliYTY1OTg5NDM3N2YyYjFjNTZhZGFk
MGRlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4K
KyNpbmNsdWRlIDxzdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIFJlbG9jYXRlIHBv
aW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbiBhcyByZXF1aXJlZC4KK3N0YXRpYyBp
bmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVUZXh0KiBkZXN0aW5h
dGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIpCit7CisgICAgaWYgKHBvaW50ZXIgPj0gc291cmNl
LT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRpY19jYXN0PGNoYXIqPihzb3VyY2UtPnBFeHRyYSkg
KyBzb3VyY2UtPmV4dHJhU2l6ZSkgeworICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291
cmNlIGV4dHJhIGJ1ZmZlci4KKyAgICAgICAgcG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihk
ZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikg
LSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLT5wRXh0cmEpKTsKKyAgICB9IGVsc2Ug
aWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBvaW50ZXIgPCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5zaXplT2ZTdHJ1Y3QpIHsKKyAgICAgICAgLy8gUG9p
bnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0cnVjdHVyZSwgYnV0IG5vdCBzb3VyY2UgZXh0
cmEgYnVmZmVyLgorICAgICAgICBwb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGVz
dGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAtIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkpOworICAgIH0KK30KKworVVRleHQqIHVUZXh0
Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wg
ZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwgIWRl
ZXApOworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIGludDMyX3QgZXh0cmFTaXplID0gc291cmNlLT5leHRyYVNpemU7CisgICAgZGVzdGlu
YXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgZXh0cmFTaXplLCBzdGF0dXMpOworICAg
IGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKKyAg
ICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7CisgICAgaW50MzJfdCBmbGFn
cyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKKyAgICBpbnQgc2l6ZVRvQ29weSA9IHN0ZDo6bWluKHNv
dXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlvbi0+c2l6ZU9mU3RydWN0KTsKKyAgICBtZW1j
cHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRvQ29weSk7CisgICAgZGVzdGluYXRpb24tPnBF
eHRyYSA9IGV4dHJhTmV3OworICAgIGRlc3RpbmF0aW9uLT5mbGFncyA9IGZsYWdzOworICAgIG1l
bWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3VyY2UtPnBFeHRyYSwgZXh0cmFTaXplKTsKKyAg
ICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5jb250ZXh0KTsK
KyAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5wKTsKKyAg
ICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLT5xKTsKKyAgICBB
U1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKKyAgICBjb25zdCB2b2lkKiBjaHVua0NvbnRlbnRzID0g
c3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzKTsKKyAg
ICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNodW5rQ29udGVudHMpOworICAgIGRl
c3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihjaHVu
a0NvbnRlbnRzKTsKKyAgICByZXR1cm4gZGVzdGluYXRpb247Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJm
MGFmOTk3MjM5MGRkMDFiYzIzZWIwMmY2YWNmOTJjNTQ4OTM0NzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKQEAgLTAsMCArMSwxMTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVUZXh0UHJvdmlkZXJfaAorI2RlZmluZSBVVGV4dFBy
b3ZpZGVyX2gKKworI2luY2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK2VudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgeworICAgIE5vQ29udGV4dCwKKyAg
ICBQcmlvckNvbnRleHQsCisgICAgUHJpbWFyeUNvbnRleHQKK307CisKK2lubGluZSBVVGV4dFBy
b3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCogdGV4dCwgaW50
NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpZiAoIXRleHQtPmIgfHwg
bmF0aXZlSW5kZXggPiB0ZXh0LT5iKQorICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRl
eHQ6OlByaW1hcnlDb250ZXh0OworICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0LT5iKQorICAg
ICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4
dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7CisgICAgcmV0dXJuIFVUZXh0
UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK2lubGluZSB2b2lkIGluaXRpYWxp
emVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25zdCBVVGV4dEZ1bmNz
KiBmdW5jcywgY29uc3Qgdm9pZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgpCit7CisgICAgdGV4dC0+cEZ1
bmNzID0gZnVuY3M7CisgICAgdGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8PCBVVEVYVF9Q
Uk9WSURFUl9TVEFCTEVfQ0hVTktTOworICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7CisgICAg
dGV4dC0+cCA9IHN0cmluZzsKKyAgICB0ZXh0LT5hID0gbGVuZ3RoOworICAgIHRleHQtPnEgPSBw
cmlvckNvbnRleHQ7CisgICAgdGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsKK30KKworLy8g
U2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgVVRleHRDbG9uZSBmdW5jdGlvbiBvbiBVVGV4
dEZ1bmNzLgorCitVVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25z
dCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisKKy8v
IEhlbHBlcnMgZm9yIHRoZSBVVGV4dEFjY2VzcyBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgorCitp
bmxpbmUgaW50NjRfdCB1VGV4dEFjY2Vzc1BpbkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2NF90
IGxpbWl0KQoreworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBl
bHNlIGlmIChpbmRleCA+IGxpbWl0KQorICAgICAgICBpbmRleCA9IGxpbWl0OworICAgIHJldHVy
biBpbmRleDsKK30KKworaW5saW5lIGJvb2wgdVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdl
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCwgVUJvb2wmIGlzQWNjZXNzaWJsZSkKK3sKKyAgICBpZiAoZm9yd2FyZCkg
eworICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBu
YXRpdmVJbmRleCA8IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKKyAgICAgICAgICAgIGludDY0
X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgICAg
ICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBv
ZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICAgICAgICAgIHRleHQt
PmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKKyAgICAgICAgICAgIGlzQWNj
ZXNzaWJsZSA9IFRSVUU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobmF0aXZlSW5kZXggPj0gbmF0aXZlTGVuZ3RoICYmIHRleHQtPmNodW5rTmF0aXZl
TGltaXQgPT0gbmF0aXZlTGVuZ3RoKSB7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9
IHRleHQtPmNodW5rTGVuZ3RoOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGlmIChuYXRpdmVJbmRleCA+IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXgg
PD0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkgeworICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQg
PSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgICAgICAgICAvLyBF
bnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNl
ZWRzIGludDMyX3QgcmFuZ2UuCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZz
ZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRp
Y19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0g
VFJVRTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChu
YXRpdmVJbmRleCA8PSAwICYmICF0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7CisgICAgICAgICAg
ICB0ZXh0LT5jaHVua09mZnNldCA9IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxT
RTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVVGV4dFByb3Zp
ZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjVhMGUxZTg2NGIyOTcxNDgxZTMwOWM0MzU0ZTQzMTA2MWI0NWM3ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuY3BwCkBAIC0wLDAgKzEsMzk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJMYXRpbjEuaCIKKworI2luY2x1ZGUgIlVUZXh0
UHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCisvLyBMYXRpbjEgcHJvdmlkZXIKKworc3RhdGljIFVUZXh0KiB1VGV4dExhdGlu
MUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOworc3RhdGlj
IGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqKTsKK3N0YXRpYyBVQm9vbCB1
VGV4dExhdGluMUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90
IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50
MzJfdCwgVUVycm9yQ29kZSopOworc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFNYXBPZmZzZXRU
b05hdGl2ZShjb25zdCBVVGV4dCopOworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRp
dmVJbmRleFRvVVRGMTYoY29uc3QgVVRleHQqLCBpbnQ2NF90KTsKK3N0YXRpYyB2b2lkIHVUZXh0
TGF0aW4xQ2xvc2UoVVRleHQqKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHVU
ZXh0TGF0aW4xRnVuY3MgPSB7CisgICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAorICAgIDAsCisgICAg
MCwKKyAgICAwLAorICAgIHVUZXh0TGF0aW4xQ2xvbmUsCisgICAgdVRleHRMYXRpbjFOYXRpdmVM
ZW5ndGgsCisgICAgdVRleHRMYXRpbjFBY2Nlc3MsCisgICAgdVRleHRMYXRpbjFFeHRyYWN0LAor
ICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0
aXZlLAorICAgIHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2LAorICAgIHVUZXh0TGF0
aW4xQ2xvc2UsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIKK307CisK
K3N0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0
IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKGRlZXAsICFkZWVwKTsKKworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykp
CisgICAgICAgIHJldHVybiAwOworCisgICAgVVRleHQqIHJlc3VsdCA9IHV0ZXh0X3NldHVwKGRl
c3RpbmF0aW9uLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHks
IHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGRl
c3RpbmF0aW9uOworICAgIAorICAgIHJlc3VsdC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gc291cmNl
LT5wcm92aWRlclByb3BlcnRpZXM7CisgICAgCisgICAgLy8gUG9pbnQgYXQgdGhlIHNhbWUgcG9z
aXRpb24sIGJ1dCB3aXRoIGFuIGVtcHR5IGJ1ZmZlci4KKyAgICByZXN1bHQtPmNodW5rTmF0aXZl
U3RhcnQgPSBzb3VyY2UtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgcmVzdWx0LT5jaHVua05hdGl2
ZUxpbWl0ID0gc291cmNlLT5jaHVua05hdGl2ZVN0YXJ0OworICAgIHJlc3VsdC0+bmF0aXZlSW5k
ZXhpbmdMaW1pdCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFy
dCk7CisgICAgcmVzdWx0LT5jaHVua09mZnNldCA9IDA7CisgICAgcmVzdWx0LT5jb250ZXh0ID0g
c291cmNlLT5jb250ZXh0OworICAgIHJlc3VsdC0+YSA9IHNvdXJjZS0+YTsKKyAgICByZXN1bHQt
PnBGdW5jcyA9ICZ1VGV4dExhdGluMUZ1bmNzOworICAgIHJlc3VsdC0+Y2h1bmtDb250ZW50cyA9
IChVQ2hhciopcmVzdWx0LT5wRXh0cmE7CisgICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPihy
ZXN1bHQtPmNodW5rQ29udGVudHMpLCAwLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVy
SW5saW5lQ2FwYWNpdHkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludDY0
X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqIHVUZXh0KQoreworICAgIHJldHVybiB1
VGV4dC0+YTsKK30KKworc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4
dCwgaW50NjRfdCBpbmRleCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBpbnQ2NF90IGxlbmd0aCA9
IHVUZXh0LT5hOworCisgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgdVRl
eHQtPmNodW5rTmF0aXZlTGltaXQgJiYgaW5kZXggPj0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQp
IHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgaW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3
IG9mZnNldC4KKyAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOworICAgICAgICAgICAgcmV0
dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCAmJiB1VGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIE9mZiB0aGUg
ZW5kIG9mIHRoZSBidWZmZXIsIGJ1dCB3ZSBjYW4ndCBnZXQgaXQuCisgICAgICAgICAgICB1VGV4
dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0KTsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChpbmRleCA8PSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAm
JiBpbmRleCA+IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7CisgICAgICAgICAgICAvLyBBbHJl
YWR5IGluc2lkZSB0aGUgYnVmZmVyLiBTZXQgdGhlIG5ldyBvZmZzZXQuCisgICAgICAgICAgICB1
VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5j
aHVua05hdGl2ZVN0YXJ0KTsKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9Cisg
ICAgICAgIGlmICghaW5kZXggJiYgIXVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7CisgICAgICAg
ICAgICAvLyBBbHJlYWR5IGF0IHRoZSBiZWdpbm5pbmc7IGNhbid0IGdvIGFueSBmYXJ0aGVyLgor
ICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoZm9yd2FyZCkgeworICAgICAg
ICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IGluZGV4OworICAgICAgICB1VGV4dC0+Y2h1bmtO
YXRpdmVMaW1pdCA9IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICsgVVRleHRXaXRoQnVmZmVySW5s
aW5lQ2FwYWNpdHk7CisgICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0
aCkKKyAgICAgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOworCisgICAg
ICAgIHVUZXh0LT5jaHVua09mZnNldCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdVRleHQt
PmNodW5rTmF0aXZlTGltaXQgPSBpbmRleDsKKyAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID4gbGVuZ3RoKQorICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBs
ZW5ndGg7CisKKyAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB1VGV4dC0+Y2h1bmtO
YXRpdmVMaW1pdCAtIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5OworICAgICAgICBpZiAo
dVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPCAwKQorICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0
aXZlU3RhcnQgPSAwOworCisgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOworICAgIH0KKyAgICB1
VGV4dC0+Y2h1bmtMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih1VGV4dC0+Y2h1bmtOYXRp
dmVMaW1pdCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKKworICAgIFN0cmluZ0ltcGw6OmNv
cHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNf
Y2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0
YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7CisKKyAgICB1
VGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKKworICAgIHJl
dHVybiBUUlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUV4dHJhY3QoVVRleHQq
IHVUZXh0LCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGxpbWl0LCBVQ2hhciogZGVzdCwgaW50MzJf
dCBkZXN0Q2FwYWNpdHksIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBpbnQ2NF90IGxlbmd0
aCA9IHVUZXh0LT5hOworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVy
biAwOworCisgICAgaWYgKGRlc3RDYXBhY2l0eSA8IDAgfHwgKCFkZXN0ICYmIGRlc3RDYXBhY2l0
eSA+IDApKSB7CisgICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBs
aW1pdCB8fCAobGltaXQgLSBzdGFydCkgPiBJTlQzMl9NQVgpIHsKKyAgICAgICAgKnN0YXR1cyA9
IFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIGlmIChzdGFydCA+IGxlbmd0aCkKKyAgICAgICAgc3RhcnQgPSBsZW5ndGg7CisgICAgaWYg
KGxpbWl0ID4gbGVuZ3RoKQorICAgICAgICBsaW1pdCA9IGxlbmd0aDsKKworICAgIGxlbmd0aCA9
IGxpbWl0IC0gc3RhcnQ7CisgICAgCisgICAgaWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiAw
OworCisgICAgaWYgKGRlc3RDYXBhY2l0eSA+IDAgJiYgIWRlc3QpIHsKKyAgICAgICAgaW50MzJf
dCB0cmltbWVkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKKyAgICAgICAg
aWYgKHRyaW1tZWRMZW5ndGggPiBkZXN0Q2FwYWNpdHkpCisgICAgICAgICAgICB0cmltbWVkTGVu
Z3RoID0gZGVzdENhcGFjaXR5OworCisgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0
LCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odHJpbW1lZExlbmd0aCkpOworICAgIH0KKworICAgIGlmIChsZW5n
dGggPCBkZXN0Q2FwYWNpdHkpIHsKKyAgICAgICAgZGVzdFtsZW5ndGhdID0gMDsKKyAgICAgICAg
aWYgKCpzdGF0dXMgPT0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORykKKyAgICAgICAg
ICAgICpzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgfSBlbHNlIGlmIChsZW5ndGggPT0gZGVz
dENhcGFjaXR5KQorICAgICAgICAqc3RhdHVzID0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FS
TklORzsKKyAgICBlbHNlCisgICAgICAgICpzdGF0dXMgPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJP
UjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOworfQorCitzdGF0
aWMgaW50NjRfdCB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0KiB1VGV4
dCkKK3sKKyAgICByZXR1cm4gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgKyB1VGV4dC0+Y2h1bmtP
ZmZzZXQ7Cit9CisKK3N0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VU
RjE2KGNvbnN0IFVUZXh0KiB1VGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCkKK3sKKyAgICBBU1NF
UlRfVU5VU0VEKHVUZXh0LCB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA+PSBuYXRpdmVJbmRleCk7
CisgICAgQVNTRVJUX1VOVVNFRCh1VGV4dCwgbmF0aXZlSW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRp
dmVMaW1pdCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KG5hdGl2ZUluZGV4KTsK
K30KKworc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4dCogdVRleHQpCit7CisgICAg
dVRleHQtPmNvbnRleHQgPSBudWxscHRyOworfQorCitVVGV4dCogb3BlbkxhdGluMVVUZXh0UHJv
dmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxV
UkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghc3RyaW5nIHx8
IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJP
UjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIFVUZXh0KiB0ZXh0ID0gdXRl
eHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVy
KSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7CisgICAgICAgIEFTU0VS
VCghdGV4dCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHRleHQtPmNv
bnRleHQgPSBzdHJpbmc7CisgICAgdGV4dC0+YSA9IGxlbmd0aDsKKyAgICB0ZXh0LT5wRnVuY3Mg
PSAmdVRleHRMYXRpbjFGdW5jczsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKil0
ZXh0LT5wRXh0cmE7CisgICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0Nv
bnRlbnRzKSwgMCwgc2l6ZW9mKFVDaGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5
KTsKKworICAgIHJldHVybiB0ZXh0OworfQorCisKKy8vIExhdGluMUNvbnRleHRBd2FyZSBwcm92
aWRlcgorCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQq
LCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4
dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCopOworc3RhdGljIFVCb29sIHVU
ZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOworc3Rh
dGljIGludDMyX3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRf
dCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7CitzdGF0aWMgdm9pZCB1
VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKFVUZXh0Kik7CisKK3N0YXRpYyBjb25zdCBzdHJ1
Y3QgVVRleHRGdW5jcyB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MgPSB7CisgICAgc2l6ZW9m
KFVUZXh0RnVuY3MpLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIHVUZXh0TGF0aW4xQ29u
dGV4dEF3YXJlQ2xvbmUsCisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgs
CisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MsCisgICAgdVRleHRMYXRpbjFDb250
ZXh0QXdhcmVFeHRyYWN0LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRy
LAorICAgIG51bGxwdHIsCisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSwKKyAgICBu
dWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIGlubGluZSBV
VGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRl
eHQoY29uc3QgVVRleHQqIHRleHQpCit7CisgICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQor
ICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dDsKKyAgICByZXR1
cm4gdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEgPyBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0
OworfQorCitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNv
bnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVu
Z3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09
IHRleHQtPnBFeHRyYSk7CisgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAgQVNTRVJUKG5hdGl2
ZUluZGV4ID49IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOworICAgICAg
ICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXg7CisgICAgICAgIHRleHQtPmNo
dW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihV
Q2hhcik7CisgICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVuZ3Ro
KQorICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5hdGl2
ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQg
PSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUlu
ZGV4IC0gdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgaWYgKHRleHQt
PmNodW5rTmF0aXZlU3RhcnQgPCB0ZXh0LT5iKQorICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCA9IHRleHQtPmI7CisgICAgfQorICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1
bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNo
dW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50
MzJfdCByYW5nZS4KKyAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgp
IDogMDsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7
CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3Ro
OworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1
bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+
Y2h1bmtMZW5ndGgpKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3
aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGlu
dDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+
Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIHRl
eHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRy
YSk7CisgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQs
IG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworfQorCitzdGF0aWMgdm9pZCB0
ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2
NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sK
KyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICBBU1NFUlQo
Zm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIp
OworICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXgg
PCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIEFTU0VS
VF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDog
bmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
ID0gMDsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5j
aHVua0xlbmd0aCA9IHRleHQtPmI7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRl
eHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBk
ZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsg
bGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9m
ZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRp
bjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBu
YXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAg
QVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4
dC0+cEV4dHJhKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VUNoYXIqPih0ZXh0LT5xKTsKKyAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JD
b250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworfQorCitz
dGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0
aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMp
Cit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAs
IHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0
aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQoreworICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsK
K30KKworc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0
ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4
dC0+Y29udGV4dCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIGludDY0X3QgbmF0aXZlTGVu
Z3RoID0gdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgodGV4dCk7CisgICAgVUJv
b2wgaXNBY2Nlc3NpYmxlOworICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2Uo
dGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkK
KyAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKKyAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNj
ZXNzUGluSW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7CisgICAgVVRleHRQcm92aWRl
ckNvbnRleHQgY3VycmVudENvbnRleHQgPSB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVu
dENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVU
ZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKKyAgICBBU1NF
UlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKKyAgICBp
ZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgeworICAgICAgICBpZiAoY3VycmVudENv
bnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAgICAg
ICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9
PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgIHRleHRMYXRp
bjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobmV3Q29u
dGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4
dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKwor
c3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50
NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCit7
CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVz
ZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMKKyAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFu
IGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICplcnJv
ckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9SOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg
dm9pZCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQoreworICAgIHRl
eHQtPmNvbnRleHQgPSBudWxscHRyOworfQorCitVVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2Fy
ZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFy
KiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50
IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZB
SUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghc3RyaW5nIHx8IGxl
bmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkpIHsKKyAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAo
JnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVz
KTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVV
VGV4dFByb3ZpZGVyKHRleHQsICZ0ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywg
bGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRl
eHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3Uv
VVRleHRQcm92aWRlckxhdGluMS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxN2IzNGQ1NjY1M2NhNGQ3YThjYTQx
NGUxNDc5MDNlMGNhNzI4MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgVVRleHRQcm92aWRlckxhdGluMV9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJMYXRp
bjFfaAorCisjaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xD
aGFyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjb25zdCBpbnQgVVRleHRXaXRoQnVmZmVySW5s
aW5lQ2FwYWNpdHkgPSAxNjsKKworc3RydWN0IFVUZXh0V2l0aEJ1ZmZlciB7CisgICAgVVRleHQg
dGV4dDsKKyAgICBVQ2hhciBidWZmZXJbVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHldOwor
fTsKKworVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRX
aXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVFcnJvckNv
ZGUqIHN0YXR1cyk7CitVVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIo
VVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExl
bmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRp
ZiAvLyBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZmMyZWFiOWE0NTdmMTc3NDlmNzIz
ZjUyMDdmMzgxZGYyOWZhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgor
CisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFt
ZXNwYWNlIFdURiB7CisKKy8vIFVURjE2Q29udGV4dEF3YXJlIHByb3ZpZGVyCisKK3N0YXRpYyBV
VGV4dCogdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBV
Qm9vbCwgVUVycm9yQ29kZSopOworc3RhdGljIGludDY0X3QgdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZU5hdGl2ZUxlbmd0aChVVGV4dCopOworc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdh
cmVBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7CitzdGF0aWMgaW50MzJfdCB1VGV4dFVU
RjE2Q29udGV4dEF3YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwg
aW50MzJfdCwgVUVycm9yQ29kZSopOworc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZUNsb3NlKFVUZXh0Kik7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0VVRG
MTZDb250ZXh0QXdhcmVGdW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwK
KyAgICAwLAorICAgIDAsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb25lLAorICAgIHVU
ZXh0VVRGMTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCisgICAgdVRleHRVVEYxNkNvbnRleHRB
d2FyZUFjY2VzcywKKyAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCwKKyAgICBudWxs
cHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIHVUZXh0
VVRGMTZDb250ZXh0QXdhcmVDbG9zZSwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAg
bnVsbHB0cgorfTsKKworc3RhdGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0VVRG
MTZDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCkKK3sKKyAg
ICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMpCisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVy
Q29udGV4dDo6Tm9Db250ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRl
eHQtPnAgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3Zp
ZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250
ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJU
KHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3
YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPj0gdGV4dC0+YiA6IG5hdGl2ZUluZGV4ID4gdGV4
dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXgg
PCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQt
PmNodW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQg
PSBuYXRpdmVMZW5ndGg7CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxp
bWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3Ro
IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdl
LgorICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSk7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAg
IHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2
NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAv
LyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQg
ZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5r
T2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5n
dGgpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1h
cnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2
ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVu
dHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICB0ZXh0LT5jaHVua0Nv
bnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5wKTsKKyAgICB0ZXh0VVRG
MTZDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0
aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKworc3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3
YXJlTW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBp
bnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+
Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUlu
ZGV4IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOworICAgIEFTU0VSVF9VTlVT
RUQobmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBu
YXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwg
Zm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0
aXZlTGVuZ3RoKTsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKKyAgICB0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQt
PmI7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwor
ICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
OworICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVk
IG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VS
VChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4
dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5j
aHVua0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRj
aFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90
IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5r
Q29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKKyAgICB0ZXh0LT5j
aHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKKyAgICB0
ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgs
IG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyBVVGV4dCogdVRleHRVVEYxNkNv
bnRleHRBd2FyZUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwg
VUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIHJldHVybiB1VGV4dENsb25l
SW1wbChkZXN0aW5hdGlvbiwgc291cmNlLCBkZWVwLCBzdGF0dXMpOworfQorCitzdGF0aWMgaW5s
aW5lIGludDY0X3QgdVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCogdGV4
dCkKK3sKKyAgICByZXR1cm4gdGV4dC0+YSArIHRleHQtPmI7Cit9CisKK3N0YXRpYyBVQm9vbCB1
VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUlu
ZGV4LCBVQm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+Y29udGV4dCkKKyAgICAgICAg
cmV0dXJuIEZBTFNFOworICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRVVEYxNkNvbnRl
eHRBd2FyZU5hdGl2ZUxlbmd0aCh0ZXh0KTsKKyAgICBVQm9vbCBpc0FjY2Vzc2libGU7CisgICAg
aWYgKHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0
aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0FjY2Vzc2libGUpKQorICAgICAgICByZXR1cm4gaXNBY2Nl
c3NpYmxlOworICAgIG5hdGl2ZUluZGV4ID0gdVRleHRBY2Nlc3NQaW5JbmRleChuYXRpdmVJbmRl
eCwgbmF0aXZlTGVuZ3RoKTsKKyAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBjdXJyZW50Q29udGV4
dCA9IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KHRleHQpOworICAgIFVU
ZXh0UHJvdmlkZXJDb250ZXh0IG5ld0NvbnRleHQgPSB1VGV4dFByb3ZpZGVyQ29udGV4dCh0ZXh0
LCBuYXRpdmVJbmRleCwgZm9yd2FyZCk7CisgICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gVVRleHRQ
cm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dCk7CisgICAgaWYgKG5ld0NvbnRleHQgPT0gY3VycmVu
dENvbnRleHQpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJD
b250ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZv
cndhcmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVN
b3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCk7CisgICAgfSBlbHNlIGlmIChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQ
cmltYXJ5Q29udGV4dCkKKyAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9Qcmlt
YXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRl
eHQ6OlByaW9yQ29udGV4dCk7CisgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwor
ICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGludDMyX3QgdVRleHRVVEYxNkNv
bnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMy
X3QsIFVFcnJvckNvZGUqIGVycm9yQ29kZSkKK3sKKyAgICAvLyBJbiB0aGUgcHJlc2VudCBjb250
ZXh0LCB0aGlzIHRleHQgcHJvdmlkZXIgaXMgdXNlZCBvbmx5IHdpdGggSUNVIGZ1bmN0aW9ucwor
ICAgIC8vIHRoYXQgZG8gbm90IHBlcmZvcm0gYW4gZXh0cmFjdCBvcGVyYXRpb24uCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgKmVycm9yQ29kZSA9IFVfVU5TVVBQT1JURURfRVJST1I7
CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVD
bG9zZShVVGV4dCogdGV4dCkKK3sKKyAgICB0ZXh0LT5jb250ZXh0ID0gbnVsbHB0cjsKK30KKwor
VVRleHQqIG9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHQqIHRleHQsIGNv
bnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29u
dGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAg
IGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghc3Ry
aW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVO
VF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHRleHQgPSB1dGV4dF9zZXR1
cCh0ZXh0LCAwLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAg
ICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaW5pdGlh
bGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIodGV4dCwgJnRleHRVVEYxNkNvbnRleHRBd2Fy
ZUZ1bmNzLCBzdHJpbmcsIGxlbmd0aCwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgp
OworICAgIHJldHVybiB0ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNjMmMyYzhl
NmM1ZmFkYTc1YjVkNTFmOTZiYjhhY2UwYTcwNGFiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oCkBAIC0wLDAgKzEsMzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFVUZXh0UHJvdmlkZXJVVEYxNl9oCisjZGVmaW5lIFVUZXh0
UHJvdmlkZXJVVEYxNl9oCisKKyNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCitVVGV4dCogb3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4
dCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250
ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKik7CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCisjZW5kaWYgLy8gVVRleHRQcm92aWRlclVURjE2X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0g
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFj
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJlZjVkYWE2NDI4ODgyMWUyMGYyNjI4YzY4NTVlZThlODhhMzg5MmMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L21hYy9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVTWFjLm1tCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRp
YyBjb25zdCBpbnQgbWF4TG9jYWxlU3RyaW5nTGVuZ3RoID0gMzI7CisKK3N0YXRpYyBpbmxpbmUg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKK3sKKyAg
ICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJl
bmNlc0NvcHlWYWx1ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwKKyAgICAgICAga0NG
UHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NG
UHJlZmVyZW5jZXNBbnlIb3N0KSk7CisgICAgaWYgKCFsb2NhbGUgfHwgQ0ZHZXRUeXBlSUQobG9j
YWxlLmdldCgpKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGxvY2FsZS5nZXQoKSk7Cit9
CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgp
Cit7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlc0FycmF5ID0gYWRvcHRDRihD
RkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CisgICAgaWYgKCFsYW5ndWFnZXNBcnJh
eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFDRkFycmF5R2V0Q291bnQobGFu
Z3VhZ2VzQXJyYXkuZ2V0KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2Vz
QXJyYXkuZ2V0KCksIDApKTsKK30KKworc3RhdGljIHZvaWQgZ2V0TG9jYWxlKENGU3RyaW5nUmVm
IGxvY2FsZSwgY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkK
K3sKKyAgICAvLyBFbXB0eSBzdHJpbmcgbWVhbnMgInJvb3QgbG9jYWxlIiwgYW5kIHRoYXQgaXMg
d2hhdCB3ZSB1c2UgaWYgd2UgY2FuJ3QgZ2V0IGEgcHJlZmVyZW5jZS4KKyAgICBsb2NhbGVTdHJp
bmdCdWZmZXJbMF0gPSAwOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm47CisgICAg
Q0ZTdHJpbmdHZXRDU3RyaW5nKGxvY2FsZSwgbG9jYWxlU3RyaW5nQnVmZmVyLCBtYXhMb2NhbGVT
dHJpbmdMZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOworfQorCitzdGF0aWMgdm9pZCBn
ZXRTZWFyY2hMb2NhbGUoY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVu
Z3RoXSkKK3sKKyAgICBnZXRMb2NhbGUodG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkuZ2V0KCksIGxv
Y2FsZVN0cmluZ0J1ZmZlcik7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJ
RCgpCit7CisgICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmlu
Z0xlbmd0aF07CisgICAgc3RhdGljIGJvb2wgZ290U2VhcmNoTG9jYWxlID0gZmFsc2U7CisgICAg
aWYgKCFnb3RTZWFyY2hMb2NhbGUpIHsKKyAgICAgICAgZ2V0U2VhcmNoTG9jYWxlKGxvY2FsZVN0
cmluZ0J1ZmZlcik7CisgICAgICAgIGdvdFNlYXJjaExvY2FsZSA9IHRydWU7CisgICAgfQorICAg
IHJldHVybiBsb2NhbGVTdHJpbmdCdWZmZXI7Cit9CisKK3N0YXRpYyB2b2lkIGdldFRleHRCcmVh
a0xvY2FsZShjaGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQor
eworICAgIC8vIElmIHRoZXJlIGlzIG5vIHRleHQgYnJlYWsgbG9jYWxlLCB1c2UgdGhlIHRvcCBs
YW5ndWFnZSBwcmVmZXJlbmNlLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlID0g
dGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSgpOworICAgIGlmIChsb2NhbGUpIHsKKyAgICAgICAg
aWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Fub25pY2FsTG9jYWxlID0gYWRvcHRDRihDRkxv
Y2FsZUNyZWF0ZUNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbG9jYWxlLmdldCgpKSkpCisgICAgICAgICAgICBsb2NhbGUgPSBjYW5vbmlj
YWxMb2NhbGU7CisgICAgfSBlbHNlCisgICAgICAgIGxvY2FsZSA9IHRvcExhbmd1YWdlUHJlZmVy
ZW5jZSgpOworICAgIGdldExvY2FsZShsb2NhbGUuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7
Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgc3Rh
dGljIGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07CisgICAg
c3RhdGljIGJvb2wgZ290VGV4dEJyZWFrTG9jYWxlID0gZmFsc2U7CisgICAgaWYgKCFnb3RUZXh0
QnJlYWtMb2NhbGUpIHsKKyAgICAgICAgZ2V0VGV4dEJyZWFrTG9jYWxlKGxvY2FsZVN0cmluZ0J1
ZmZlcik7CisgICAgICAgIGdvdFRleHRCcmVha0xvY2FsZSA9IHRydWU7CisgICAgfQorICAgIHJl
dHVybiBsb2NhbGVTdHJpbmdCdWZmZXI7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTQxN2UxNzA1ZWY1NGI5MzkyMTRkYTE4NDgwZGI3YTMyYzMyYzkyOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VXaW4uY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQoreworICAg
IC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICIiOworfQor
Citjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQoreworICAgIC8vIFVzaW5n
IGVuX1VTX1BPU0lYIG5vdyBzbyB3b3JkIHNlbGVjdGlvbiBpbiBhZGRyZXNzIGZpZWxkIHdvcmtz
IGFzIGV4cGVjdGVkIGFzIGJlZm9yZSAoZG91YmxlLWNsaWNraW5nCisgICAgLy8gaW4gYSBVUkwg
c2VsZWN0cyBhIHdvcmQgZGVsaW1pdGVkIGJ5IHBlcmlvZHMgcmF0aGVyIHRoYW4gc2VsZWN0aW5n
IHRoZSBlbnRpcmUgVVJMKS4KKyAgICAvLyBIb3dldmVyLCB0aGlzIGlzIG5vdCBlbnRpcmVseSBj
b3JyZWN0IC0gd2Ugc2hvdWxkIGhvbm9yIHRoZSBzeXN0ZW0gbG9jYWxlIGluIHRoZSBub3JtYWwg
Y2FzZS4KKyAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzY3ODY3MDM+IFNob3VsZCB1c2Ug
c3lzdGVtIGxvY2FsZSBmb3IgdGV4dCBicmVha2luZworICAgIHJldHVybiAiZW5fVVNfUE9TSVgi
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkwNDM3N2ZjZWJkZDU2ZTYwZTY2MmRl
NTI3NDA2MTU2NjU0Mjg3NmEuLmU3OGIwNDJiMTA0MDFlMWY0ZWUzYTJhYjFhMDUyYzIxOGMzYTEx
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMzcwLDcgKzIzNzAsNiBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwCiAgICAgcGxh
dGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Qm91
bmRhcmllcy5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvVGV4dENvZGVjLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVj
SUNVLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtMjM4Mywx
MCArMjM4Miw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZ1JlZ2lzdHJ5LmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKIAot
ICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCi0gICAgcGxhdGZvcm0vdGV4
dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyVVRGMTYuY3BwCi0KICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlLmNwcAogICAgIHBs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKICAgICBwbHVnaW5zL0RPTVBsdWdpbi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggM2ZlNjAzNzhjMjZjZjA4ZTQ1ZjM3M2VkNTMzODdk
ZWY3ODQ1NmNhMy4uNTE0NTA0ZTZlYzI1YWE1ZTQzYjk5Mzk4ZDVlMzVjZWVlYTc2NmFhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIxMiw4ICsyMTIsNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9uLmNwcAogICAgIHBs
YXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKLQogICAgIHBsYXRmb3JtL3RleHQvZW5jaGFu
dC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCiAKICAgICBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYzIyNDA1
Yjc0ZTE1ZTdiNzVmNzRhYzgwZjgxNTdjNzczYTljOWVjMC4uNjQ1YWRkMWNlMzg4ODhiMDRkNGEy
ZDg5YWRhMGE3YzZkZTE5OTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE4Miw4
ICsxODIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL3Rl
eHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCiAKLSAgICBwbGF0Zm9ybS90ZXh0L2d0
ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4
dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCiAKICAgICBwbGF0Zm9ybS91bml4L0xv
Z2dpbmdVbml4LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAzOTg5NmY5ODQzNTI2
MTJhOWVlZDQ5YjI0MDExNGI0YzFkODQ5NTk4Li45ZjZmNDk2YjZjYzRlZjZlNGI3NGQ4NGFjMGFh
OWRlYTU1YTAyMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNTY2LDcgKzU2Niw2
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tCiAgICAgcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KLSAg
ICBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCiAg
ICAgcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAogCiAgICAgcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGNjYjFhNTcxZTlh
NmRlNTZhY2QwNTRhOTMzNjUzOWQwOGU2MGYzZmYuLjhkNzkwZmE3MDkxZmI2MTJmMTUxODk1Njlj
NTdkOTZhOTVjY2Q1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMDksOCArMTA5
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L2Nm
L0h5cGhlbmF0aW9uQ0YuY3BwCiAKLSAgICBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVV2luLmNwcAotCiAgICAgcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCiAg
ICAgcGxhdGZvcm0vd2luL0JpdG1hcEluZm8uY3BwCiAgICAgcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmYmE1N2Y4NDk5YjE2ZGIwZTA2OGZkOWQ3NTNlYjkxNTIy
YzllYjg0Li5jMTFiYzQ3ZTVjYWQ2MzBhMzY1N2NkZTFhZDlmN2I3NmEwYTU1YzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NTE4LDExICsxNTE4LDExIEBACiAJCTM3RjU3QUJBMUE1MDcyNkYwMDg3NkY5OCAvKiBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5ODFDQTlFMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsLmNwcCAqLzsgfTsKIAkJMzdGNTdBQkIxQTUwNzI3MzAwODc2Rjk4IC8qIEFjY2Vz
c2liaWxpdHlBUklBR3JpZFJvdy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyOTgxQ0E5RjEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmNwcCAqLzsgfTsKIAkJMzdGNTdBQkMxQTUwNzI3NzAwODc2Rjk4IC8qIEFjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjk4MUNBQTAxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuY3BwICovOyB9OworCQkzN0Y1N0FCQzFBNTA3Mjg0MDA4NzZGOTggLyogQWNj
ZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxp
dHlNYXRoTUxFbGVtZW50LmNwcCAqLzsgfTsKIAkJMzdGNTdBQkQxQTUwNzI3QTAwODc2Rjk4IC8q
IEFjY2Vzc2liaWxpdHlMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI5ODFDQUExMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlz
dC5jcHAgKi87IH07CiAJCTM3RjU3QUJFMUE1MDcyN0UwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5
TGlzdEJveC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOTgxQ0FBMjEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwICov
OyB9OwogCQkzN0Y1N0FCRjFBNTA3MjgxMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cCAqLzsgfTsKIAkJMzdGNTdBQzAxQTUwNzI4NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlNZWRp
YUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI5ODFDQUE0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9s
cy5jcHAgKi87IH07Ci0JCTM3RjU3QUJDMUE1MDcyODQwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5
TWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVs
ZW1lbnQuY3BwICovOyB9OwogCQkzN0Y1N0FDMTFBNTA3Mjg3MDA4NzZGOTggLyogQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjk4NTcwOTIxNUNDNTMyRDAwNjM1NUNEIC8qIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJMzdGNTdBQzIxQTUwNzI4QjAwODc2Rjk4IC8qIEFjY2Vzc2liaWxp
dHlPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjk4MUNBQTUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICov
OyB9OwogCQkzN0Y1N0FDMzFBNTA3MjhGMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eVByb2dyZXNz
SW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE0MDlDOTgyMTE2RDBEREQwMDcxOTdCRCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRp
Y2F0b3IuY3BwICovOyB9OwpAQCAtMTY5MywxMCArMTY5Myw4IEBACiAJCTQzOTA0NkREMTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkM5MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5k
ZXJNYXRoTUxNYXRoLmNwcCAqLzsgfTsKIAkJNDM5MDQ2REUxMkRBMjVFODAwQUY4MEEyIC8qIFJl
bmRlck1hdGhNTE1hdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzOTA0NkNBMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmggKi87
IH07CiAJCTQzOTA0NkRGMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxPcGVyYXRvckRpY3Rpb25h
cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5
MDQ2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgKi87
IH07Ci0JCTQzOTE3NkRGMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkxNzZDQjEyREEyNUUx
N0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovOyB9OwogCQk0MzkwNDZERjEyREEyNUU4MDBB
RjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0IxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTE9wZXJhdG9yLmNwcCAqLzsgfTsKIAkJNDM5MDQ2RTAxMkRBMjVFMTdCQUY4MEEyIC8q
IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeS5oICovOyB9OwotCQk0MzkxNzZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0
aE1MU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzOTE3NkNDMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oICovOyB9OwogCQk0Mzkw
NDZFMDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNDMTJEQTI1RTgwMEFG
ODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oICovOyB9OwogCQk0MzkwNDZFMTEyREEyNUU4
MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDRDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVy
TWF0aE1MUm9vdC5jcHAgKi87IH07CiAJCTQzOTA0NkUyMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5k
ZXJNYXRoTUxSb290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzkwNDZDRTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5oICovOyB9
OwpAQCAtMTcxMCw2ICsxNzA4LDggQEAKIAkJNDM5MDQ2RUExMkRBMjVFODEyQUY4MEFDIC8qIE1h
dGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM5MDQ2RDYxMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5oICovOyB9OwogCQk0
MzkwNDZFQjEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2RDcxMkRBMjVFODAw
QUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmNwcCAqLzsgfTsKIAkJNDM5MDQ2RUMxMkRBMjVF
ODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZEODEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVy
TWF0aE1MVG9rZW4uaCAqLzsgfTsKKwkJNDM5MTc2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhN
TFN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzOTE3NkNCMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgKi87IH07CisJCTQz
OTE3NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8q
IE1hdGhNTFN0eWxlLmggKi87IH07CiAJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdB
bmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCAqLzsgfTsK
IAkJNDM5RDMzNDQxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzlEMzM0MTEz
QTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCAqLzsgfTsKIAkJNDM5
RDMzNDUxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDIxM0E2OTExQzAwQzIw
RjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oICovOyB9OwpAQCAtMjgxNCwxMiArMjgxNCw2IEBA
CiAJCTdDNzNGQjExMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzczRkIwRjE5
MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuY3BwICovOyB9OwogCQk3Qzcz
RkIxMjE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjEwMTkxRUY2RjQwMDdE
RTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oICovOyB9OwogCQk3QzczRkIxOTE5MUVGODA4
MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjE3MTkxRUY4
MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwICov
OyB9OwotCQk3Qzc0RDQzMzE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQz
MTE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi87IH07Ci0JCTdD
NzRENDM0MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzMjE4ODIzQTkzMDBF
NUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovOyB9OwotCQk3Qzc0RDQzNzE4ODIzQjE5
MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzNTE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92
aWRlci5jcHAgKi87IH07Ci0JCTdDNzRENDM4MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0
RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovOyB9OwotCQk3Qzc0RDQz
QjE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM5MTg4MjQwMDQwMEU1RUQ1
NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovOyB9OwotCQk3Qzc0RDQzQzE4ODI0MDA0MDBF
NUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92
aWRlclVURjE2LmggKi87IH07CiAJCTdDNzk0MUU0MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0
ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3Jl
U29mdExpbmsubW0gKi87IH07CiAJCTdDNzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0
ZWN0b3JzQ29yZVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVT
b2Z0TGluay5oICovOyB9OwogCQk3QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29s
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzgz
REU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi87IH07CkBAIC00Mjc1LDcg
KzQyNjksNiBAQAogCQlBNUEyQUYwQjE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFG
MDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLzsgfTsKIAkJQTVBMkFG
MEMxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyog
UGFnZURlYnVnZ2FibGUuaCAqLzsgfTsKIAkJQTVBN0FBNDMxMzJGMEVDQzAwRDNBM0MyIC8qIFdl
YkF1dG9jYXBpdGFsaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUE3QUE0MjEzMkYwRUNDMDBEM0EzQzIgLyogV2ViQXV0b2NhcGl0YWxpemUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNUFCQjc4
NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFCQjc4NjEzQjkwNEJDMDBG
MTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi87IH07CiAJCUE1QUZCMzRGMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5n
ZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNURFQkRBMzE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0
UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNURFQkQ5RjE2RkI5MDg3MDA4MzZGRTAgLyogV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAgKi87IH07CkBAIC01MTEwLDcg
KzUxMDMsNiBAQAogCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2Nv
YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZG
Qzc4MEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tICovOyB9OwogCQlCMkFG
RkM4MzBEMDBBNUMxMDAzMDA3NEQgLyogR2x5cGhQYWdlTWFjLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzdCMEQwMEE1QzEwMDMwMDc0RCAv
KiBHbHlwaFBhZ2VNYWMuY3BwICovOyB9OwogCQlCMkFGRkM5NzBEMDBBNURGMDAzMDA3NEQgLyog
VGV4dEJvdW5kYXJpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMkFGRkM4QzBEMDBBNURGMDAzMDA3NEQgLyogVGV4dEJvdW5kYXJpZXMubW0gKi87
IH07Ci0JCUIyQUZGQzk4MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjJBRkZDOEQwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VNYWMubW0gKi87IH07CiAJCUIyQUZGQzk5MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNN
YWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJB
RkZDOEUwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5jcHAgKi87IH07CiAJCUIyQUZG
QzlBMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzhGMEQwMEE1REYwMDMwMDc0RCAvKiBU
ZXh0Q29kZWNNYWMuaCAqLzsgfTsKIAkJQjJCMUY3MTYwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50
ZXJFdmVudHNIaXRSdWxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCMkIxRjcxNDBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1
bGVzLmNwcCAqLzsgfTsKQEAgLTUxMjIsOCArNTExNCw2IEBACiAJCUIyQzNEQTJFMEQwMDZDMUQw
MEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0Q5RkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5jcHAgKi87IH07CiAJCUIyQzNEQTJGMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50
ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyQzNEOUZGMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREEzNDBEMDA2QzFE
MDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRh
cmllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUIyQzNEQTM2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBMDYwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjJDM0RBMzgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyQzNEQTA4MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQjJDM0RBMzkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwOTBEMDA2
QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCAqLzsgfTsKIAkJQjJDM0RBM0EwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRDb2RlYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjJDM0RBMEEwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlYy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTNCMEQw
MDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNJQ1UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBMEIwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRD
b2RlY0lDVS5jcHAgKi87IH07CkBAIC01ODA3LDcgKzU3OTcsNiBAQAogCQlCQ0QwRkM0RjBEQkQ3
MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEMEZDNEUwREJENzIwQjAwQjJGNjMwIC8qIERP
TVJHQkNvbG9ySW50ZXJuYWwuaCAqLzsgfTsKIAkJQkNENDFBQkIwQzA2MERFODAwQzBFNDQ2IC8q
IEpTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q0MUFCQTBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQkNENTMzNjQwRUQ2ODQ4OTAwODg3
NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLzsgfTsKLQkJQkNEOEE1RjAxNUY1NkYyQzAwOThE
MDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDhBNUVGMTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJ
dGVyYXRvci5jcHAgKi87IH07CiAJCUJDRDlDMjYyMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdp
bmRvd0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwICov
OyB9OwogCQlCQ0Q5QzI2MzBDMTdBQTY3MDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXBDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEOUMy
NUYwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
QkNEOUMyNjQwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzI2MDBDMTdBQTY3MDA1Qzkw
QTIgLyogSlNOb2RlQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTg2OTEsNiArODY4MCw3IEBACiAJCTI5
NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTQ5ODY4MTE5NTM0MTk0MDA3MkQyQkQgLyog
VGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjk3QkUzRDkxNkMwNDNEODAwMzMxNkJEIC8qIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQTlEMTMxODIyRUMwMEQxMkYyQSAv
KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJp
bGl0eUFSSUFHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUUx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5ODFDQTlGMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2OTksNyArODY4OSw2IEBA
CiAJCTI5ODFDQUEyMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQUEzMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQUE0MTMx
ODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTI5ODFBQkM0MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5
TWF0aE1MRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWF0aE1M
RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5ODFDQUE1MTMxODIy
RUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVu
ZGluZyA9IDA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5j
cHA7IH07CiAJCTI5ODFDQUE2MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0FBNzEzMTgyMkVDMDBEMTJG
MkEgLyogQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkw
MzYsOCArOTAyNSw4IEBACiAJCTMxRkIxQTZCMTIwQTVENjkwMERDMDJBMCAvKiBKU0RldmljZU1v
dGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAvKiBK
U0V4Y2VwdGlvbkJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeGNl
cHRpb25CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMzMUZGNjdERTE5N0I1
NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzFGRjY3REUxOTdCNTczOTNDNDZBN0YgLyogUmVuZGVyTWF0aE1MUGFkZGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFBhZGRlZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzFGRjY3REUxOTdCNTczOTNDNDZBQTcgLyogUmVu
ZGVyTWF0aE1MU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
TWF0aE1MU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzRjcwNEUwRkI0
OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Tm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzRjcwNEYw
RkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOb3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzM1MDNDOTkxMDE3OUE3NDAwM0I0N0UxIC8qIE5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
ZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IE5vdGlmaWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTMxMSwxMCArOTMwMCw4IEBACiAJCTQzOTA0NkM5MTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTE1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzkwNDZDQTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxNYXRoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNCMTJEQTI1RTE3QkFGODBBMiAvKiBN
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDM5MTc2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFN0eWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0IxMkRBMjVFODAwQUY4MEEyIC8qIFJl
bmRlck1hdGhNTE9wZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDM5MDQ2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxPcGVyYXRvckRpY3Rpb25h
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDM5MTc2Q0MxMkRBMjVFMTdCQUY4
MEEyIC8qIE1hdGhNTFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1h
dGhNTFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNDMTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxPcGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzkwNDZDRDEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNYXRoTUxSb290
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0UxMkRBMjVFODAwQUY4
MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyTWF0aE1MUm9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTMy
OCw2ICs5MzE1LDggQEAKIAkJNDM5MDQ2RDYxMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoT3BlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2RDcxMkRBMjVFODAwQUY4MEE5IC8qIFJl
bmRlck1hdGhNTFRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlck1hdGhNTFRva2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5
MDQ2RDgxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1hdGhNTFRva2VuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFRva2VuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQzOTE3NkNCMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxTdHlsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzOTE3NkNDMTJEQTI1RTE3QkFGODBBMiAv
KiBNYXRoTUxTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxT
dHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzlEMzM0MDEzQTY5MTFDMDBD
MjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR0FuaW1hdGVkVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzlE
MzM0MTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5RDMzNDIxM0E2OTExQzAwQzIwRjRGIC8qIFNW
R0FuaW1hdG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRvckZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNTU3LDEy
ICsxMDU0Niw2IEBACiAJCTdDNzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdl
SGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VzZXJN
ZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNzNGQjEw
MTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1VzZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzczRkIxNzE5MUVGODA4MDA3REUwNjEgLyogSlNVc2VyTWVzc2Fn
ZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4
dFByb3ZpZGVyTGF0aW4xLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
Qzc0RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVUZXh0UHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzc0RDQzNjE4ODIzQjE5
MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVVGV4dFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRE
NDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0M0ExODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0
UHJvdmlkZXJVVEYxNi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVGV4dFBy
b3ZpZGVyVVRGMTYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3OTQxRTIxQzU2
QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUg
LyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ByaW5nU29sdmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMjA3NSw3ICsxMjA1OCw2IEBACiAJCUE1QTJBRjA5MTgyOTcz
NDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlRGVidWdnYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUE3QUE0MjEzMkYwRUNDMDBEM0EzQzIgLyogV2ViQXV0b2Nh
cGl0YWxpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0b2NhcGl0
YWxpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVBQkI3ODYxM0I5MDRCQzAw
RjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEQxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGVwUmFuZ2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3Rl
cFJhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0ZXBSYW5nZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyog
S2V5RXZlbnRDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXlFdmVu
dENvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzEwOCw3ICsxMzA5MCw2
IEBACiAJCUIyQUZGQzg2MEQwMEE1REYwMDMwMDc0RCAvKiBtYWMtZW5jb2RpbmdzLnR4dCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gIm1hYy1lbmNvZGluZ3MudHh0Ijsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjJBRkZDODcwRDAwQTVERjAwMzAwNzREIC8qIG1ha2UtY2hhcnNldC10
YWJsZS5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gIm1ha2UtY2hhcnNl
dC10YWJsZS5wbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQUZGQzhDMEQwMEE1
REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBUZXh0Qm91bmRhcmllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQjJBRkZDOEQwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjJBRkZDOEUwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENvZGVjTWFjLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBRkZDOEYwRDAwQTVERjAwMzAwNzREIC8qIFRl
eHRDb2RlY01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENvZGVj
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQjFGNzE0MEQwMENBQTgwMDRB
RUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMzEyMCw4ICsxMzEwMSw2IEBACiAJCUIyQzNEOUZFMEQwMDZDMUQw
MEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlZ21lbnRlZFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyQzNEOUZGMEQwMDZDMUQwMEVGNkYyNiAvKiBTZWdtZW50ZWRTdHJpbmcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlZ21lbnRlZFN0cmluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwNDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJv
dW5kYXJpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRCb3VuZGFy
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyQzNEQTA2MEQwMDZDMUQwMEVG
NkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QjJDM0RBMDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBMDkwRDAwNkMx
RDAwRUY2RjI2IC8qIFRleHRDb2RlYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dENvZGVjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJD
M0RBMEEwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dENvZGVjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyQzNEQTBCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNJQ1UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDb2RlY0lDVS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMzgzMSw3ICsxMzgxMCw2IEBACiAJCUJDRDBGQzRFMERCRDcy
MEIwMEIyRjYzMCAvKiBET01SR0JDb2xvckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTVJHQkNvbG9ySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNENDFBQkEwQzA2MERFODAwQzBFNDQ2IC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVu
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
RnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRDhBNUVGMTVGNTZGMkMwMDk4
RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XaW5kb3dDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q5QzI1RjBDMTdBQTY3MDA1Qzkw
QTIgLyogSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNEOUMyNjAwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOb2RlQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDI1LDE5ICsxODQwMyw2IEBACiAJCQlw
YXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk3Qzc0RDQz
MDE4ODIzQTQyMDBFNUVENTcgLyogaWN1ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQlj
aGlsZHJlbiA9ICgKLQkJCQk3Qzc0RDQzNTE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRl
ci5jcHAgKi8sCi0JCQkJN0M3NEQ0MzYxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIu
aCAqLywKLQkJCQk3Qzc0RDQzMTE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGlu
MS5jcHAgKi8sCi0JCQkJN0M3NEQ0MzIxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJM
YXRpbjEuaCAqLywKLQkJCQk3Qzc0RDQzOTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRl
clVURjE2LmNwcCAqLywKLQkJCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92
aWRlclVURjE2LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IGljdTsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07CiAJCTdFNERFMTBCMTk4QjEwODEwMDUxQ0IwMiAvKiBjb2NvYSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjMzNSw3ICsyMjMw
MCw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUIyQjI2NDU5
MEQwMEE3N0UwMDBBQ0MxRCAvKiBjZiAqLywKLQkJCQk3Qzc0RDQzMDE4ODIzQTQyMDBFNUVENTcg
LyogaWN1ICovLAogCQkJCUE1MTZFOEIyMTM2RTA0QzAwMDc2QzNDMCAvKiBpb3MgKi8sCiAJCQkJ
QjJDM0Q5RjkwRDAwNkMxRDAwRUY2RjI2IC8qIG1hYyAqLywKIAkJCQlCMkMzRDlGMjBEMDA2QzFE
MDBFRjZGMjYgLyogQmlkaUNvbnRleHQuY3BwICovLApAQCAtMjIzNDcsNyArMjIzMTEsNiBAQAog
CQkJCTQ1M0VCNjM1MTU5QzU3MDQwMDAwMUJCNyAvKiBEYXRlVGltZUZvcm1hdC5oICovLAogCQkJ
CUNFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLywK
IAkJCQkzNzVDRDIzMTExOUQ0M0M4MDBBMkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLywKLQkJCQlB
NUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8s
CiAJCQkJODlCNUVBOUYxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwICovLAogCQkJ
CTg5QjVFQUEwMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi8sCiAJCQkJNzYzM0E3
MjQxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovLApAQCAtMjIz
NjMsOSArMjIzMjYsNiBAQAogCQkJCTk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhU
cmVlLmggKi8sCiAJCQkJMzcyQzAwQzMxMjk2MTFGMTAwNUM5NTc1IC8qIFRleHRCb3VuZGFyaWVz
LmNwcCAqLywKIAkJCQlCMkMzREEwNDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMu
aCAqLywKLQkJCQlCQ0Q4QTVFRjE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwICovLAotCQkJCUIyQzNEQTA2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5oICovLAotCQkJCUIyQzNEQTA4MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVLmggKi8sCiAJCQkJQTcxNTFCRDcxMkYxNTU4RjAwNUEwRjY0IC8qIFRleHRD
aGVja2VyQ2xpZW50LmggKi8sCiAJCQkJQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8qIFRleHRD
aGVja2luZy5oICovLAogCQkJCUIyQzNEQTA5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMu
Y3BwICovLApAQCAtMjI0MDksNyArMjIzNjksNiBAQAogCQkJCUIyQUZGQzg2MEQwMEE1REYwMDMw
MDc0RCAvKiBtYWMtZW5jb2RpbmdzLnR4dCAqLywKIAkJCQlCMkFGRkM4NzBEMDBBNURGMDAzMDA3
NEQgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovLAogCQkJCUIyQUZGQzhDMEQwMEE1REYwMDMw
MDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSAqLywKLQkJCQlCMkFGRkM4RDBEMDBBNURGMDAzMDA3
NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLywKIAkJCQlCMkFGRkM4
RTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLywKIAkJCQlCMkFGRkM4RjBE
MDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggKi8sCiAJCQkpOwpAQCAtMjc0MDAsNyAr
MjczNTksNiBAQAogCQkJCUJDRkY2NDkyMEVBRDE1QzIwMEMxRDZGNyAvKiBMZW5ndGhTaXplLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ5MTEyNDhGMEIzMDBEM0E5QzkgLyogTGlnaHRTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY1MEQwMEJGMjIwMDcxQjc4MiAvKiBMaW5l
YXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1QUJCNzg3MTNCOTA0
QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFCMzFDOTFFMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODlCNUVBQTIxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZGRUZBQjJBMTgzODBEQTAwMDUxNDUzNCAvKiBMaW5lTGF5b3V0U3Rh
dGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjg2MjIsOCArMjg1ODAsNiBAQAogCQkJCUNFN0IyREI1
MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTREQ0U2MTg4MTA1MUQwMDNFRURCQiAvKiBUZXh0QXV0b1NpemluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMzQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFy
aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQlCMkMzREEzNjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUIyQzNEQTM4MEQwMDZDMUQwMEVG
NkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzE1MUJEODEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tp
bmdIZWxwZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjg3NjYsOSArMjg3MjIsNiBAQAogCQkJCUJD
OEJGMTUxMTA1ODEzQkYwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM4QkYxNUExMDU4MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDREYzMTdDMTFGOEQ2ODMwMDNDNUJGOCAvKiBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M3NEQ0MzgxODgyM0IxOTAw
RTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDNzRENDM0MTg4
MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3Qzc0RDQzQzE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRTNCQkYwODExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjVBMTU0MjgxMjc5NTM0RDAwRDBCMEMwIC8qIFZhbGlkYXRpb25N
ZXNzYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTgzLDggKzMyMTM2LDYgQEAKIAkJCQkwRjU0
RENFNTE4ODEwNTFEMDAzRUVEQkIgLyogVGV4dEF1dG9TaXppbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzcyQzAwQzQxMjk2MTFGMTAwNUM5NTc1IC8qIFRleHRCb3VuZGFyaWVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUIyQUZGQzk3MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmll
cy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUJDRDhBNUYwMTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0
QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMkFGRkM5ODBEMDBBNURGMDAz
MDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUE3REJGOEREMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMzkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2Rl
Yy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEzQjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dENvZGVjSUNVLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIzMDMsOSArMzIyNTQsNiBAQAogCQkJ
CTdDRTY4MzQ0MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBVc2Vy
TWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDREYzMTdC
MTFGOEQ2ODMwMDNDNUJGOCAvKiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQk3Qzc0RDQzNzE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk3Qzc0RDQzMzE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQ
cm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3Qzc0RDQzQjE4ODI0MDA0MDBF
NUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQUZC
RjE4MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyRTNCQkYwNzExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNUExNTQyNzEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggZDUzM2MzNzBj
ZTY3NWZmYTU4NjRjNjQ2NmE4NDE0NzNiZjQxZTE2Ny4uYjJkN2RhZTcyOTVkMGEyNDgwOGQwMGRk
MzRiYjQzMzUwMmI5MzM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAt
MzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKLSNpbmNs
dWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCBi
Njk1MmUyYjg2ZjE5Y2VjNjZkY2JhZmNlOTY2MjFiNmQ1MTE5OWI5Li5mMTg2NTQ5NjdkZGU1Nzc1
NmU1ZDM1OTc4NzNkNTJiOTJhYzQ3N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0j
aW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggY2I3NGFmOTYzMGRiNGUyNTg4NTA2ZTc1
NzI2ZWQzYTAwZmUxMWNmNi4uMDdhYWI2MTZjYjY3Zjk2Zjg3ZWZmMWM0NjdmZGJkZjk1MzA2MTQ3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNTMsNyArNTMs
NyBAQAogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5l
TGF5b3V0UmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgotI2luY2x1ZGUg
IlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJW
aXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMuaCIKQEAgLTYzLDggKzYz
LDggQEAKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgIVVD
T05GSUdfTk9fQ09MTEFUSU9OCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VS5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdXNlYXJjaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2Ug
V1RGOjpVbmljb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4
IGVkNmE2OGExYWE2NjQ2MDBhOTYzYzY5MmUyY2I4OGMwMzg1M2U0YmUuLmUwZGM0MDU1ZWFlZGY4
YjM4OGIzNGViMmJlODI2YjFkNDUyZjZkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJlZFBvc2l0aW9u
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCi0jaW5j
bHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVT
ZWxlY3Rpb24uaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMDIzYWMzMzkwZjJiZGEyYjc1M2Y3YWJiODMwNjkz
OWE0ZDM2ZjA1Mi4uMzRiNGNjY2FlZDdiOWYzNThhOTczNjg5ZTNiMDc2YWI1N2FlNTdlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02MCw5ICs2MCw5IEBA
CiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIlNlYXJjaElucHV0VHlw
ZS5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGY5MjEwOGFjYTZmMWQ4YTNkOWNlZGFj
ZGIwYjgwODJkZGYzODJjOGQuLmNmMmE4YTg4NzA2MThkMDBlM2Y1NmVlMTJhMmJiNzZjZmY0YzUy
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAt
NDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0
QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAppbmRleCAzYWFmNDE0NWVkMThjZGQwN2M1YjQ5ODdmZTc3NzkwYzQwMzI2MDE5
Li44OTFiNmJiZmE5Y2E2M2JjNTVkMTMwY2ZiYmYwOTUxMjk4OGMwODU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCkBAIC03MCw3ICs3MCw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgogI2luY2x1ZGUgIlN1Ym1pdElucHV0VHlwZS5oIgogI2luY2x1ZGUgIlRlbGVwaG9uZUlucHV0
VHlwZS5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCiAjaW5j
bHVkZSAiVGltZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIlVSTElucHV0VHlwZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGFkMWQ0ZTM0ODAwNjlm
N2FhMGQxNzQxZDExYjM4ZDA3NDg0NGMyNGQuLjI2Njg4MTM5MThkZjZlMWRlN2Q1OTM4NzM2OGEx
MjhjM2IxOTJkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAj
aW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0SW5wdXRUeXBlLmNwcAppbmRleCBiNTRlOWIyZTdkOWQxMjhiMWNjOTUzMzYx
NGQ4ZjA0YTc3NWNlNjg4Li5mNmYwMjc2ZDE4ZDg2ODA0MGRiZmI2MjU4ODJiNzA4YzMzNjU4ZTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1l
cy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IGZlNWViZmVhZmY2OGNk
NzE1N2E1NTUxZjQ1MWY1OTE1ZTE3MDE1MGYuLjViMTg5NGU5MTJlODRmYzc5NzNlODk0MWVmZjQ4
NDA2ZTQ4NWJiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCkBAIC0yOSw5ICsyOSw5IEBACiAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiAjaWYgVVNFKENGKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKaW5kZXggY2Vk
ZWQ3MzBmNDU3ZmFkZjBlODIyMDQ4MmUyZGRlNzI4NzJmOGQ0Ni4uYWZhOGUxMmQ4MWJkODViZDk2
M2Y4ZGNiMmM4YmVjNTQ3OTc0YzAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgotI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IGIzZGRkOGMzZGY4MDc4ZGRjYzc3YWI2
M2Q0NDIxOGE2MjZiY2E0MTguLjZkODhjODhkZDRhYTZkMmQwYWMzNGQzMTRhZjZkZjJiYWUyN2Q1
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCkBAIC00MCw2ICs0MCwyMCBAQAogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK3N0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9y
Jik7Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+CitSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gVGlueUxSVUNhY2hlUG9saWN5PFdlYkNvcmU6OkNvbG9yLCBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7
CisgICAgcmV0dXJuIGFkb3B0Q0YoV2ViQ29yZTo6bGVha0NHQ29sb3IoY29sb3IpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JN
KElPUykKIHN0YXRpYyBDR0NvbG9yUmVmIGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNlUkdCQShDR0Nv
bG9yUmVmIHNvdXJjZUNvbG9yKQpAQCAtMTA4LDEyICsxMjIsNiBAQCBzdGF0aWMgQ0dDb2xvclJl
ZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgcmV0dXJuIENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50cyk7CiB9CiAKLXRlbXBsYXRlPD4KLVJl
dGFpblB0cjxDR0NvbG9yUmVmPiBUaW55TFJVQ2FjaGVQb2xpY3k8Q29sb3IsIFJldGFpblB0cjxD
R0NvbG9yUmVmPj46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRDRihsZWFrQ0dDb2xvcihjb2xvcikpOwotfQotCiBDR0NvbG9yUmVmIGNh
Y2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIHN3aXRjaCAoY29sb3Iucmdi
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZmYwYmY4MTk3NTA4MTdjYmUy
YzdiZmNiZWI4MWZiNDFhOTFhN2E4My4uMTc3Nzk5ZWFhYzdjMWY3YjIyNmQ4ZWQwZTRhY2QwNzAw
NGI4OTg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGV4dC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0UnVuLmgi
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVy
YXRvclBvb2xJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZjUwYTVkNjU4
NjVhMzQxYmZlY2YzN2NiNWNiZGM5NjZmMzgxODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBMaW5lQnJl
YWtJdGVyYXRvclBvb2xJQ1VfaAotI2RlZmluZSBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1VfaAot
Ci0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmgiCi0jaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+Ci0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTGluZUJyZWFrSXRlcmF0
b3JQb29sIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMaW5lQnJlYWtJdGVyYXRvclBvb2wp
OwotcHVibGljOgotICAgIExpbmVCcmVha0l0ZXJhdG9yUG9vbCgpIHsgfQotCi0gICAgc3RhdGlj
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCYgc2hhcmVkUG9vbCgpCi0gICAgewotICAgICAgICBzdGF0
aWMgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+KiBwb29sID0gbmV3
IFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPjsKLSAgICAgICAgcmV0
dXJuICoqcG9vbDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RyaW5nIG1ha2VMb2NhbGVXaXRoQnJl
YWtLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1v
ZGUgbW9kZSkKLSAgICB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgbG9jYWxlV2l0aEtleXdvcmQ7
Ci0gICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZChsb2NhbGUpOwotICAgICAgICBsb2Nh
bGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJAYnJlYWs9Iik7Ci0gICAgICAgIHN3aXRjaCAo
bW9kZSkgewotICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0OgotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgotICAgICAgICAgICAgbG9jYWxl
V2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgibG9vc2UiKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0Tm9ybWFsOgotICAgICAgICAg
ICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgibm9ybWFsIik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoK
LSAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoInN0cmljdCIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGxvY2FsZVdpdGhL
ZXl3b3JkLnRvU3RyaW5nKCk7Ci0gICAgfQotCi0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIHRha2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBi
b29sIGlzQ0pLKQotICAgIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIGxvY2FsZVdpdGhPcHRpb25h
bEJyZWFrS2V5d29yZDsKLSAgICAgICAgaWYgKG1vZGUgPT0gTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTQpCi0gICAgICAgICAgICBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQgPSBsb2Nh
bGU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5
d29yZCA9IG1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKGxvY2FsZSwgbW9kZSk7Ci0KLSAgICAg
ICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gMDsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3Bvb2wuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChtX3Bvb2xb
aV0uZmlyc3QgPT0gbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkKSB7Ci0gICAgICAgICAg
ICAgICAgaXRlcmF0b3IgPSBtX3Bvb2xbaV0uc2Vjb25kOwotICAgICAgICAgICAgICAgIG1fcG9v
bC5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIWl0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBpdGVyYXRvciA9
IG9wZW5MaW5lQnJlYWtJdGVyYXRvcihsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQsIG1v
ZGUsIGlzQ0pLKTsKLSAgICAgICAgICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQoIW1fdmVuZGVkSXRlcmF0b3Jz
LmNvbnRhaW5zKGl0ZXJhdG9yKSk7Ci0gICAgICAgIG1fdmVuZGVkSXRlcmF0b3JzLnNldChpdGVy
YXRvciwgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkKTsKLSAgICAgICAgcmV0dXJuIGl0
ZXJhdG9yOwotICAgIH0KLQotICAgIHZvaWQgcHV0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
cikKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9BUkcoaXRlcmF0b3IsIG1fdmVuZGVkSXRlcmF0b3Jz
LmNvbnRhaW5zKGl0ZXJhdG9yKSk7Ci0KLSAgICAgICAgaWYgKG1fcG9vbC5zaXplKCkgPT0gY2Fw
YWNpdHkpIHsKLSAgICAgICAgICAgIGNsb3NlTGluZUJyZWFrSXRlcmF0b3IobV9wb29sWzBdLnNl
Y29uZCk7Ci0gICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKDApOwotICAgICAgICB9Ci0KLSAgICAg
ICAgbV9wb29sLmFwcGVuZChFbnRyeShtX3ZlbmRlZEl0ZXJhdG9ycy50YWtlKGl0ZXJhdG9yKSwg
aXRlcmF0b3IpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBj
YXBhY2l0eSA9IDQ7Ci0KLSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxBdG9taWNTdHJpbmcsIFRleHRC
cmVha0l0ZXJhdG9yKj4gRW50cnk7Ci0gICAgdHlwZWRlZiBWZWN0b3I8RW50cnksIGNhcGFjaXR5
PiBQb29sOwotICAgIFBvb2wgbV9wb29sOwotICAgIEhhc2hNYXA8VGV4dEJyZWFrSXRlcmF0b3Iq
LCBBdG9taWNTdHJpbmc+IG1fdmVuZGVkSXRlcmF0b3JzOwotCi0gICAgZnJpZW5kIFdURjo6VGhy
ZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQb29sPjo6b3BlcmF0b3IgTGluZUJyZWFrSXRl
cmF0b3JQb29sKigpOwotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Qm91bmRhcmllcy5jcHAKaW5kZXggZGZjZjlhMzQ2MmQ1YjFiMjg0ZDE5
NTk4YWZlMDMyYjNlNGNkY2UxYi4uNDdkMjQ0NzVhYzA5ODk0ZTAzODg1MWE0OGJiOWMwNWVkZGVm
MzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRh
cmllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmll
cy5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJU
ZXh0Qm91bmRhcmllcy5oIgogCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMGE2NmNlMGI3ZWQxNDdhZTdjNmIzZDdiOTcwOTgyM2U3ZmUzMjVmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsOTI5ICswLDAgQEAKLS8qCi0gKiAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5
IFRvcmNoIE1vYmlsZSwgSW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3IuaCIKLQotI2luY2x1ZGUgIkxpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIgot
I2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJMYXRpbjEuaCIKLSNpbmNsdWRlICJVVGV4dFByb3ZpZGVy
VVRGMTYuaCIKLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KLQotLy8gRklYTUU6IFRoaXMgbmVlZHMgYSBi
ZXR0ZXIgbmFtZQotI2RlZmluZSBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQgKFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDExMDApKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEl0ZXJhdG9yIGluaXRpYWxp
emF0aW9uCi0KLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yKFVC
cmVha0l0ZXJhdG9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsb2NhbGUgPSBjdXJyZW50VGV4dEJy
ZWFrTG9jYWxlSUQoKSkKLXsKLSAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxU
ZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3Blbih0eXBlLCBsb2NhbGUsIDAsIDAsICZvcGVuU3Rh
dHVzKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1cyksICJJ
Q1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjogJXMgKCVkKSIsIHVfZXJyb3JOYW1l
KG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKLSAgICByZXR1cm4gaXRlcmF0b3I7Ci19Ci0KLSNp
ZiAhUExBVEZPUk0oSU9TKQotCi1zdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJ
dGVyYXRvcldpdGhSdWxlcyhjb25zdCBjaGFyKiBicmVha1J1bGVzKQotewotICAgIFVQYXJzZUVy
cm9yIHBhcnNlU3RhdHVzOwotICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4oYnJlYWtSdWxlcyk7Ci0gICAgYXV0byB1
cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihicmVha1J1bGVzKSwgbGVuZ3RoKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAg
ICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSByZWludGVycHJldF9jYXN0PFRleHRCcmVh
a0l0ZXJhdG9yKj4odWJya19vcGVuUnVsZXModXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLCBsZW5ndGgs
IDAsIDAsICZwYXJzZVN0YXR1cywgJm9wZW5TdGF0dXMpKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0
ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOwot
ICAgIHJldHVybiBpdGVyYXRvcjsKLX0KLQotI2VuZGlmCi0KLQotLy8gSXRlcmF0b3IgdGV4dCBz
ZXR0aW5nCi0KLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc2V0VGV4dEZvckl0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgaWYg
KHN0cmluZy5pczhCaXQoKSkgewotICAgICAgICBVVGV4dFdpdGhCdWZmZXIgdGV4dExvY2FsOwot
ICAgICAgICB0ZXh0TG9jYWwudGV4dCA9IFVURVhUX0lOSVRJQUxJWkVSOwotICAgICAgICB0ZXh0
TG9jYWwudGV4dC5leHRyYVNpemUgPSBzaXplb2YodGV4dExvY2FsLmJ1ZmZlcik7Ci0gICAgICAg
IHRleHRMb2NhbC50ZXh0LnBFeHRyYSA9IHRleHRMb2NhbC5idWZmZXI7Ci0KLSAgICAgICAgVUVy
cm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVVGV4dCogdGV4dCA9
IG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVyKCZ0ZXh0TG9jYWwsIHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCksICZvcGVuU3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShv
cGVuU3RhdHVzKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJ1VGV4dE9wZW5MYXRpbjEgZmFp
bGVkIHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVf
WkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwotICAgICAgICBp
ZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoInVi
cmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7Ci0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIHV0ZXh0X2Nsb3Nl
KHRleHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5s
ZW5ndGgoKSwgJnNldFRleHRTdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRT
dGF0dXMpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJu
ICZpdGVyYXRvcjsKLX0KLQotc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzZXRDb250ZXh0QXdh
cmVUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJpbmdWaWV3
IHN0cmluZywgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKQotewotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKLSAgICAgICAgVVRleHRXaXRo
QnVmZmVyIHRleHRMb2NhbDsKLSAgICAgICAgdGV4dExvY2FsLnRleHQgPSBVVEVYVF9JTklUSUFM
SVpFUjsKLSAgICAgICAgdGV4dExvY2FsLnRleHQuZXh0cmFTaXplID0gc2l6ZW9mKHRleHRMb2Nh
bC5idWZmZXIpOwotICAgICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0cmEgPSB0ZXh0TG9jYWwuYnVm
ZmVyOwotCi0gICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAg
ICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcigm
dGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwcmlvckNv
bnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOwotICAgICAgICBpZiAoVV9G
QUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIm9wZW5MYXRpbjFD
b250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0
dXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBV
RXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0
VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQs
ICZzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkg
ewotICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1
cyAlZCIsIHNldFRleHRTdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgIH0KLQotICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBVVGV4dCB0ZXh0TG9jYWwgPSBVVEVYVF9JTklUSUFMSVpFUjsKLQotICAgICAgICBVRXJyb3JD
b2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVUZXh0KiB0ZXh0ID0gb3Bl
blVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgsICZvcGVuU3RhdHVzKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewot
ICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVy
IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOwotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgICAgIHVicmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJ
dGVyYXRvcio+KCZpdGVyYXRvciksIHRleHQsICZzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgaWYg
KFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJr
X3NldFVUZXh0IGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOwotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICB1dGV4dF9jbG9zZSh0
ZXh0KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gJml0ZXJhdG9yOwotfQotCi0KLS8vIFN0YXRpYyBp
dGVyYXRvcnMKLQotVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljV29yZEJy
ZWFrSXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19XT1JEKTsKLSAgICBpZiAoIXN0
YXRpY1dvcmRCcmVha0l0ZXJhdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yLCBzdHJpbmcp
OwotfQotCi1UZXh0QnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1Zp
ZXcgc3RyaW5nKQotewotICAgIHN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogc3RhdGljU2VudGVu
Y2VCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfU0VOVEVOQ0UpOwotICAg
IGlmICghc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY1NlbnRlbmNlQnJlYWtJ
dGVyYXRvciwgc3RyaW5nKTsKLX0KLQotVGV4dEJyZWFrSXRlcmF0b3IqIGN1cnNvck1vdmVtZW50
SXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICAv
LyBUaGlzIHJ1bGUgc2V0IGlzIGJhc2VkIG9uIGNoYXJhY3Rlci1icmVhayBpdGVyYXRvciBydWxl
cyBvZiBJQ1UgNC4wCi0gICAgLy8gPGh0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9z
L2ljdS9pY3UvdGFncy9yZWxlYXNlLTQtMC9zb3VyY2UvZGF0YS9icmtpdHIvY2hhci50eHQ+Lgot
ICAgIC8vIFRoZSBtYWpvciBkaWZmZXJlbmNlcyBmcm9tIHRoZSBvcmlnaW5hbCBvbmVzIGFyZSBs
aXN0ZWQgYmVsb3c6Ci0gICAgLy8gKiBSZXBsYWNlZCAnW1xwe0dyYXBoZW1lX0NsdXN0ZXJfQnJl
YWsgPSBTcGFjaW5nTWFya31dJyB3aXRoICdbXHB7R2VuZXJhbF9DYXRlZ29yeSA9IFNwYWNpbmcg
TWFya30gLSAkRXh0ZW5kXScgZm9yIElDVSAzLjggb3IgZWFybGllcjsKLSAgICAvLyAqIFJlbW92
ZWQgcnVsZXMgdGhhdCBwcmV2ZW50IGEgY3Vyc29yIGZyb20gbW92aW5nIGFmdGVyIHByZXBlbmQg
Y2hhcmFjdGVycyAoQnVnIDI0MzQyKTsKLSAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVu
dCBhIGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciB2aXJhbWEgc2lnbnMgb2YgSW5kaWMgbGFuZ3Vh
Z2VzIGV4Y2VwdCBUYW1pbCAoQnVnIDE1NzkwKSwgYW5kOwotICAgIC8vICogQWRkZWQgcnVsZXMg
dGhhdCBwcmV2ZW50IGEgY3Vyc29yIGZyb20gbW92aW5nIGJlZm9yZSBKYXBhbmVzZSBoYWxmLXdp
ZHRoIGthdGFrYXJhIHZvaWNlZCBtYXJrcy4KLSAgICAvLyAqIEFkZGVkIHJ1bGVzIGZvciByZWdp
b25hbCBpbmRpY2F0b3Igc3ltYm9scy4KLSAgICBzdGF0aWMgY29uc3QgY2hhcioga1J1bGVzID0K
LSAgICAgICAgIiRDUiAgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ1J9XTsi
Ci0gICAgICAgICIkTEYgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExGfV07
IgotICAgICAgICAiJENvbnRyb2wgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBDb250
cm9sfV07IgotICAgICAgICAiJFZvaWNlTWFya3MgPSBbXFx1RkY5RVxcdUZGOUZdOyIgIC8vIEph
cGFuZXNlIGhhbGYtd2lkdGgga2F0YWthbmEgdm9pY2VkIG1hcmtzCi0gICAgICAgICIkRXh0ZW5k
ICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IEV4dGVuZH0gJFZvaWNlTWFya3MgLSBb
XFx1MEUzMCBcXHUwRTMyIFxcdTBFNDUgXFx1MEVCMCBcXHUwRUIyXV07IgotICAgICAgICAiJFNw
YWNpbmdNYXJrID0gW1tcXHB7R2VuZXJhbF9DYXRlZ29yeSA9IFNwYWNpbmcgTWFya31dIC0gJEV4
dGVuZF07IgotICAgICAgICAiJEwgICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsg
PSBMfV07IgotICAgICAgICAiJFYgICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsg
PSBWfV07IgotICAgICAgICAiJFQgICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsg
PSBUfV07IgotICAgICAgICAiJExWICAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsg
PSBMVn1dOyIKLSAgICAgICAgIiRMVlQgICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFr
ID0gTFZUfV07IgotICAgICAgICAiJEhpbjAgICAgPSBbXFx1MDkwNS1cXHUwOTM5XTsiICAgIC8v
IERldmFuYWdhcmkgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkSGluViAgICA9IFxcdTA5NEQ7
IiAgICAgICAgICAgICAgLy8gRGV2YW5hZ2FyaSBTaWduIFZpcmFtYQotICAgICAgICAiJEhpbjEg
ICAgPSBbXFx1MDkxNS1cXHUwOTM5XTsiICAgIC8vIERldmFuYWdhcmkgTGV0dGVyIEthLC4uLixI
YQotICAgICAgICAiJEJlbjAgICAgPSBbXFx1MDk4NS1cXHUwOUI5XTsiICAgIC8vIEJlbmdhbGkg
TGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkQmVuViAgICA9IFxcdTA5Q0Q7IiAgICAgICAgICAg
ICAgLy8gQmVuZ2FsaSBTaWduIFZpcmFtYQotICAgICAgICAiJEJlbjEgICAgPSBbXFx1MDk5NS1c
XHUwOUI5XTsiICAgIC8vIEJlbmdhbGkgTGV0dGVyIEthLC4uLixIYQotICAgICAgICAiJFBhbjAg
ICAgPSBbXFx1MEEwNS1cXHUwQTM5XTsiICAgIC8vIEd1cm11a2hpIExldHRlciBBLC4uLixIYQot
ICAgICAgICAiJFBhblYgICAgPSBcXHUwQTREOyIgICAgICAgICAgICAgIC8vIEd1cm11a2hpIFNp
Z24gVmlyYW1hCi0gICAgICAgICIkUGFuMSAgICA9IFtcXHUwQTE1LVxcdTBBMzldOyIgICAgLy8g
R3VybXVraGkgTGV0dGVyIEthLC4uLixIYQotICAgICAgICAiJEd1ajAgICAgPSBbXFx1MEE4NS1c
XHUwQUI5XTsiICAgIC8vIEd1amFyYXRpIExldHRlciBBLC4uLixIYQotICAgICAgICAiJEd1alYg
ICAgPSBcXHUwQUNEOyIgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFNpZ24gVmlyYW1hCi0gICAg
ICAgICIkR3VqMSAgICA9IFtcXHUwQTk1LVxcdTBBQjldOyIgICAgLy8gR3VqYXJhdGkgTGV0dGVy
IEthLC4uLixIYQotICAgICAgICAiJE9yaTAgICAgPSBbXFx1MEIwNS1cXHUwQjM5XTsiICAgIC8v
IE9yaXlhIExldHRlciBBLC4uLixIYQotICAgICAgICAiJE9yaVYgICAgPSBcXHUwQjREOyIgICAg
ICAgICAgICAgIC8vIE9yaXlhIFNpZ24gVmlyYW1hCi0gICAgICAgICIkT3JpMSAgICA9IFtcXHUw
QjE1LVxcdTBCMzldOyIgICAgLy8gT3JpeWEgTGV0dGVyIEthLC4uLixIYQotICAgICAgICAiJFRl
bDAgICAgPSBbXFx1MEMwNS1cXHUwQzM5XTsiICAgIC8vIFRlbHVndSBMZXR0ZXIgQSwuLi4sSGEK
LSAgICAgICAgIiRUZWxWICAgID0gXFx1MEM0RDsiICAgICAgICAgICAgICAvLyBUZWx1Z3UgU2ln
biBWaXJhbWEKLSAgICAgICAgIiRUZWwxICAgID0gW1xcdTBDMTQtXFx1MEMzOV07IiAgICAvLyBU
ZWx1Z3UgTGV0dGVyIEthLC4uLixIYQotICAgICAgICAiJEthbjAgICAgPSBbXFx1MEM4NS1cXHUw
Q0I5XTsiICAgIC8vIEthbm5hZGEgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkS2FuViAgICA9
IFxcdTBDQ0Q7IiAgICAgICAgICAgICAgLy8gS2FubmFkYSBTaWduIFZpcmFtYQotICAgICAgICAi
JEthbjEgICAgPSBbXFx1MEM5NS1cXHUwQ0I5XTsiICAgIC8vIEthbm5hZGEgTGV0dGVyIEEsLi4u
LEhhCi0gICAgICAgICIkTWFsMCAgICA9IFtcXHUwRDA1LVxcdTBEMzldOyIgICAgLy8gTWFsYXlh
bGFtIExldHRlciBBLC4uLixIYQotICAgICAgICAiJE1hbFYgICAgPSBcXHUwRDREOyIgICAgICAg
ICAgICAgIC8vIE1hbGF5YWxhbSBTaWduIFZpcmFtYQotICAgICAgICAiJE1hbDEgICAgPSBbXFx1
MEQxNS1cXHUwRDM5XTsiICAgIC8vIE1hbGF5YWxhbSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAg
IiRSSSAgICAgID0gW1xcVTAwMDFGMUU2LVxcVTAwMDFGMUZGXTsiIC8vIEVtb2ppIHJlZ2lvbmFs
IGluZGljYXRvcnMKLSAgICAgICAgIiRaV0ogICAgID0gXFx1MjAwRDsiICAgICAgICAgICAgICAg
Ly8gWmVybyB3aWR0aCBqb2luZXIKLSAgICAgICAgIiRFbW9qaVZhciA9IFtcXHVGRTBGXTsiICAg
ICAgICAgICAgLy8gRW1vamktc3R5bGUgdmFyaWF0aW9uIHNlbGVjdG9yCi0jaWYgQURESVRJT05B
TF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAw
MUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIg
Ly8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCi0gICAgICAgICIkRW1v
amlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBcXHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYzODUg
XFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0
NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAw
MUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxV
MDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUg
XFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAwMUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2
NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAw
MUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThdIDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6
cGF0cmljayBtb2RpZmllcnMKLSNlbHNlCi0gICAgICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3
NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEJdOyIgLy8gRW1vamkgdGhhdCBw
YXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCi0gICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xc
dTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0
IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFG
NDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAw
MDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxc
VTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3
IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFG
NkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZp
ZXJzCi0jZW5kaWYKLSAgICAgICAgIiRFbW9qaU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYz
RkZdOyIgLy8gRml0enBhdHJpY2sgbW9kaWZpZXJzCi0gICAgICAgICIhIWNoYWluOyIKLSNpZiBB
RERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAgICAgIiEhUklOb0NoYWluOyIKLSNlbmRpZgot
ICAgICAgICAiISFmb3J3YXJkOyIKLSAgICAgICAgIiRDUiAkTEY7IgotICAgICAgICAiJEwgKCRM
IHwgJFYgfCAkTFYgfCAkTFZUKTsiCi0gICAgICAgICIoJExWIHwgJFYpICgkViB8ICRUKTsiCi0g
ICAgICAgICIoJExWVCB8ICRUKSAkVDsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0g
ICAgICAgICIkUkkgJFJJICRFeHRlbmQqIC8gJFJJOyIKLSAgICAgICAgIiRSSSAkUkkgJEV4dGVu
ZCo7IgotICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAkRXh0ZW5kOyIKLSAgICAgICAgIlte
JENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJrOyIKLSNlbHNlCi0gICAgICAgICJbXiRDb250
cm9sICRDUiAkTEZdICRFeHRlbmQ7IgotICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3Bh
Y2luZ01hcms7IgotICAgICAgICAiJFJJICRSSSAvICRSSTsiCi0gICAgICAgICIkUkkgJFJJOyIK
LSNlbmRpZgotICAgICAgICAiJEhpbjAgJEhpblYgJEhpbjE7IiAgICAgICAgICAgICAgIC8vIERl
dmFuYWdhcmkgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJEJlbjAgJEJlblYgJEJlbjE7IiAg
ICAgICAgICAgICAgIC8vIEJlbmdhbGkgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJFBhbjAg
JFBhblYgJFBhbjE7IiAgICAgICAgICAgICAgIC8vIEd1cm11a2hpIFZpcmFtYSAoZm9yd2FyZCkK
LSAgICAgICAgIiRHdWowICRHdWpWICRHdWoxOyIgICAgICAgICAgICAgICAvLyBHdWphcmF0aSBW
aXJhbWEgKGZvcndhcmQpCi0gICAgICAgICIkT3JpMCAkT3JpViAkT3JpMTsiICAgICAgICAgICAg
ICAgLy8gT3JpeWEgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJFRlbDAgJFRlbFYgJFRlbDE7
IiAgICAgICAgICAgICAgIC8vIFRlbHVndSBWaXJhbWEgKGZvcndhcmQpCi0gICAgICAgICIkS2Fu
MCAkS2FuViAkS2FuMTsiICAgICAgICAgICAgICAgLy8gS2FubmFkYSBWaXJhbWEgKGZvcndhcmQp
Ci0gICAgICAgICIkTWFsMCAkTWFsViAkTWFsMTsiICAgICAgICAgICAgICAgLy8gTWFsYXlhbGFt
IFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRaV0ogJEVtb2ppRm9yU2VxczsiICAgICAgICAg
ICAgICAvLyBEb24ndCBicmVhayBpbiBlbW9qaSBaV0ogc2VxdWVuY2VzCi0gICAgICAgICIkRW1v
amlGb3JNb2RzICRFbW9qaVZhcj8gJEVtb2ppTW9kczsiIC8vIERvbid0IGJyZWFrIGJldHdlZW4g
cmVsZXZhbnQgZW1vamkgKHBvc3NpYmx5IHdpdGggdmFyaWF0aW9uIHNlbGVjdG9yKSBhbmQgRml0
enBhdHJpY2sgbW9kaWZpZXIKLSAgICAgICAgIiEhcmV2ZXJzZTsiCi0gICAgICAgICIkTEYgJENS
OyIKLSAgICAgICAgIigkTCB8ICRWIHwgJExWIHwgJExWVCkgJEw7IgotICAgICAgICAiKCRWIHwg
JFQpICgkTFYgfCAkVik7IgotICAgICAgICAiJFQgKCRMVlQgfCAkVCk7IgotI2lmIEFERElUSU9O
QUxfRU1PSklfU1VQUE9SVAotICAgICAgICAiJEV4dGVuZCogJFJJICRSSSAvICRFeHRlbmQqICRS
SSAkUkk7IgotICAgICAgICAiJEV4dGVuZCogJFJJICRSSTsiCi0gICAgICAgICIkRXh0ZW5kICAg
ICAgW14kQ29udHJvbCAkQ1IgJExGXTsiCi0gICAgICAgICIkU3BhY2luZ01hcmsgW14kQ29udHJv
bCAkQ1IgJExGXTsiCi0jZWxzZQotICAgICAgICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENS
ICRMRl07IgotICAgICAgICAiJFNwYWNpbmdNYXJrIFteJENvbnRyb2wgJENSICRMRl07IgotICAg
ICAgICAiJFJJICRSSSAvICRSSSAkUkk7IgotICAgICAgICAiJFJJICRSSTsiCi0jZW5kaWYKLSAg
ICAgICAgIiRIaW4xICRIaW5WICRIaW4wOyIgICAgICAgICAgICAgICAvLyBEZXZhbmFnYXJpIFZp
cmFtYSAoYmFja3dhcmQpCi0gICAgICAgICIkQmVuMSAkQmVuViAkQmVuMDsiICAgICAgICAgICAg
ICAgLy8gQmVuZ2FsaSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJFBhbjEgJFBhblYgJFBh
bjA7IiAgICAgICAgICAgICAgIC8vIEd1cm11a2hpIFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAg
ICIkR3VqMSAkR3VqViAkR3VqMDsiICAgICAgICAgICAgICAgLy8gR3VqYXJhdGkgVmlyYW1hIChi
YWNrd2FyZCkKLSAgICAgICAgIiRPcmkxICRPcmlWICRPcmkwOyIgICAgICAgICAgICAgICAvLyBH
dWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJFRlbDEgJFRlbFYgJFRlbDA7IiAg
ICAgICAgICAgICAgIC8vIFRlbHVndSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJEthbjEg
JEthblYgJEthbjA7IiAgICAgICAgICAgICAgIC8vIEthbm5hZGEgVmlyYW1hIChiYWNrd2FyZCkK
LSAgICAgICAgIiRNYWwxICRNYWxWICRNYWwwOyIgICAgICAgICAgICAgICAvLyBNYWxheWFsYW0g
VmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRFbW9qaUZvclNlcXMgJFpXSjsiICAgICAgICAg
ICAgICAvLyBEb24ndCBicmVhayBpbiBlbW9qaSBaV0ogc2VxdWVuY2VzCi0gICAgICAgICIkRW1v
amlNb2RzICRFbW9qaVZhcj8gJEVtb2ppRm9yTW9kczsiIC8vIERvbid0IGJyZWFrIGJldHdlZW4g
cmVsZXZhbnQgZW1vamkgKHBvc3NpYmx5IHdpdGggdmFyaWF0aW9uIHNlbGVjdG9yKSBhbmQgRml0
enBhdHJpY2sgbW9kaWZpZXIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAgICAg
IiEhc2FmZV9yZXZlcnNlOyIKLSAgICAgICAgIiRSSSAkUkkrOyIKLSAgICAgICAgIlskRW1vamlW
YXIgJEVtb2ppTW9kc10rICRFbW9qaUZvck1vZHM7IgotICAgICAgICAiISFzYWZlX2ZvcndhcmQ7
IgotICAgICAgICAiJFJJICRSSSs7IgotICAgICAgICAiJEVtb2ppRm9yTW9kcyBbJEVtb2ppVmFy
ICRFbW9qaU1vZHNdKzsiOwotI2Vsc2UKLSAgICAgICAgIlskRW1vamlWYXIgJEVtb2ppTW9kc10r
ICRFbW9qaUZvck1vZHM7IgotICAgICAgICAiJEVtb2ppRm9yTW9kcyBbJEVtb2ppVmFyICRFbW9q
aU1vZHNdKzsiCi0gICAgICAgICIhIXNhZmVfcmV2ZXJzZTsiCi0gICAgICAgICIhIXNhZmVfZm9y
d2FyZDsiOwotI2VuZGlmCi0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJz
b3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGtSdWxlcyk7
Ci0jZWxzZSAvLyBQTEFURk9STShJT1MpCi0gICAgLy8gVXNlIHRoZSBzcGVjaWFsIFRoYWkgY2hh
cmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGZvciBhbGwgbG9jYWxlcwotICAgIHN0YXRpYyBUZXh0QnJl
YWtJdGVyYXRvciogc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvciA9IGluaXRpYWxpemVJdGVy
YXRvcihVQlJLX0NIQVJBQ1RFUiwgInRoIik7Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLQot
ICAgIGlmICghc3RhdGljQ3Vyc29yTW92ZW1lbnRJdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9yKCpzdGF0aWNDdXJzb3JNb3Zl
bWVudEl0ZXJhdG9yLCBzdHJpbmcpOwotfQotCi1UZXh0QnJlYWtJdGVyYXRvciogYWNxdWlyZUxp
bmVCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKLXsKLSAgICBUZXh0
QnJlYWtJdGVyYXRvciogaXRlcmF0b3IgPSBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBv
b2woKS50YWtlKGxvY2FsZSwgbW9kZSwgaXNDSkspOwotICAgIGlmICghaXRlcmF0b3IpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHNldENvbnRleHRBd2FyZVRleHRGb3JJ
dGVyYXRvcigqaXRlcmF0b3IsIHN0cmluZywgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgpOwotfQotCi12b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IpCi17Ci0gICAgQVNTRVJUX0FSRyhpdGVyYXRvciwgaXRlcmF0b3IpOwotCi0g
ICAgTGluZUJyZWFrSXRlcmF0b3JQb29sOjpzaGFyZWRQb29sKCkucHV0KGl0ZXJhdG9yKTsKLX0K
LQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0UHJvbG9ndWUgPQotICAgICIhIWNoYWluOyIKLSAg
ICAiISFMQkNNTm9DaGFpbjsiCi0gICAgIiEhbG9va0FoZWFkSGFyZEJyZWFrOyI7Ci0KLXN0YXRp
YyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQmVmb3JlID0KLSAgICAvLyBleHBsaWNpdGx5
IGVudW1lcmF0ZSAkQ0ogc2luY2UgSUNVIHZlcnNpb25zIHByaW9yIHRvIDQ5IGRvbid0IHN1cHBv
cnQgOkxpbmVCcmVhaz1Db25kaXRpb25hbF9KYXBhbmVzZV9TdGFydGVyOgotICAgICIkQ0ogPSBb
IgotI2lmIChVX0lDVV9WRVJTSU9OX01BSk9SX05VTSA+PSA0KSAmJiAoVV9JQ1VfVkVSU0lPTl9N
SU5PUl9OVU0gPj0gOSkKLSAgICAiOkxpbmVCcmVhaz1Db25kaXRpb25hbF9KYXBhbmVzZV9TdGFy
dGVyOiIKLSNlbHNlCi0gICAgIlxcdTMwNDFcXHUzMDQzXFx1MzA0NVxcdTMwNDdcXHUzMDQ5XFx1
MzA2M1xcdTMwODNcXHUzMDg1XFx1MzA4N1xcdTMwOEVcXHUzMDk1XFx1MzA5NlxcdTMwQTFcXHUz
MEEzXFx1MzBBNVxcdTMwQTciCi0gICAgIlxcdTMwQTlcXHUzMEMzXFx1MzBFM1xcdTMwRTVcXHUz
MEU3XFx1MzBFRVxcdTMwRjVcXHUzMEY2XFx1MzBGQyIKLSAgICAiXFx1MzFGMFxcdTMxRjFcXHUz
MUYyXFx1MzFGM1xcdTMxRjRcXHUzMUY1XFx1MzFGNlxcdTMxRjdcXHUzMUY4XFx1MzFGOVxcdTMx
RkFcXHUzMUZCXFx1MzFGQ1xcdTMxRkRcXHUzMUZFXFx1MzFGRiIKLSAgICAiXFx1RkY2N1xcdUZG
NjhcXHVGRjY5XFx1RkY2QVxcdUZGNkJcXHVGRjZDXFx1RkY2RFxcdUZGNkVcXHVGRjZGXFx1RkY3
MCIKLSNlbmRpZgotICAgICJdOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tTG9vc2VDSksgPQotICAgICIkQkFfU1VCID0gW1xcdTIwMTBcXHUyMDEzXTsiCi0g
ICAgIiRFWF9TVUIgPSBbXFx1MDAyMVxcdTAwM0ZcXHVGRjAxXFx1RkYxRl07IgotICAgICIkSURf
U1VCID0gJyc7IgotICAgICIkSU5fU1VCID0gW1xcdTIwMjVcXHUyMDI2XTsiCi0gICAgIiRJU19T
VUIgPSBbXFx1MDAzQVxcdTAwM0JdOyIKLSAgICAiJE5TX1NVQiA9IFtcXHUyMDNDXFx1MjA0N1xc
dTIwNDhcXHUyMDQ5XFx1MzAwNVxcdTMwMUNcXHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUzMEEwXFx1
MzBGQlxcdTMwRkRcXHUzMEZFXFx1RkYxQVxcdUZGMUJcXHVGRjY1XTsiCi0gICAgIiRQT19TVUIg
PSBbXFx1MDAyNVxcdTAwQTJcXHUwMEIwXFx1MjAzMFxcdTIwMzJcXHUyMDMzXFx1MjEwM1xcdUZG
MDVcXHVGRkUwXTsiCi0gICAgIiRQUl9TVUIgPSBbXFx1MDAyNFxcdTAwQTNcXHUwMEE1XFx1MjBB
Q1xcdTIxMTZcXHVGRjA0XFx1RkZFMVxcdUZGRTVdOyIKLSAgICAiJElEX0FERCA9IFskQ0ogJEJB
X1NVQiAkRVhfU1VCICRJTl9TVUIgJElTX1NVQiAkTlNfU1VCICRQT19TVUIgJFBSX1NVQl07Igot
ICAgICIkTlNfQUREID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVu
dHNDdXN0b21Mb29zZU5vbkNKSyA9Ci0gICAgIiRCQV9TVUIgPSAnJzsiCi0gICAgIiRFWF9TVUIg
PSAnJzsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSBbXFx1MjAyNVxcdTIw
MjZdOyIKLSAgICAiJElTX1NVQiA9ICcnOyIKLSAgICAiJE5TX1NVQiA9IFtcXHUzMDA1XFx1MzAz
QlxcdTMwOURcXHUzMDlFXFx1MzBGRFxcdTMwRkVdOyIKLSAgICAiJFBPX1NVQiA9ICcnOyIKLSAg
ICAiJFBSX1NVQiA9ICcnOyIKLSAgICAiJElEX0FERCA9IFskQ0ogJElOX1NVQiAkTlNfU1VCXTsi
Ci0gICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbU5vcm1hbENKSyA9Ci0gICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNdOyIK
LSAgICAiJEVYX1NVQiA9ICcnOyIKLSAgICAiJElOX1NVQiA9ICcnOyIKLSAgICAiJElEX1NVQiA9
ICcnOyIKLSAgICAiJElTX1NVQiA9ICcnOyIKLSAgICAiJE5TX1NVQiA9IFtcXHUzMDFDXFx1MzBB
MF07IgotICAgICIkUE9fU1VCID0gJyc7IgotICAgICIkUFJfU1VCID0gJyc7IgotICAgICIkSURf
QUREID0gWyRDSiAkQkFfU1VCICROU19TVUJdOyIKLSAgICAiJE5TX0FERCA9ICcnOyI7Ci0KLXN0
YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pLID0KLSAg
ICAiJEJBX1NVQiA9ICcnOyIKLSAgICAiJEVYX1NVQiA9ICcnOyIKLSAgICAiJElEX1NVQiA9ICcn
OyIKLSAgICAiJElOX1NVQiA9ICcnOyIKLSAgICAiJElTX1NVQiA9ICcnOyIKLSAgICAiJE5TX1NV
QiA9ICcnOyIKLSAgICAiJFBPX1NVQiA9ICcnOyIKLSAgICAiJFBSX1NVQiA9ICcnOyIKLSAgICAi
JElEX0FERCA9IFskQ0pdOyIKLSAgICAiJE5TX0FERCA9ICcnOyI7Ci0KLXN0YXRpYyBjb25zdCBj
aGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Q0pLID0KLSAgICAiJEJBX1NVQiA9ICcn
OyIKLSAgICAiJEVYX1NVQiA9ICcnOyIKLSAgICAiJElEX1NVQiA9ICcnOyIKLSAgICAiJElOX1NV
QiA9ICcnOyIKLSAgICAiJElTX1NVQiA9ICcnOyIKLSAgICAiJE5TX1NVQiA9ICcnOyIKLSAgICAi
JFBPX1NVQiA9ICcnOyIKLSAgICAiJFBSX1NVQiA9ICcnOyIKLSAgICAiJElEX0FERCA9ICcnOyIK
LSAgICAiJE5TX0FERCA9IFskQ0pdOyI7Ci0KLSNkZWZpbmUgdWF4MTRBc3NpZ25tZW50c0N1c3Rv
bVN0cmljdE5vbkNKSyAgICAgIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksKLSNkZWZp
bmUgdWF4MTRBc3NpZ25tZW50c0N1c3RvbURlZmF1bHRDSksgICAgICAgIHVheDE0QXNzaWdubWVu
dHNDdXN0b21Ob3JtYWxDSksKLSNkZWZpbmUgdWF4MTRBc3NpZ25tZW50c0N1c3RvbURlZmF1bHRO
b25DSksgICAgIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3ROb25DSksKLQotc3RhdGljIGNv
bnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNBZnRlciA9Ci0gICAgIiRBSSA9IFs6TGluZUJyZWFr
ID0gQW1iaWd1b3VzOl07IgotICAgICIkQUwgPSBbOkxpbmVCcmVhayA9IEFscGhhYmV0aWM6XTsi
Ci0gICAgIiRCQSA9IFtbOkxpbmVCcmVhayA9IEJyZWFrX0FmdGVyOl0gLSAkQkFfU1VCXTsiCi0g
ICAgIiRCQiA9IFs6TGluZUJyZWFrID0gQnJlYWtfQmVmb3JlOl07IgotICAgICIkQksgPSBbOkxp
bmVCcmVhayA9IE1hbmRhdG9yeV9CcmVhazpdOyIKLSAgICAiJEIyID0gWzpMaW5lQnJlYWsgPSBC
cmVha19Cb3RoOl07IgotICAgICIkQ0IgPSBbOkxpbmVCcmVhayA9IENvbnRpbmdlbnRfQnJlYWs6
XTsiCi0gICAgIiRDTCA9IFs6TGluZUJyZWFrID0gQ2xvc2VfUHVuY3R1YXRpb246XTsiCi0gICAg
IiRDTSA9IFs6TGluZUJyZWFrID0gQ29tYmluaW5nX01hcms6XTsiCi0gICAgIiRDUCA9IFs6TGlu
ZUJyZWFrID0gQ2xvc2VfUGFyZW50aGVzaXM6XTsiCi0gICAgIiRDUiA9IFs6TGluZUJyZWFrID0g
Q2FycmlhZ2VfUmV0dXJuOl07IgotICAgICIkRVggPSBbWzpMaW5lQnJlYWsgPSBFeGNsYW1hdGlv
bjpdIC0gJEVYX1NVQl07IgotICAgICIkR0wgPSBbOkxpbmVCcmVhayA9IEdsdWU6XTsiCi0jaWYg
KFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJTSU9OX01JTk9SX05V
TSA+PSA5KQotICAgICIkSEwgPSBbOkxpbmVCcmVhayA9IEhlYnJld19MZXR0ZXI6XTsiCi0jZWxz
ZQotICAgICIkSEwgPSBbWzpIZWJyZXc6XSAmIFs6TGV0dGVyOl1dOyIKLSNlbmRpZgotICAgICIk
SFkgPSBbOkxpbmVCcmVhayA9IEh5cGhlbjpdOyIKLSAgICAiJEgyID0gWzpMaW5lQnJlYWsgPSBI
MjpdOyIKLSAgICAiJEgzID0gWzpMaW5lQnJlYWsgPSBIMzpdOyIKLSAgICAiJElEID0gW1tbWzpM
aW5lQnJlYWsgPSBJZGVvZ3JhcGhpYzpdIC0gJENKXSAkSURfQUREXSAtICRJRF9TVUJdOyIKLSAg
ICAiJElOID0gW1s6TGluZUJyZWFrID0gSW5zZXBhcmFibGU6XSAtICRJTl9TVUJdOyIKLSAgICAi
JElTID0gW1s6TGluZUJyZWFrID0gSW5maXhfTnVtZXJpYzpdIC0gJElTX1NVQl07IgotICAgICIk
SkwgPSBbOkxpbmVCcmVhayA9IEpMOl07IgotICAgICIkSlYgPSBbOkxpbmVCcmVhayA9IEpWOl07
IgotICAgICIkSlQgPSBbOkxpbmVCcmVhayA9IEpUOl07IgotICAgICIkTEYgPSBbOkxpbmVCcmVh
ayA9IExpbmVfRmVlZDpdOyIKLSAgICAiJE5MID0gWzpMaW5lQnJlYWsgPSBOZXh0X0xpbmU6XTsi
Ci0gICAgIiROUyA9IFtbW1s6TGluZUJyZWFrID0gTm9uc3RhcnRlcjpdIC0gJENKXSAkTlNfQURE
XSAtICROU19TVUJdOyIKLSAgICAiJE5VID0gWzpMaW5lQnJlYWsgPSBOdW1lcmljOl07IgotICAg
ICIkT1AgPSBbOkxpbmVCcmVhayA9IE9wZW5fUHVuY3R1YXRpb246XTsiCi0gICAgIiRQTyA9IFtb
OkxpbmVCcmVhayA9IFBvc3RmaXhfTnVtZXJpYzpdIC0gJFBPX1NVQl07IgotICAgICIkUFIgPSBb
WzpMaW5lQnJlYWsgPSBQcmVmaXhfTnVtZXJpYzpdIC0gJFBSX1NVQl07IgotICAgICIkUVUgPSBb
OkxpbmVCcmVhayA9IFF1b3RhdGlvbjpdOyIKLSAgICAiJFJJID0gW1xcVTAwMDFGMUU2LVxcVTAw
MDFGMUZGXTsiCi0gICAgIiRTQSA9IFs6TGluZUJyZWFrID0gQ29tcGxleF9Db250ZXh0Ol07Igot
ICAgICIkU0cgPSBbOkxpbmVCcmVhayA9IFN1cnJvZ2F0ZTpdOyIKLSAgICAiJFNQID0gWzpMaW5l
QnJlYWsgPSBTcGFjZTpdOyIKLSAgICAiJFNZID0gWzpMaW5lQnJlYWsgPSBCcmVha19TeW1ib2xz
Ol07IgotICAgICIkV0ogPSBbOkxpbmVCcmVhayA9IFdvcmRfSm9pbmVyOl07IgotICAgICIkWFgg
PSBbOkxpbmVCcmVhayA9IFVua25vd246XTsiCi0gICAgIiRaVyA9IFs6TGluZUJyZWFrID0gWldT
cGFjZTpdOyIKLSAgICAiJFpXSiA9IFxcdTIwMEQ7IgotICAgICIkRW1vamlWYXIgPSBcXHVGRTBG
OyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAiJEVtb2ppRm9yU2VxcyA9IFtc
XHUyNzY0IFxcVTAwMDFGNDQxIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDhCIFxc
VTAwMDFGNUU4XTsiCi0gICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNkY5IFxcdTI3
MEEtXFx1MjcwRCBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjND
QSBcXFUwMDAxRjNDQiBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAx
RjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUw
MDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBc
XFUwMDAxRjRBQSBcXFUwMDAxRjU3NSBcXFUwMDAxRjU5MCBcXFUwMDAxRjU5NSBcXFUwMDAxRjU5
NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUwMDAx
RjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMCBcXFUwMDAxRjkxOF0gOyIg
Ly8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycwotI2Vsc2UKLSAgICAiJEVt
b2ppRm9yU2VxcyA9IFtcXHUyNzY0IFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDhC
XTsiCi0gICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNzBBLVxcdTI3MEMgXFxVMDAw
MUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQzcgXFxVMDAwMUYzQ0EgXFxV
MDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxVMDAwMUY0NjYt
XFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0MgXFxVMDAwMUY0
ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0QUEgXFxVMDAw
MUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxV
MDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzBdIDsiIC8vIEVtb2pp
IHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKLSNlbmRpZgotICAgICIkRW1vamlNb2Rz
ID0gW1xcVTAwMDFGM0ZCLVxcVTAwMDFGM0ZGXTsiCi0gICAgIiRkaWN0aW9uYXJ5ID0gWzpMaW5l
QnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6XTsiCi0gICAgIiRBTFBsdXMgPSBbJEFMICRBSSAkU0Eg
JFNHICRYWF07IgotICAgICIkQUxjbSA9ICRBTFBsdXMgJENNKjsiCi0gICAgIiRCQWNtID0gJEJB
ICRDTSo7IgotICAgICIkQkJjbSA9ICRCQiAkQ00qOyIKLSAgICAiJEIyY20gPSAkQjIgJENNKjsi
Ci0gICAgIiRDTGNtID0gJENMICRDTSo7IgotICAgICIkQ1BjbSA9ICRDUCAkQ00qOyIKLSAgICAi
JEVYY20gPSAkRVggJENNKjsiCi0gICAgIiRHTGNtID0gJEdMICRDTSo7IgotICAgICIkSExjbSA9
ICRITCAkQ00qOyIKLSAgICAiJEhZY20gPSAkSFkgJENNKjsiCi0gICAgIiRIMmNtID0gJEgyICRD
TSo7IgotICAgICIkSDNjbSA9ICRIMyAkQ00qOyIKLSAgICAiJElEY20gPSAkSUQgJENNKjsiCi0g
ICAgIiRJTmNtID0gJElOICRDTSo7IgotICAgICIkSVNjbSA9ICRJUyAkQ00qOyIKLSAgICAiJEpM
Y20gPSAkSkwgJENNKjsiCi0gICAgIiRKVmNtID0gJEpWICRDTSo7IgotICAgICIkSlRjbSA9ICRK
VCAkQ00qOyIKLSAgICAiJE5TY20gPSAkTlMgJENNKjsiCi0gICAgIiROVWNtID0gJE5VICRDTSo7
IgotICAgICIkT1BjbSA9ICRPUCAkQ00qOyIKLSAgICAiJFBPY20gPSAkUE8gJENNKjsiCi0gICAg
IiRQUmNtID0gJFBSICRDTSo7IgotICAgICIkUVVjbSA9ICRRVSAkQ00qOyIKLSAgICAiJFJJY20g
PSAkUVUgJENNKjsiCi0gICAgIiRTWWNtID0gJFNZICRDTSo7IgotICAgICIkV0pjbSA9ICRXSiAk
Q00qOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEZvcndhcmQgPQotICAgICIhIWZvcndh
cmQ7IgotICAgICIkQ0FOX0NNID0gW14kU1AgJEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKLSAg
ICAiJENBTlRfQ00gPSBbJFNQICRCSyAkQ1IgJExGICROTCAkWlcgJENNXTsiCi0gICAgIiRBTF9G
T0xMT1dfTk9DTSA9IFskQksgJENSICRMRiAkTkwgJFpXICRTUF07IgotICAgICIkQUxfRk9MTE9X
X0NNID0gWyRDTCAkQ1AgJEVYICRITCAkSVMgJFNZICRXSiAkR0wgJE9QICRRVSAkQkEgJEhZICRO
UyAkSU4gJE5VICRBTFBsdXNdOyIKLSAgICAiJEFMX0ZPTExPVyA9IFskQUxfRk9MTE9XX05PQ00g
JEFMX0ZPTExPV19DTV07IgotICAgICIkTEI0QnJlYWtzID0gWyRCSyAkQ1IgJExGICROTF07Igot
ICAgICIkTEI0Tm9uQnJlYWtzID0gW14kQksgJENSICRMRiAkTkxdOyIKLSAgICAiJExCOEJyZWFr
cyA9IFskTEI0QnJlYWtzICRaV107IgotICAgICIkTEI4Tm9uQnJlYWtzID0gW1skTEI0Tm9uQnJl
YWtzXSAtIFskWlddXTsiCi0gICAgIiRMQjE4Tm9uQnJlYWtzID0gWyRMQjhOb25CcmVha3MgLSBb
JFNQXV07IgotICAgICIkTEIxOEJyZWFrcyA9IFskTEI4QnJlYWtzICRTUF07IgotICAgICIkTEIy
ME5vbkJyZWFrcyA9IFskTEIxOE5vbkJyZWFrcyAtICRDQl07IgotICAgICIkQUxQbHVzICRDTSs7
IgotICAgICIkQkEgJENNKzsiCi0gICAgIiRCQiAkQ00rOyIKLSAgICAiJEIyICRDTSs7IgotICAg
ICIkQ0wgJENNKzsiCi0gICAgIiRDUCAkQ00rOyIKLSAgICAiJEVYICRDTSs7IgotICAgICIkR0wg
JENNKzsiCi0gICAgIiRITCAkQ00rOyIKLSAgICAiJEhZICRDTSs7IgotICAgICIkSDIgJENNKzsi
Ci0gICAgIiRIMyAkQ00rOyIKLSAgICAiJElEICRDTSs7IgotICAgICIkSU4gJENNKzsiCi0gICAg
IiRJUyAkQ00rOyIKLSAgICAiJEpMICRDTSs7IgotICAgICIkSlYgJENNKzsiCi0gICAgIiRKVCAk
Q00rOyIKLSAgICAiJE5TICRDTSs7IgotICAgICIkTlUgJENNKzsiCi0gICAgIiRPUCAkQ00rOyIK
LSAgICAiJFBPICRDTSs7IgotICAgICIkUFIgJENNKzsiCi0gICAgIiRRVSAkQ00rOyIKLSAgICAi
JFNZICRDTSs7IgotICAgICIkV0ogJENNKzsiCi0gICAgIiRDUiAkTEYgezEwMH07IgotICAgICIk
TEI0Tm9uQnJlYWtzPyAkTEI0QnJlYWtzIHsxMDB9OyIKLSAgICAiJENBTl9DTSAkQ00qICRMQjRC
cmVha3MgezEwMH07IgotICAgICIkQ00rICRMQjRCcmVha3MgezEwMH07IgotICAgICIkTEI0Tm9u
QnJlYWtzIFskU1AgJFpXXTsiCi0gICAgIiRDQU5fQ00gJENNKiBbJFNQICRaV107IgotICAgICIk
Q00rIFskU1AgJFpXXTsiCi0gICAgIiRFbW9qaUZvclNlcXMgJEVtb2ppVmFyPyAkRW1vamlNb2Rz
PyAkWldKICRFbW9qaUZvclNlcXM7IgotICAgICIkQ0FOX0NNICRDTSs7IgotICAgICIkQ00rOyIK
LSAgICAiJENBTl9DTSAkQ00qICRXSmNtOyIKLSAgICAiJExCOE5vbkJyZWFrcyAkV0pjbTsiCi0g
ICAgIiRDTSsgJFdKY207IgotICAgICIkV0pjbSAkQ0FOVF9DTTsiCi0gICAgIiRXSmNtICRDQU5f
Q00gJENNKjsiCi0gICAgIiRHTGNtICRDQU5fQ00gJENNKjsiCi0gICAgIiRHTGNtICRDQU5UX0NN
OyIKLSAgICAiW1skTEI4Tm9uQnJlYWtzXSAtIFskU1AgJEJBICRIWV1dICRDTSogJEdMY207Igot
ICAgICIkQ00rIEdMY207IgotICAgICIkTEI4Tm9uQnJlYWtzICRDTDsiCi0gICAgIiRDQU5fQ00g
JENNKiAkQ0w7IgotICAgICIkQ00rICRDTDsiCi0gICAgIiRMQjhOb25CcmVha3MgJENQOyIKLSAg
ICAiJENBTl9DTSAkQ00qICRDUDsiCi0gICAgIiRDTSsgJENQOyIKLSAgICAiJExCOE5vbkJyZWFr
cyAkRVg7IgotICAgICIkQ0FOX0NNICRDTSogJEVYOyIKLSAgICAiJENNKyAkRVg7IgotICAgICIk
TEI4Tm9uQnJlYWtzICRJUzsiCi0gICAgIiRDQU5fQ00gJENNKiAkSVM7IgotICAgICIkQ00rICRJ
UzsiCi0gICAgIiRMQjhOb25CcmVha3MgJFNZOyIKLSAgICAiJENBTl9DTSAkQ00qICRTWTsiCi0g
ICAgIiRDTSsgJFNZOyIKLSAgICAiJE9QY20gJFNQKiAkQ0FOX0NNICRDTSo7IgotICAgICIkT1Bj
bSAkU1AqICRDQU5UX0NNOyIKLSAgICAiJE9QY20gJFNQKyAkQ00rICRBTF9GT0xMT1c/OyIKLSAg
ICAiJFFVY20gJFNQKiAkT1BjbTsiCi0gICAgIigkQ0xjbSB8ICRDUGNtKSAkU1AqICROU2NtOyIK
LSAgICAiJEIyY20gJFNQKiAkQjJjbTsiCi0gICAgIiRMQjE4Tm9uQnJlYWtzICRDTSogJFFVY207
IgotICAgICIkQ00rICRRVWNtOyIKLSAgICAiJFFVY20gLj87IgotICAgICIkUVVjbSAkTEIxOE5v
bkJyZWFrcyAkQ00qOyIKLSAgICAiJExCMjBOb25CcmVha3MgJENNKiAoJEJBY20gfCAkSFljbSB8
ICROU2NtKTsgIgotICAgICIkQkJjbSBbXiRDQl07IgotICAgICIkQkJjbSAkTEIyME5vbkJyZWFr
cyAkQ00qOyIKLSAgICAiJEhMY20gKCRIWWNtIHwgJEJBY20pIFteJENCXT87IgotICAgICIoJEFM
Y20gfCAkSExjbSkgJElOY207IgotICAgICIkQ00rICRJTmNtOyIKLSAgICAiJElEY20gJElOY207
IgotICAgICIkSU5jbSAkSU5jbTsiCi0gICAgIiROVWNtICRJTmNtOyIKLSAgICAiJElEY20gJFBP
Y207IgotICAgICIkQUxjbSAkTlVjbTsiCi0gICAgIiRITGNtICROVWNtOyIKLSAgICAiJENNKyAk
TlVjbTsiCi0gICAgIiROVWNtICRBTGNtOyIKLSAgICAiJE5VY20gJEhMY207IgotICAgICIkUFJj
bSAkSURjbTsiCi0gICAgIiRQUmNtICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIiRQT2NtICgkQUxj
bSB8ICRITGNtKTsiCi0gICAgIigkUFJjbSB8ICRQT2NtKT8gKCRPUGNtIHwgJEhZY20pPyAkTlVj
bSAoJE5VY20gfCAkU1ljbSB8ICRJU2NtKSogKCRDTGNtIHwgJENQY20pPyAoJFBSY20gfCAkUE9j
bSk/OyIKLSAgICAiJEpMY20gKCRKTGNtIHwgJEpWY20gfCAkSDJjbSB8ICRIM2NtKTsiCi0gICAg
IigkSlZjbSB8ICRIMmNtKSAoJEpWY20gfCAkSlRjbSk7IgotICAgICIoJEpUY20gfCAkSDNjbSkg
JEpUY207IgotICAgICIoJEpMY20gfCAkSlZjbSB8ICRKVGNtIHwgJEgyY20gfCAkSDNjbSkgJElO
Y207IgotICAgICIoJEpMY20gfCAkSlZjbSB8ICRKVGNtIHwgJEgyY20gfCAkSDNjbSkgJFBPY207
IgotICAgICIkUFJjbSAoJEpMY20gfCAkSlZjbSB8ICRKVGNtIHwgJEgyY20gfCAkSDNjbSk7Igot
ICAgICIoJEFMY20gfCAkSExjbSkgKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiJENNKyAoJEFMY20g
fCAkSExjbSk7IgotICAgICIkSVNjbSAoJEFMY20gfCAkSExjbSk7IgotICAgICIoJEFMY20gfCAk
SExjbSB8ICROVWNtKSAkT1BjbTsiCi0gICAgIiRDTSsgJE9QY207IgotICAgICIkQ1BjbSAoJEFM
Y20gfCAkSExjbSB8ICROVWNtKTsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAg
IiRSSWNtICRSSWNtOyIKLSNlbmRpZgotICAgICIkRW1vamlGb3JNb2RzICRFbW9qaVZhcj8gJEVt
b2ppTW9kczsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRSZXZlcnNlID0KLSAgICAiISFy
ZXZlcnNlOyIKLSAgICAiJENNKyAkQUxQbHVzOyIKLSAgICAiJENNKyAkQkE7IgotICAgICIkQ00r
ICRCQjsiCi0gICAgIiRDTSsgJEIyOyIKLSAgICAiJENNKyAkQ0w7IgotICAgICIkQ00rICRDUDsi
Ci0gICAgIiRDTSsgJEVYOyIKLSAgICAiJENNKyAkR0w7IgotICAgICIkQ00rICRITDsiCi0gICAg
IiRDTSsgJEhZOyIKLSAgICAiJENNKyAkSDI7IgotICAgICIkQ00rICRIMzsiCi0gICAgIiRDTSsg
JElEOyIKLSAgICAiJENNKyAkSU47IgotICAgICIkQ00rICRJUzsiCi0gICAgIiRDTSsgJEpMOyIK
LSAgICAiJENNKyAkSlY7IgotICAgICIkQ00rICRKVDsiCi0gICAgIiRDTSsgJE5TOyIKLSAgICAi
JENNKyAkTlU7IgotICAgICIkQ00rICRPUDsiCi0gICAgIiRDTSsgJFBPOyIKLSAgICAiJENNKyAk
UFI7IgotICAgICIkQ00rICRRVTsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAg
IiRDTSsgJFJJOyIKLSNlbmRpZgotICAgICIkQ00rICRTWTsiCi0gICAgIiRDTSsgJFdKOyIKLSAg
ICAiJENNKzsiCi0gICAgIiRBTF9GT0xMT1cgJENNKyAvIChbJEJLICRDUiAkTEYgJE5MICRaVyB7
ZW9mfV0gfCAkU1ArICRDTSsgJFNQIHwgJFNQKyAkQ00qIChbXiRPUCAkQ00gJFNQXSB8IFskQUwg
e2VvZn1dKSk7IgotICAgICJbJFBSXSAvICRDTSsgWyRCSyAkQ1IgJExGICROTCAkWlcgJFNQIHtl
b2Z9XTsiCi0gICAgIiRMQjRCcmVha3MgWyRMQjROb25CcmVha3MtJENNXTsiCi0gICAgIiRMQjRC
cmVha3MgJENNKyAkQ0FOX0NNOyIKLSAgICAiJExGICRDUjsiCi0gICAgIlskU1AgJFpXXSBbJExC
NE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiWyRTUCAkWlddICRDTSsgJENBTl9DTTsiCi0gICAgIiRF
bW9qaUZvclNlcXMgJFpXSiAkRW1vamlNb2RzPyAkRW1vamlWYXI/ICRFbW9qaUZvclNlcXM7Igot
ICAgICIkQ00rICRDQU5fQ007IgotICAgICIkQ00qICRXSiAkQ00qICRDQU5fQ007IgotICAgICIk
Q00qICRXSiBbJExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiJENBTlRfQ00gJENNKiAkV0o7Igot
ICAgICIkQ00qICRDQU5fQ00gJENNKiAkV0o7IgotICAgICIkQ00qICRHTCAkQ00qIFskTEI4Tm9u
QnJlYWtzLVskQ00gJFNQICRCQSAkSFldXTsiCi0gICAgIiRDQU5UX0NNICRDTSogJEdMOyIKLSAg
ICAiJENNKiAkQ0FOX0NNICRDTSogJEdMOyIKLSAgICAiJENMICRDTSsgJENBTl9DTTsiCi0gICAg
IiRDUCAkQ00rICRDQU5fQ007IgotICAgICIkRVggJENNKyAkQ0FOX0NNOyIKLSAgICAiJElTICRD
TSsgJENBTl9DTTsiCi0gICAgIiRTWSAkQ00rICRDQU5fQ007IgotICAgICIkQ0wgWyRMQjhOb25C
cmVha3MtJENNXTsiCi0gICAgIiRDUCBbJExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiJEVYIFsk
TEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIkSVMgWyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAg
IiRTWSBbJExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiWyRDTCAkQ1AgJEVYICRJUyAkU1ldICRD
TSsgJFNQKyAkQ00qICRPUDsgIgotICAgICIkQ00qICRDQU5fQ00gJFNQKiAkQ00qICRPUDsiCi0g
ICAgIiRDQU5UX0NNICRTUCogJENNKiAkT1A7IgotICAgICIkQUxfRk9MTE9XPyAkQ00rICRTUCAk
U1AqICRDTSogJE9QOyIKLSAgICAiJEFMX0ZPTExPV19OT0NNICRDTSsgJFNQKyAkQ00qICRPUDsi
Ci0gICAgIiRDTSogJEFMX0ZPTExPV19DTSAkQ00rICRTUCsgJENNKiAkT1A7IgotICAgICIkU1kg
JENNICRTUCsgJE9QOyIKLSAgICAiJENNKiAkT1AgJFNQKiAkQ00qICRRVTsiCi0gICAgIiRDTSog
JE5TICRTUCogJENNKiAoJENMIHwgJENQKTsiCi0gICAgIiRDTSogJEIyICRTUCogJENNKiAkQjI7
IgotICAgICIkQ00qICRRVSAkQ00qICRDQU5fQ007IgotICAgICIkQ00qICRRVSAkTEIxOE5vbkJy
ZWFrczsiCi0gICAgIiRDTSogJENBTl9DTSAkQ00qICRRVTsiCi0gICAgIiRDQU5UX0NNICRDTSog
JFFVOyIKLSAgICAiJENNKiAoJEJBIHwgJEhZIHwgJE5TKSAkQ00qIFskTEIyME5vbkJyZWFrcy0k
Q01dOyIKLSAgICAiJENNKiBbJExCMjBOb25CcmVha3MtJENNXSAkQ00qICRCQjsiCi0gICAgIlte
JENCXSAkQ00qICRCQjsiCi0gICAgIlteJENCXSAkQ00qICgkSFkgfCAkQkEpICRDTSogJEhMOyIK
LSAgICAiJENNKiAkSU4gJENNKiAoJEFMUGx1cyB8ICRITCk7IgotICAgICIkQ00qICRJTiAkQ00q
ICRJRDsiCi0gICAgIiRDTSogJElOICRDTSogJElOOyIKLSAgICAiJENNKiAkSU4gJENNKiAkTlU7
IgotICAgICIkQ00qICRQTyAkQ00qICRJRDsiCi0gICAgIiRDTSogJE5VICRDTSogKCRBTFBsdXMg
fCAkSEwpOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkTlU7IgotICAgICIkQ00q
ICRJRCAkQ00qICRQUjsiCi0gICAgIiRDTSogKCRBTFBsdXMgfCAkSEwpICRDTSogJFBSOyIKLSAg
ICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUE87IgotICAgICIoJENNKiAoJFBSIHwgJFBP
KSk/ICgkQ00qICgkQ0wgfCAkQ1ApKT8gKCRDTSogKCROVSB8ICRJUyB8ICRTWSkpKiAkQ00qICRO
VSAoJENNKiAoJE9QIHwgJEhZKSk/ICgkQ00qICgkUFIgfCAkUE8pKT87IgotICAgICIkQ00qICgk
SDMgfCAkSDIgfCAkSlYgfCAkSkwpICRDTSogJEpMOyIKLSAgICAiJENNKiAoJEpUIHwgJEpWKSAk
Q00qICgkSDIgfCAkSlYpOyIKLSAgICAiJENNKiAkSlQgJENNKiAoJEgzIHwgJEpUKTsiCi0gICAg
IiRDTSogJElOICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCk7IgotICAgICIkQ00q
ICRQTyAkQ00qICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpOyIKLSAgICAiJENNKiAoJEgz
IHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKSAkQ00qICRQUjsiCi0gICAgIiRDTSogKCRBTFBsdXMg
fCAkSEwpICRDTSogKCRBTFBsdXMgfCAkSEwpOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkg
JENNKiAkSVM7IgotICAgICIkQ00qICRPUCAkQ00qICgkQUxQbHVzIHwgJEhMIHwgJE5VKTsiCi0g
ICAgIiRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUpICRDTSogJENQOyIKLSNpZiBBRERJVElPTkFM
X0VNT0pJX1NVUFBPUlQKLSAgICAiJENNKiAkUkkgJENNKiAkUkk7IgotI2VuZGlmCi0gICAgIiRF
bW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2RzOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFy
KiB1YXgxNFNhZmVGb3J3YXJkID0KLSAgICAiISFzYWZlX2ZvcndhcmQ7IgotICAgICJbJENNICRP
UCAkUVUgJENMICRDUCAkQjIgJFBSICRIWSAkQkEgJFNQICRkaWN0aW9uYXJ5XSsgW14kQ00gJE9Q
ICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAkZGljdGlvbmFyeV07IgotICAgICIkZGljdGlv
bmFyeSAkZGljdGlvbmFyeTsiOwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRTYWZlUmV2ZXJz
ZSA9Ci0gICAgIiEhc2FmZV9yZXZlcnNlOyIKLSAgICAiJENNKyBbXiRDTSAkQksgJENSICRMRiAk
TkwgJFpXICRTUF07IgotICAgICIkQ00rICRTUCAvIC47IgotICAgICIkU1ArICRDTSogJE9QOyIK
LSAgICAiJFNQKyAkQ00qICRRVTsiCi0gICAgIiRTUCsgJENNKiAoJENMIHwgJENQKTsiCi0gICAg
IiRTUCsgJENNKiAkQjI7IgotICAgICIkQ00qICgkSFkgfCAkQkEpICRDTSogJEhMOyIKLSAgICAi
KCRDTSogKCRJUyB8ICRTWSkpKyAkQ00qICROVTsiCi0gICAgIigkQ0wgfCAkQ1ApICRDTSogKCRO
VSB8ICRJUyB8ICRTWSk7IgotICAgICIkZGljdGlvbmFyeSAkZGljdGlvbmFyeTsiOwotCi1zdGF0
aWMgU3RyaW5nIG1hcExpbmVJdGVyYXRvck1vZGVUb1J1bGVzKExpbmVCcmVha0l0ZXJhdG9yTW9k
ZSBtb2RlLCBib29sIGlzQ0pLKQotewotICAgIFN0cmluZ0J1aWxkZXIgcnVsZXNCdWlsZGVyOwot
ICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRQcm9sb2d1ZSk7Ci0gICAgcnVsZXNCdWlsZGVy
LmFwcGVuZCh1YXgxNEFzc2lnbm1lbnRzQmVmb3JlKTsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAg
ICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0OgotICAgICAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbURlZmF1bHRDSksgOiB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tRGVmYXVsdE5vbkNKSyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFw
cGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21Mb29zZUNKSyA6IHVheDE0QXNzaWdu
bWVudHNDdXN0b21Mb29zZU5vbkNKSyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJy
ZWFrSXRlcmF0b3JNb2RlVUFYMTROb3JtYWw6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQo
aXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLIDogdWF4MTRBc3NpZ25tZW50
c0N1c3RvbU5vcm1hbE5vbkNKSyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJyZWFr
SXRlcmF0b3JNb2RlVUFYMTRTdHJpY3Q6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQoaXND
SksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Q0pLIDogdWF4MTRBc3NpZ25tZW50c0N1
c3RvbVN0cmljdE5vbkNKSyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBydWxlc0J1aWxk
ZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNBZnRlcik7Ci0gICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZCh1YXgxNEZvcndhcmQpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRSZXZlcnNlKTsK
LSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0U2FmZUZvcndhcmQpOwotICAgIHJ1bGVzQnVp
bGRlci5hcHBlbmQodWF4MTRTYWZlUmV2ZXJzZSk7Ci0gICAgcmV0dXJuIHJ1bGVzQnVpbGRlci50
b1N0cmluZygpOwotfQotCi0vLyBSZWNvZ25pemUgQkNQNDcgY29tcGxpYW50IHByaW1hcnkgbGFu
Z3VhZ2UgdmFsdWVzIG9mICd6aCcsICdqYScsICdrbycKLS8vIChpbiBhbnkgY29tYmluYXRpb24g
b2YgY2FzZSksIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgc3VidGFncy4gRG9uJ3QKLS8vIHJlY29n
bml6ZSAzLWxldHRlciB2YXJpYW50cyAnY2hpJy8nemhvJywgJ2pwbicsIG9yICdrb3InIHNpbmNl
IEJDUDQ3Ci0vLyByZXF1aXJlcyB1c2Ugb2Ygc2hvcnRlc3QgbGFuZ3VhZ2UgdGFnLgotYm9vbCBp
c0NKS0xvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKLXsKLSAgICBzaXplX3QgbGVu
Z3RoID0gbG9jYWxlLmxlbmd0aCgpOwotICAgIGlmIChsZW5ndGggPCAyKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgYXV0byBjMSA9IGxvY2FsZVswXTsKLSAgICBhdXRvIGMyID0gbG9jYWxl
WzFdOwotICAgIGF1dG8gYzMgPSBsZW5ndGggPT0gMiA/IDAgOiBsb2NhbGVbMl07Ci0gICAgaWYg
KCFjMyB8fCBjMyA9PSAnLScgfHwgYzMgPT0gJ18nIHx8IGMzID09ICdAJykgewotICAgICAgICBp
ZiAoYzEgPT0gJ3onIHx8IGMxID09ICdaJykKLSAgICAgICAgICAgIHJldHVybiBjMiA9PSAnaCcg
fHwgYzIgPT0gJ0gnOwotICAgICAgICBpZiAoYzEgPT0gJ2onIHx8IGMxID09ICdKJykKLSAgICAg
ICAgICAgIHJldHVybiBjMiA9PSAnYScgfHwgYzIgPT0gJ0EnOwotICAgICAgICBpZiAoYzEgPT0g
J2snIHx8IGMxID09ICdLJykKLSAgICAgICAgICAgIHJldHVybiBjMiA9PSAnbycgfHwgYzIgPT0g
J08nOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBv
cGVuTGluZUJyZWFrSXRlcmF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVh
a0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQotewotICAgIFVCcmVha0l0ZXJhdG9yKiB1
YnJrSXRlcjsKLSAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
Ym9vbCBsb2NhbGVJc0VtcHR5ID0gbG9jYWxlLmlzRW1wdHkoKTsKLSAgICBpZiAobW9kZSA9PSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgdWJya0l0ZXIgPSB1YnJrX29wZW4o
VUJSS19MSU5FLCBsb2NhbGVJc0VtcHR5ID8gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkgOiBs
b2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgMCwgMCwgJm9wZW5TdGF0dXMpOwotICAgIGVs
c2UgewotICAgICAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKLSAgICAgICAgYXV0byBydWxl
cyA9IG1hcExpbmVJdGVyYXRvck1vZGVUb1J1bGVzKG1vZGUsIGlzQ0pLKTsKLSAgICAgICAgdWJy
a0l0ZXIgPSB1YnJrX29wZW5SdWxlcyhTdHJpbmdWaWV3KHJ1bGVzKS51cGNvbnZlcnRlZENoYXJh
Y3RlcnMoKSwgcnVsZXMubGVuZ3RoKCksIDAsIDAsICZwYXJzZVN0YXR1cywgJm9wZW5TdGF0dXMp
OwotICAgIH0KLSAgICAvLyBsb2NhbGUgY29tZXMgZnJvbSBhIHdlYiBwYWdlIGFuZCBpdCBjYW4g
YmUgaW52YWxpZCwgbGVhZGluZyBJQ1UKLSAgICAvLyB0byBmYWlsLCBpbiB3aGljaCBjYXNlIHdl
IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBsb2NhbGUuCi0gICAgaWYgKCFsb2NhbGVJc0VtcHR5
ICYmIFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewotICAgICAgICBvcGVuU3RhdHVzID0gVV9aRVJP
X0VSUk9SOwotICAgICAgICB1YnJrSXRlciA9IHVicmtfb3BlbihVQlJLX0xJTkUsIGN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRCgpLCAwLCAwLCAmb3BlblN0YXR1cyk7Ci0gICAgfQotCi0gICAgaWYg
KFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewotICAgICAgICBMT0dfRVJST1IoInVicmtfb3BlbiBm
YWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0
b3IqPih1YnJrSXRlcik7Ci19Ci0KLXZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJl
YWtJdGVyYXRvciomIGl0ZXJhdG9yKQotewotICAgIFVCcmVha0l0ZXJhdG9yKiB1YnJrSXRlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcik7Ci0gICAgQVNTRVJU
KHVicmtJdGVyKTsKLSAgICB1YnJrX2Nsb3NlKHVicmtJdGVyKTsKLSAgICBpdGVyYXRvciA9IG51
bGxwdHI7Ci19Ci0KLXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogbm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcjsKLQotc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVBbmRTd2FwTm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciogZXhwZWN0ZWQsIFRl
eHRCcmVha0l0ZXJhdG9yKiBuZXdWYWx1ZSkKLXsKLSAgICByZXR1cm4gV1RGOjp3ZWFrQ29tcGFy
ZUFuZFN3YXAoJm5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IsIGV4cGVjdGVkLCBuZXdW
YWx1ZSk7Ci19Ci0KLU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgbV9pdGVyYXRv
ciA9IG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7Ci0KLSAgICBib29sIGNyZWF0ZWRJ
dGVyYXRvciA9IG1faXRlcmF0b3IgJiYgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJC
cmVha0l0ZXJhdG9yKG1faXRlcmF0b3IsIDApOwotICAgIGlmICghY3JlYXRlZEl0ZXJhdG9yKQot
ICAgICAgICBtX2l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSKTsK
LSAgICBpZiAoIW1faXRlcmF0b3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXRlcmF0b3Ig
PSBzZXRUZXh0Rm9ySXRlcmF0b3IoKm1faXRlcmF0b3IsIHN0cmluZyk7Ci19Ci0KLU5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6On5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
KCkKLXsKLSAgICBpZiAoIWNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcigwLCBtX2l0ZXJhdG9yKSkKLSAgICAgICAgdWJya19jbG9zZShyZWludGVycHJldF9jYXN0
PFVCcmVha0l0ZXJhdG9yKj4obV9pdGVyYXRvcikpOwotfQotCi0KLS8vIEl0ZXJhdG9yIGltcGxl
bWVuYXRpb24uCi0KLWludCB0ZXh0QnJlYWtGaXJzdChUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfZmlyc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVy
YXRvcio+KGl0ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtMYXN0KFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19sYXN0KHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrTmV4dChUZXh0
QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfbmV4dChyZWludGVy
cHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRleHRCcmVh
a1ByZXZpb3VzKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJy
a19wcmV2aW91cyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsK
LX0KLQotaW50IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Is
IGludCBwb3MpCi17Ci0gICAgcmV0dXJuIHVicmtfcHJlY2VkaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtGb2xs
b3dpbmcoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yLCBpbnQgcG9zKQotewotICAgIHJldHVy
biB1YnJrX2ZvbGxvd2luZyhyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0
b3IpLCBwb3MpOwotfQotCi1pbnQgdGV4dEJyZWFrQ3VycmVudChUZXh0QnJlYWtJdGVyYXRvciog
aXRlcmF0b3IpCi17Ci0gICAgcmV0dXJuIHVicmtfY3VycmVudChyZWludGVycHJldF9jYXN0PFVC
cmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJl
YWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gdWJya19p
c0JvdW5kYXJ5KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBv
c2l0aW9uKTsKLX0KLQotYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yKQotewotICAgIGludCBydWxlU3RhdHVzID0gdWJya19nZXRSdWxlU3RhdHVzKHJlaW50
ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotICAgIHJldHVybiBydWxl
U3RhdHVzICE9IFVCUktfV09SRF9OT05FOwotfQotCi11bnNpZ25lZCBudW1HcmFwaGVtZUNsdXN0
ZXJzKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBzLmxl
bmd0aCgpOwotICAgIAotICAgIGlmICghc3RyaW5nTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlciBpcyBD
UiBMRgotICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQotICAgICAgICBy
ZXR1cm4gc3RyaW5nTGVuZ3RoOwotCi0gICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
ciBpdChzKTsKLSAgICBpZiAoIWl0KQotICAgICAgICByZXR1cm4gc3RyaW5nTGVuZ3RoOwotCi0g
ICAgdW5zaWduZWQgbnVtID0gMDsKLSAgICB3aGlsZSAodGV4dEJyZWFrTmV4dChpdCkgIT0gVGV4
dEJyZWFrRG9uZSkKLSAgICAgICAgKytudW07Ci0gICAgcmV0dXJuIG51bTsKLX0KLQotdW5zaWdu
ZWQgbnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyhjb25zdCBTdHJpbmdWaWV3JiBzLCB1
bnNpZ25lZCBudW1HcmFwaGVtZUNsdXN0ZXJzKQotewotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0
aCA9IHMubGVuZ3RoKCk7Ci0KLSAgICBpZiAoIXN0cmluZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAvLyBUaGUgb25seSBMYXRpbi0xIEV4dGVuZGVkIEdyYXBoZW1lIENsdXN0ZXIg
aXMgQ1IgTEYKLSAgICBpZiAocy5pczhCaXQoKSAmJiAhcy5jb250YWlucygnXHInKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVDbHVzdGVycyk7Ci0K
LSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHMpOwotICAgIGlmICghaXQp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1pbihzdHJpbmdMZW5ndGgsIG51bUdyYXBoZW1lQ2x1c3Rl
cnMpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdyYXBoZW1lQ2x1c3RlcnM7
ICsraSkgewotICAgICAgICBpZiAodGV4dEJyZWFrTmV4dChpdCkgPT0gVGV4dEJyZWFrRG9uZSkK
LSAgICAgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7Ci0gICAgfQotICAgIHJldHVybiB0ZXh0
QnJlYWtDdXJyZW50KGl0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2YTFjMjM1MGI0NzY3ZDZjZTFjMzRkZTJjMzRjMjJkNDM1MjJj
NThlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAorKysgL2Rldi9udWxs
CkBAIC0xLDIxNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IExhcnMgS25vbGwg
PGxhcnNAdHJvbGx0ZWNoLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFRleHRCcmVha0l0ZXJh
dG9yX2gKLSNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRleHRCcmVha0l0ZXJhdG9yOwotCi0vLyBOb3RlOiBU
aGUgcmV0dXJuZWQgaXRlcmF0b3IgaXMgZ29vZCBvbmx5IHVudGlsIHlvdSBnZXQgYW5vdGhlciBp
dGVyYXRvciwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvci4K
LQotZW51bSBMaW5lQnJlYWtJdGVyYXRvck1vZGUgewotICAgIExpbmVCcmVha0l0ZXJhdG9yTW9k
ZVVBWDE0LAotICAgIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0TG9vc2UsCi0gICAgTGluZUJy
ZWFrSXRlcmF0b3JNb2RlVUFYMTROb3JtYWwsCi0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFY
MTRTdHJpY3QsCi19OwotCi0vLyBUaGlzIGlzIHNpbWlsYXIgdG8gY2hhcmFjdGVyIGJyZWFrIGl0
ZXJhdG9yIGluIG1vc3QgY2FzZXMsIGJ1dCBpcyBzdWJqZWN0IHRvCi0vLyBwbGF0Zm9ybSBVSSBj
b252ZW50aW9ucy4gT25lIG5vdGFibGUgZXhhbXBsZSB3aGVyZSB0aGlzIGNhbiBiZSBkaWZmZXJl
bnQKLS8vIGZyb20gY2hhcmFjdGVyIGJyZWFrIGl0ZXJhdG9yIGlzIFRoYWkgcHJlcGVuZCBjaGFy
YWN0ZXJzLCBzZWUgYnVnIDI0MzQyLgotLy8gVXNlIHRoaXMgZm9yIGluc2VydGlvbiBwb2ludCBh
bmQgc2VsZWN0aW9uIG1hbmlwdWxhdGlvbnMuCi1UZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92
ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3KTsKLQotVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVh
a0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOwotVGV4dEJyZWFrSXRlcmF0b3IqIHNlbnRlbmNlQnJlYWtJ
dGVyYXRvcihTdHJpbmdWaWV3KTsKLQotV0VCQ09SRV9FWFBPUlQgVGV4dEJyZWFrSXRlcmF0b3Iq
IGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUsIGJvb2wgaXNDSkspOwotV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLVRl
eHRCcmVha0l0ZXJhdG9yKiBvcGVuTGluZUJyZWFrSXRlcmF0b3IoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSwgYm9vbCBpc0NKSyk7Ci12b2lkIGNsb3Nl
TGluZUJyZWFrSXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3IqJik7Ci0KLWludCB0ZXh0QnJlYWtG
aXJzdChUZXh0QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFrSXRl
cmF0b3IqKTsKLWludCB0ZXh0QnJlYWtOZXh0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1pbnQgdGV4
dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0QnJlYWtDdXJyZW50
KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1pbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0
ZXJhdG9yKiwgaW50KTsKLVdFQkNPUkVfRVhQT1JUIGludCB0ZXh0QnJlYWtGb2xsb3dpbmcoVGV4
dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRv
ciosIGludCk7Ci1ib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciopOwotCi1j
b25zdCBpbnQgVGV4dEJyZWFrRG9uZSA9IC0xOwotCi1XRUJDT1JFX0VYUE9SVCBib29sIGlzQ0pL
TG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYpOwotCi1jbGFzcyBMYXp5TGluZUJyZWFrSXRlcmF0
b3IgewotcHVibGljOgotICAgIExhenlMaW5lQnJlYWtJdGVyYXRvcigpCi0gICAgICAgIDogbV9p
dGVyYXRvcihudWxscHRyKQotICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0KG51bGxwdHIp
Ci0gICAgICAgICwgbV9tb2RlKExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQotICAgICAgICAs
IG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoKDApCi0gICAgICAgICwgbV9pc0NKSyhmYWxzZSkK
LSAgICB7Ci0gICAgICAgIHJlc2V0UHJpb3JDb250ZXh0KCk7Ci0gICAgfQotCi0gICAgTGF6eUxp
bmVCcmVha0l0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
ID0gQXRvbWljU3RyaW5nKCksIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlID0gTGluZUJyZWFr
SXRlcmF0b3JNb2RlVUFYMTQpCi0gICAgICAgIDogbV9zdHJpbmcoc3RyaW5nKQotICAgICAgICAs
IG1fbG9jYWxlKGxvY2FsZSkKLSAgICAgICAgLCBtX2l0ZXJhdG9yKG51bGxwdHIpCi0gICAgICAg
ICwgbV9jYWNoZWRQcmlvckNvbnRleHQobnVsbHB0cikKLSAgICAgICAgLCBtX21vZGUobW9kZSkK
LSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCgwKQotICAgIHsKLSAgICAgICAg
cmVzZXRQcmlvckNvbnRleHQoKTsKLSAgICAgICAgbV9pc0NKSyA9IGlzQ0pLTG9jYWxlKGxvY2Fs
ZSk7Ci0gICAgfQotCi0gICAgfkxhenlMaW5lQnJlYWtJdGVyYXRvcigpCi0gICAgewotICAgICAg
ICBpZiAobV9pdGVyYXRvcikKLSAgICAgICAgICAgIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvciht
X2l0ZXJhdG9yKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmc7IH0KLSAgICBib29sIGlzTG9vc2VDSktNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0NKSyAmJiBtX21vZGUgPT0gTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZTsgfQotCi0g
ICAgVUNoYXIgbGFzdENoYXJhY3RlcigpIGNvbnN0Ci0gICAgewotICAgICAgICBDT01QSUxFX0FT
U0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVy
YXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIG1f
cHJpb3JDb250ZXh0WzFdOwotICAgIH0KLQotICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJhY3Rl
cigpIGNvbnN0Ci0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RI
KG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9y
X2NvbnRleHRfbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIG1fcHJpb3JDb250ZXh0WzBdOwotICAg
IH0KLQotICAgIHZvaWQgc2V0UHJpb3JDb250ZXh0KFVDaGFyIGxhc3QsIFVDaGFyIHNlY29uZFRv
TGFzdCkKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9w
cmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29u
dGV4dF9sZW5ndGgpOwotICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IHNlY29uZFRvTGFzdDsK
LSAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBsYXN0OwotICAgIH0KLQotICAgIHZvaWQgdXBk
YXRlUHJpb3JDb250ZXh0KFVDaGFyIGxhc3QpCi0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VS
VChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRv
cl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKLSAgICAgICAgbV9wcmlvckNvbnRl
eHRbMF0gPSBtX3ByaW9yQ29udGV4dFsxXTsKLSAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSBs
YXN0OwotICAgIH0KLQotICAgIHZvaWQgcmVzZXRQcmlvckNvbnRleHQoKQotICAgIHsKLSAgICAg
ICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwg
VGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAg
ICAgIG1fcHJpb3JDb250ZXh0WzBdID0gMDsKLSAgICAgICAgbV9wcmlvckNvbnRleHRbMV0gPSAw
OwotICAgIH0KLQotICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGggPSAwOwotICAgICAgICBDT01Q
SUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJl
YWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKLSAgICAgICAgaWYg
KG1fcHJpb3JDb250ZXh0WzFdKSB7Ci0gICAgICAgICAgICArK3ByaW9yQ29udGV4dExlbmd0aDsK
LSAgICAgICAgICAgIGlmIChtX3ByaW9yQ29udGV4dFswXSkKLSAgICAgICAgICAgICAgICArK3By
aW9yQ29udGV4dExlbmd0aDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcHJpb3JDb250ZXh0
TGVuZ3RoOwotICAgIH0KLQotICAgIC8vIE9idGFpbiB0ZXh0IGJyZWFrIGl0ZXJhdG9yLCBwb3Nz
aWJseSBwcmV2aW91c2x5IGNhY2hlZCwgd2hlcmUgdGhpcyBpdGVyYXRvciBpcyAob3IgaGFzIGJl
ZW4pCi0gICAgLy8gaW5pdGlhbGl6ZWQgdG8gdXNlIHRoZSBwcmV2aW91c2x5IHN0b3JlZCBzdHJp
bmcgYXMgdGhlIHByaW1hcnkgYnJlYWtpbmcgY29udGV4dCBhbmQgdXNpbmcKLSAgICAvLyBwcmV2
aW91c2x5IHN0b3JlZCBwcmlvciBjb250ZXh0IGlmIG5vbi1lbXB0eS4KLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogZ2V0KHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChwcmlvckNvbnRleHRMZW5ndGggPD0gcHJpb3JDb250ZXh0Q2FwYWNpdHkpOwotICAg
ICAgICBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0ID0gcHJpb3JDb250ZXh0TGVuZ3RoID8gJm1f
cHJpb3JDb250ZXh0W3ByaW9yQ29udGV4dENhcGFjaXR5IC0gcHJpb3JDb250ZXh0TGVuZ3RoXSA6
IDA7Ci0gICAgICAgIGlmICghbV9pdGVyYXRvcikgewotICAgICAgICAgICAgbV9pdGVyYXRvciA9
IGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihtX3N0cmluZywgbV9sb2NhbGUsIHByaW9yQ29udGV4
dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCBtX21vZGUsIG1faXNDSkspOwotICAgICAgICAgICAgbV9j
YWNoZWRQcmlvckNvbnRleHQgPSBwcmlvckNvbnRleHQ7Ci0gICAgICAgICAgICBtX2NhY2hlZFBy
aW9yQ29udGV4dExlbmd0aCA9IHByaW9yQ29udGV4dExlbmd0aDsKLSAgICAgICAgfSBlbHNlIGlm
IChwcmlvckNvbnRleHQgIT0gbV9jYWNoZWRQcmlvckNvbnRleHQgfHwgcHJpb3JDb250ZXh0TGVu
Z3RoICE9IG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoKSB7Ci0gICAgICAgICAgICByZXNldFN0
cmluZ0FuZFJlbGVhc2VJdGVyYXRvcihtX3N0cmluZywgbV9sb2NhbGUsIG1fbW9kZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gdGhpcy0+Z2V0KHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIG1faXRlcmF0b3I7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldFN0cmlu
Z0FuZFJlbGVhc2VJdGVyYXRvcihTdHJpbmcgc3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCi0gICAgewotICAgICAgICBpZiAobV9p
dGVyYXRvcikKLSAgICAgICAgICAgIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRvcihtX2l0ZXJhdG9y
KTsKLSAgICAgICAgbV9zdHJpbmcgPSBzdHJpbmc7Ci0gICAgICAgIG1fbG9jYWxlID0gbG9jYWxl
OwotICAgICAgICBtX2l0ZXJhdG9yID0gbnVsbHB0cjsKLSAgICAgICAgbV9jYWNoZWRQcmlvckNv
bnRleHQgPSBudWxscHRyOwotICAgICAgICBtX21vZGUgPSBtb2RlOwotICAgICAgICBtX2lzQ0pL
ID0gaXNDSktMb2NhbGUobG9jYWxlKTsKLSAgICAgICAgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5n
dGggPSAwOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJp
b3JDb250ZXh0Q2FwYWNpdHkgPSAyOwotICAgIFN0cmluZyBtX3N0cmluZzsKLSAgICBBdG9taWNT
dHJpbmcgbV9sb2NhbGU7Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3I7Ci0gICAg
Y29uc3QgVUNoYXIqIG1fY2FjaGVkUHJpb3JDb250ZXh0OwotICAgIExpbmVCcmVha0l0ZXJhdG9y
TW9kZSBtX21vZGU7Ci0gICAgdW5zaWduZWQgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGg7Ci0g
ICAgVUNoYXIgbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHldOwotICAgIGJvb2wg
bV9pc0NKSzsKLX07Ci0KLS8vIEl0ZXJhdGVzIG92ZXIgImV4dGVuZGVkIGdyYXBoZW1lIGNsdXN0
ZXJzIiwgYXMgZGVmaW5lZCBpbiBVQVggIzI5LgotLy8gTm90ZSB0aGF0IHBsYXRmb3JtIGltcGxl
bWVudGF0aW9ucyBtYXkgYmUgbGVzcyBzb3BoaXN0aWNhdGVkIC0gZS5nLiBJQ1UgcHJpb3IgdG8K
LS8vIHZlcnNpb24gNC4wIG9ubHkgc3VwcG9ydHMgImxlZ2FjeSBncmFwaGVtZSBjbHVzdGVycyIu
Ci0vLyBVc2UgdGhpcyBmb3IgZ2VuZXJhbCB0ZXh0IHByb2Nlc3NpbmcsIGUuZy4gc3RyaW5nIHRy
dW5jYXRpb24uCi0KLWNsYXNzIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOwot
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IoU3RyaW5nVmlldyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfk5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3IoKTsKLQotICAgIG9wZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yKigpIGNvbnN0
IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KLQotcHJpdmF0ZToKLSAgICBUZXh0QnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvcjsKLX07Ci0KLS8vIENvdW50cyB0aGUgbnVtYmVyIG9mIGdyYXBoZW1lIGNs
dXN0ZXJzLiBBIHN1cnJvZ2F0ZSBwYWlyIG9yIGEgc2VxdWVuY2UKLS8vIG9mIGEgbm9uLWNvbWJp
bmluZyBjaGFyYWN0ZXIgYW5kIGZvbGxvd2luZyBjb21iaW5pbmcgY2hhcmFjdGVycyBpcwotLy8g
Y291bnRlZCBhcyAxIGdyYXBoZW1lIGNsdXN0ZXIuCi11bnNpZ25lZCBudW1HcmFwaGVtZUNsdXN0
ZXJzKGNvbnN0IFN0cmluZyYpOwotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMg
d2hpY2ggd2lsbCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KLS8vIHRoZSBzcGVjaWZpZWQgZ3Jh
cGhlbWUgY2x1c3RlciBsZW5ndGguCi11bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNs
dXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCk7Ci0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0
b3JJbnRlcm5hbElDVS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGI3MDAzYzM1
ZmQyMWVhNmFhMjE5OTM1ZTdhMjg5OWEyNjVhZDdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAq
LwotCi0jaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VfaAotI2RlZmluZSBUZXh0
QnJlYWtJdGVyYXRvckludGVybmFsSUNVX2gKLQotLy8gRklYTUU6IE5vdyB0aGF0IHRoaXMgaGFu
ZGxlcyBsb2NhbGVzIGZvciBJQ1UsIG5vdCBqdXN0IGZvciB0ZXh0IGJyZWFraW5nLAotLy8gdGhp
cyBmaWxlIGFuZCB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlvbiBmaWxlcyBzaG91bGQgYmUgcmVu
YW1lZC4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY29uc3QgY2hhciogY3VycmVudFNl
YXJjaExvY2FsZUlEKCk7Ci0gICAgY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlE
KCk7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9j
Zi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCA5ZTM0M2MwMjkxNzVkZWU1NGEzNTRkN2Q1MjgyNjNi
OTQwZTQ3YmQxLi5jNDBlNjIyNzNlMDM0ODJjNTFkZTNkZDE5ZTEyNDY4MjIxNzI1MTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAK
QEAgLTI3LDEzICsyNywxMyBAQAogI2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCiAKICNpbmNsdWRl
ICJMYW5ndWFnZS5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIK
ICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTw+
CiBjbGFzcyBUaW55TFJVQ2FjaGVQb2xpY3k8QXRvbWljU3RyaW5nLCBSZXRhaW5QdHI8Q0ZMb2Nh
bGVSZWY+PgpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBDRiBo
eXBoZW5hdGlvbiBmdW5jdGlvbnMgdXNlIGxvY2FsZSAocmVnaW9uYWwgZm9ybWF0cykgbGFuZ3Vh
Z2UsIHdoaWNoIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWF0Y2ggcHJpbWFyeSBVSSBsYW5ndWFnZSwK
ICAgICAgICAgLy8gc28gd2UgY2FuJ3QgdXNlIGRlZmF1bHQgbG9jYWxlIGhlcmUuIFNlZSA8cmRh
cjovL3Byb2JsZW0vMTQ4OTc2NjQ+LgotICAgICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxv
Y2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGVmYXVs
dExhbmd1YWdlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgICAgICBSZXRhaW5QdHI8
Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgV2ViQ29yZTo6ZGVmYXVsdExhbmd1YWdlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOwogICAgICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9yTG9j
YWxlKGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiBudWxscHRyOwogICAgIH0KIApAQCAtNjUsNiAr
NjUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFp
bGFibGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IG51bGxwdHI7CiAgICAgfQog
fTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIGNhbkh5cGhlbmF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50
ZXJuYWxJQ1VFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDU2ODY5ZjE0
NWRkNzY4MWRmZWJiNjg4ODk1YmMxOTU1MWUxM2JjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZWZsL1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxl
SUQoKQotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCi0gICAgcmV0
dXJuICIiOwotfQotCi1jb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQotewot
ICAgIHJldHVybiAiZW5fdXMiOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCmluZGV4IDQ3
ZjU2ZjA4YjM1NDgyY2FlMDY0ZDRmYjE5NDJjYWU1YzhhYjA3MjAuLjQxMWM4MDYxNGUyNjdjZmM1
MTFmZmFkYjBhOTUzNjFjODFiNTQ5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwCkBAIC0yNCw3
ICsyNCw3IEBACiAKICNpbmNsdWRlIDxMYW5ndWFnZS5oPgogI2luY2x1ZGUgPGdsaWIuaD4KLSNp
bmNsdWRlIDx0ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
NWU1YTA1ZmE0OTE5NWZiMzBiZjY5ZGVkNTYyZDU0M2I4YjYxMDE4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFs
cEBhdG9rZXIuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGNoYXIq
IGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lz
dGVtIGxvY2FsZS4KLSAgICByZXR1cm4gIiI7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0
QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2Fs
ZS4KLSAgICByZXR1cm4gImVuX3VzIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmlu
ZGV4IDE2YTU0MGM5MTc4MmZkMTdkOWRjZmFhMjAwMDg2NTkwMjFhNzkzZGEuLjAyNzk0ZmNkNDJk
ZjUzYTlkMDJiNzYzN2Q0ZTc4NTliZWQwN2EyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAK
QEAgLTE2Niw2ICsxNjYsMTAgQEAgcHJpdmF0ZToKICAgICBIeXBoZW5EaWN0VW5pcXVlUHRyIG1f
bGliaHlwaGVuRGljdGlvbmFyeTsKIH07CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFt
ZXNwYWNlIFdURiB7CisKIHRlbXBsYXRlPD4KIGNsYXNzIFRpbnlMUlVDYWNoZVBvbGljeTxBdG9t
aWNTdHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+PgogewpAQCAtMTkyLDYgKzE5
NiwxMCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAorfSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwogc3RhdGljIHZvaWQgY291bnRMZWFkaW5nU3BhY2VzKGNvbnN0IENT
dHJpbmcmIHV0ZjhTdHJpbmcsIGludDMyX3QmIHBvaW50ZXJPZmZzZXQsIGludDMyX3QmIGNoYXJh
Y3Rlck9mZnNldCkKIHsKICAgICBwb2ludGVyT2Zmc2V0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGZkYWVlODFlNjA3ZTY3NTQzYmY2N2ZlODY1MzJhYjUzNWJmN2IyYzAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlVUZXh0UHJvdmlkZXIuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLS8vIFJlbG9jYXRlIHBvaW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5h
dGlvbiBhcyByZXF1aXJlZC4KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0IFVU
ZXh0KiBzb3VyY2UsIFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIpCi17
Ci0gICAgaWYgKHBvaW50ZXIgPj0gc291cmNlLT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRpY19j
YXN0PGNoYXIqPihzb3VyY2UtPnBFeHRyYSkgKyBzb3VyY2UtPmV4dHJhU2l6ZSkgewotICAgICAg
ICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9p
bnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihkZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc291
cmNlLT5wRXh0cmEpKTsKLSAgICB9IGVsc2UgaWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBvaW50
ZXIgPCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5zaXpl
T2ZTdHJ1Y3QpIHsKLSAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0
cnVjdHVyZSwgYnV0IG5vdCBzb3VyY2UgZXh0cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVyID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihwb2ludGVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkp
OwotICAgIH0KLX0KLQotVVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwg
Y29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewot
ICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwgIWRlZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1
cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGludDMyX3QgZXh0cmFTaXplID0gc291
cmNlLT5leHRyYVNpemU7Ci0gICAgZGVzdGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlv
biwgZXh0cmFTaXplLCBzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAg
ICAgIHJldHVybiBkZXN0aW5hdGlvbjsKLSAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9u
LT5wRXh0cmE7Ci0gICAgaW50MzJfdCBmbGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAgICBp
bnQgc2l6ZVRvQ29weSA9IHN0ZDo6bWluKHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlv
bi0+c2l6ZU9mU3RydWN0KTsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRv
Q29weSk7Ci0gICAgZGVzdGluYXRpb24tPnBFeHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3RpbmF0
aW9uLT5mbGFncyA9IGZsYWdzOwotICAgIG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3Vy
Y2UtPnBFeHRyYSwgZXh0cmFTaXplKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRp
b24sIGRlc3RpbmF0aW9uLT5jb250ZXh0KTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGRlc3RpbmF0aW9uLT5wKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRp
b24sIGRlc3RpbmF0aW9uLT5xKTsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAgICBj
b25zdCB2b2lkKiBjaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRlc3Rp
bmF0aW9uLT5jaHVua0NvbnRlbnRzKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRp
b24sIGNodW5rQ29udGVudHMpOwotICAgIGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihjaHVua0NvbnRlbnRzKTsKLSAgICByZXR1cm4gZGVzdGlu
YXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzI1NGZjNGM3Y2UyMzU5NDQyYzY3ZmFiZjE4YjVlZjZhYjFjNDNhNy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVVRleHRQcm92aWRlcl9oCi0jZGVmaW5lIFVU
ZXh0UHJvdmlkZXJfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgewotICAgIE5vQ29u
dGV4dCwKLSAgICBQcmlvckNvbnRleHQsCi0gICAgUHJpbWFyeUNvbnRleHQKLX07Ci0KLWlubGlu
ZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCog
dGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRl
eHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQotICAgICAgICByZXR1cm4gVVRleHRQcm92
aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0OwotICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0
LT5iKQotICAgICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlt
YXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci0gICAgcmV0
dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci19Ci0KLWlubGluZSB2b2lk
IGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25zdCBV
VGV4dEZ1bmNzKiBmdW5jcywgY29uc3Qgdm9pZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNv
bnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAg
dGV4dC0+cEZ1bmNzID0gZnVuY3M7Ci0gICAgdGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8
PCBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hVTktTOwotICAgIHRleHQtPmNvbnRleHQgPSBzdHJp
bmc7Ci0gICAgdGV4dC0+cCA9IHN0cmluZzsKLSAgICB0ZXh0LT5hID0gbGVuZ3RoOwotICAgIHRl
eHQtPnEgPSBwcmlvckNvbnRleHQ7Ci0gICAgdGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsK
LX0KLQotLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgVVRleHRDbG9uZSBmdW5jdGlv
biBvbiBVVGV4dEZ1bmNzLgotCi1VVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0
aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMp
OwotCi0KLS8vIEhlbHBlcnMgZm9yIHRoZSBVVGV4dEFjY2VzcyBmdW5jdGlvbiBvbiBVVGV4dEZ1
bmNzLgotCi1pbmxpbmUgaW50NjRfdCB1VGV4dEFjY2Vzc1BpbkluZGV4KGludDY0X3QmIGluZGV4
LCBpbnQ2NF90IGxpbWl0KQotewotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0g
MDsKLSAgICBlbHNlIGlmIChpbmRleCA+IGxpbWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0Owot
ICAgIHJldHVybiBpbmRleDsKLX0KLQotaW5saW5lIGJvb2wgdVRleHRBY2Nlc3NJbkNodW5rT3JP
dXRPZlJhbmdlKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2
ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCwgVUJvb2wmIGlzQWNjZXNzaWJsZSkKLXsKLSAgICBpZiAo
Zm9yd2FyZCkgewotICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gdGV4dC0+Y2h1bmtOYXRpdmVT
dGFydCAmJiBuYXRpdmVJbmRleCA8IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAgICAg
ICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
OwotICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBj
b21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJU
KG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAgICAg
ICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAgICAg
ICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gbmF0aXZlTGVuZ3RoICYmIHRleHQtPmNo
dW5rTmF0aXZlTGltaXQgPT0gbmF0aXZlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVu
a09mZnNldCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0g
RkFMU0U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmIChuYXRpdmVJbmRleCA+IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0
aXZlSW5kZXggPD0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkgewotICAgICAgICAgICAgaW50NjRf
dCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAg
ICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9m
ZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4dC0+
Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOwotICAgICAgICAgICAgaXNBY2Nl
c3NpYmxlID0gVFJVRTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChuYXRpdmVJbmRleCA8PSAwICYmICF0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0g
ICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2li
bGUgPSBGQUxTRTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gVVRleHRQcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjZDY4NTJjNzFlNTVlZjk3Y2EwYjBiYTFjZmY4ODBiOTk3MGY3M2M1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgotCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0vLyBMYXRpbjEgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVU
ZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3Qg
dVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqKTsKLXN0YXRpYyBVQm9vbCB1VGV4dExhdGlu
MUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0
aW4xRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVy
cm9yQ29kZSopOwotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZShj
b25zdCBVVGV4dCopOwotc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRv
VVRGMTYoY29uc3QgVVRleHQqLCBpbnQ2NF90KTsKLXN0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ2xv
c2UoVVRleHQqKTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHVUZXh0TGF0aW4x
RnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAw
LAotICAgIHVUZXh0TGF0aW4xQ2xvbmUsCi0gICAgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgsCi0g
ICAgdVRleHRMYXRpbjFBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFFeHRyYWN0LAotICAgIG51bGxw
dHIsCi0gICAgbnVsbHB0ciwKLSAgICB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlLAotICAg
IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2LAotICAgIHVUZXh0TGF0aW4xQ2xvc2Us
Ci0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIKLX07Ci0KLXN0YXRpYyBV
VGV4dCogdVRleHRMYXRpbjFDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBz
b3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBBU1NFUlRfVU5V
U0VEKGRlZXAsICFkZWVwKTsKLQotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgVVRleHQqIHJlc3VsdCA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9u
LCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHksIHN0YXR1cyk7
Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9u
OwotICAgIAotICAgIHJlc3VsdC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gc291cmNlLT5wcm92aWRl
clByb3BlcnRpZXM7Ci0gICAgCi0gICAgLy8gUG9pbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24sIGJ1
dCB3aXRoIGFuIGVtcHR5IGJ1ZmZlci4KLSAgICByZXN1bHQtPmNodW5rTmF0aXZlU3RhcnQgPSBz
b3VyY2UtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgcmVzdWx0LT5jaHVua05hdGl2ZUxpbWl0ID0g
c291cmNlLT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIHJlc3VsdC0+bmF0aXZlSW5kZXhpbmdMaW1p
dCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFydCk7Ci0gICAg
cmVzdWx0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgcmVzdWx0LT5jb250ZXh0ID0gc291cmNlLT5j
b250ZXh0OwotICAgIHJlc3VsdC0+YSA9IHNvdXJjZS0+YTsKLSAgICByZXN1bHQtPnBGdW5jcyA9
ICZ1VGV4dExhdGluMUZ1bmNzOwotICAgIHJlc3VsdC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciop
cmVzdWx0LT5wRXh0cmE7Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPihyZXN1bHQtPmNo
dW5rQ29udGVudHMpLCAwLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2Fw
YWNpdHkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludDY0X3QgdVRleHRM
YXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqIHVUZXh0KQotewotICAgIHJldHVybiB1VGV4dC0+YTsK
LX0KLQotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50NjRf
dCBpbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5h
OwotCi0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdVRleHQtPmNodW5r
TmF0aXZlTGltaXQgJiYgaW5kZXggPj0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAgICAg
ICAgICAgIC8vIEFscmVhZHkgaW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNldC4K
LSAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGlu
ZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCAmJiB1VGV4dC0+Y2h1bmtO
YXRpdmVMaW1pdCA9PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIE9mZiB0aGUgZW5kIG9mIHRo
ZSBidWZmZXIsIGJ1dCB3ZSBjYW4ndCBnZXQgaXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtP
ZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0
YXJ0KTsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmIChpbmRleCA8PSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRleCA+
IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGluc2lk
ZSB0aGUgYnVmZmVyLiBTZXQgdGhlIG5ldyBvZmZzZXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1
bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2
ZVN0YXJ0KTsKLSAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICB9Ci0gICAgICAgIGlm
ICghaW5kZXggJiYgIXVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBB
bHJlYWR5IGF0IHRoZSBiZWdpbm5pbmc7IGNhbid0IGdvIGFueSBmYXJ0aGVyLgotICAgICAgICAg
ICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICB1VGV4dC0+
Y2h1bmtOYXRpdmVTdGFydCA9IGluZGV4OwotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCA9IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICsgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNp
dHk7Ci0gICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKLSAgICAg
ICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOwotCi0gICAgICAgIHVUZXh0
LT5jaHVua09mZnNldCA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdVRleHQtPmNodW5rTmF0
aXZlTGltaXQgPSBpbmRleDsKLSAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4g
bGVuZ3RoKQotICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7Ci0K
LSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCAtIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5OwotICAgICAgICBpZiAodVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgPCAwKQotICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQg
PSAwOwotCi0gICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgIH0KLSAgICB1VGV4dC0+Y2h1
bmtMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAt
IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLQotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhj
b25zdF9jYXN0PFVDaGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25z
dCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7Ci0KLSAgICB1VGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKLQotICAgIHJldHVybiBUUlVF
OwotfQotCi1zdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUV4dHJhY3QoVVRleHQqIHVUZXh0LCBp
bnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGxpbWl0LCBVQ2hhciogZGVzdCwgaW50MzJfdCBkZXN0Q2Fw
YWNpdHksIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0
LT5hOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgaWYgKGRlc3RDYXBhY2l0eSA8IDAgfHwgKCFkZXN0ICYmIGRlc3RDYXBhY2l0eSA+IDApKSB7
Ci0gICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBsaW1pdCB8fCAo
bGltaXQgLSBzdGFydCkgPiBJTlQzMl9NQVgpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSU5ERVhf
T1VUT0ZCT1VORFNfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChz
dGFydCA+IGxlbmd0aCkKLSAgICAgICAgc3RhcnQgPSBsZW5ndGg7Ci0gICAgaWYgKGxpbWl0ID4g
bGVuZ3RoKQotICAgICAgICBsaW1pdCA9IGxlbmd0aDsKLQotICAgIGxlbmd0aCA9IGxpbWl0IC0g
c3RhcnQ7Ci0gICAgCi0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
aWYgKGRlc3RDYXBhY2l0eSA+IDAgJiYgIWRlc3QpIHsKLSAgICAgICAgaW50MzJfdCB0cmltbWVk
TGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKLSAgICAgICAgaWYgKHRyaW1t
ZWRMZW5ndGggPiBkZXN0Q2FwYWNpdHkpCi0gICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0gZGVz
dENhcGFjaXR5OwotCi0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0aWNf
Y2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odHJpbW1lZExlbmd0aCkpOwotICAgIH0KLQotICAgIGlmIChsZW5ndGggPCBkZXN0
Q2FwYWNpdHkpIHsKLSAgICAgICAgZGVzdFtsZW5ndGhdID0gMDsKLSAgICAgICAgaWYgKCpzdGF0
dXMgPT0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORykKLSAgICAgICAgICAgICpzdGF0
dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgfSBlbHNlIGlmIChsZW5ndGggPT0gZGVzdENhcGFjaXR5
KQotICAgICAgICAqc3RhdHVzID0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsKLSAg
ICBlbHNlCi0gICAgICAgICpzdGF0dXMgPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKLQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOwotfQotCi1zdGF0aWMgaW50NjRf
dCB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0KiB1VGV4dCkKLXsKLSAg
ICByZXR1cm4gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgKyB1VGV4dC0+Y2h1bmtPZmZzZXQ7Ci19
Ci0KLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0
IFVUZXh0KiB1VGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCkKLXsKLSAgICBBU1NFUlRfVU5VU0VE
KHVUZXh0LCB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA+PSBuYXRpdmVJbmRleCk7Ci0gICAgQVNT
RVJUX1VOVVNFRCh1VGV4dCwgbmF0aXZlSW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCk7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KG5hdGl2ZUluZGV4KTsKLX0KLQotc3Rh
dGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4dCogdVRleHQpCi17Ci0gICAgdVRleHQtPmNv
bnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRl
eHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1
cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSkpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAo
JnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVz
KTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHRleHQtPmNvbnRleHQgPSBz
dHJpbmc7Ci0gICAgdGV4dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5wRnVuY3MgPSAmdVRleHRM
YXRpbjFGdW5jczsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKil0ZXh0LT5wRXh0
cmE7Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwg
MCwgc2l6ZW9mKFVDaGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKLQotICAg
IHJldHVybiB0ZXh0OwotfQotCi0KLS8vIExhdGluMUNvbnRleHRBd2FyZSBwcm92aWRlcgotCi1z
dGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBV
VGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMUNv
bnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCopOwotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4x
Q29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOwotc3RhdGljIGludDMy
X3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRf
dCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dExhdGlu
MUNvbnRleHRBd2FyZUNsb3NlKFVUZXh0Kik7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRG
dW5jcyB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0RnVu
Y3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAwLAotICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJl
Q2xvbmUsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCi0gICAgdVRl
eHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVF
eHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51
bGxwdHIsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSwKLSAgICBudWxscHRyLAot
ICAgIG51bGxwdHIsCi0gICAgbnVsbHB0cgotfTsKLQotc3RhdGljIGlubGluZSBVVGV4dFByb3Zp
ZGVyQ29udGV4dCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQoY29uc3Qg
VVRleHQqIHRleHQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICBy
ZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dDsKLSAgICByZXR1cm4gdGV4dC0+
Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJp
bWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OwotfQotCi1z
dGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBF
eHRyYSk7Ci0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID49
IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOwotICAgICAgICB0ZXh0LT5j
aHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXg7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZl
TGltaXQgPSBuYXRpdmVJbmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7Ci0g
ICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVuZ3RoKQotICAgICAg
ICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDw9
IG5hdGl2ZUxlbmd0aCk7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJ
bmRleDsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4IC0gdGV4
dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0
aXZlU3RhcnQgPCB0ZXh0LT5iKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9
IHRleHQtPmI7Ci0gICAgfQotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVM
aW1pdCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0
aCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5n
ZS4KLSAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkpOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKLSAg
ICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgdGV4
dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIFN0
cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50
cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5n
dGgpKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJp
bWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0
aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250
ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5r
Q29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0gICAg
dGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4x
Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2
ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NF
UlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/
IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFT
U0VSVF9VTlVTRUQobmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVM
ZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQo
Zm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5k
ZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAg
ICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0
aCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5r
TGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlm
IGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgot
ICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7
Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAw
LCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0
QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRl
eCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0
ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJh
KTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0
ZXh0LT5xKTsKLSAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRl
eHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgVVRl
eHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25z
dCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAg
cmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7
Ci19Ci0KLXN0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3Ro
KFVUZXh0KiB0ZXh0KQotewotICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3Rh
dGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2
NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+Y29udGV4
dCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRl
eHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nl
c3NpYmxlOwotICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKLSAgICAgICAg
cmV0dXJuIGlzQWNjZXNzaWJsZTsKLSAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5k
ZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQg
Y3VycmVudENvbnRleHQgPSB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQo
dGV4dCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlk
ZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29u
dGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3Q29u
dGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0g
VVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dExh
dGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0TGF0
aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRp
dmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFBy
b3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRleHRMYXRpbjFDb250ZXh0
QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBV
VGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKLSAgICAgICAgdGV4dExhdGluMUNv
bnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgsIGZvcndhcmQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGlu
dDMyX3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50
NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAgLy8g
SW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3
aXRoIElDVSBmdW5jdGlvbnMKLSAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qg
b3BlcmF0aW9uLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICplcnJvckNvZGUgPSBV
X1VOU1VQUE9SVEVEX0VSUk9SOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCB1VGV4
dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRl
eHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJv
dmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29u
dGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkp
IHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1
ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBp
ZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3Zp
ZGVyKHRleHQsICZ0ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBw
cmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzlkNWQyODRiZWMwYTgxYjNmODdhYWM2ODNiNDhlMzQ4MGU1MjRlOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gK
LSNkZWZpbmUgVVRleHRQcm92aWRlckxhdGluMV9oCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jb25zdCBpbnQgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkgPSAxNjsKLQotc3RydWN0
IFVUZXh0V2l0aEJ1ZmZlciB7Ci0gICAgVVRleHQgdGV4dDsKLSAgICBVQ2hhciBidWZmZXJbVVRl
eHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHldOwotfTsKLQotVVRleHQqIG9wZW5MYXRpbjFVVGV4
dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3Ry
aW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci1VVGV4dCogb3Blbkxh
dGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZm
ZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHBy
aW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlckxhdGlu
MV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyVVRGMTYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQ
cm92aWRlclVURjE2LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhYWM0OGM4
MTUxY2UwMTI1MzZhOGM0YjE1YWFlZGI4NDg2YjBjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyVVRGMTYuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVU
RjE2LmgiCi0KLSNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gVVRGMTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4
dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJy
b3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVu
Z3RoKFVUZXh0Kik7Ci1zdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhV
VGV4dCosIGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0
QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBV
RXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRl
eHQqKTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRB
d2FyZUZ1bmNzID0gewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLAotICAgIDAsCi0g
ICAgMCwKLSAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCi0gICAgdVRleHRVVEYxNkNv
bnRleHRBd2FyZU5hdGl2ZUxlbmd0aCwKLSAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNz
LAotICAgIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAg
bnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgdVRleHRVVEYxNkNvbnRl
eHRBd2FyZUNsb3NlLAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyCi19
OwotCi1zdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRB
d2FyZUdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICghdGV4
dC0+Y2h1bmtDb250ZW50cykKLSAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpO
b0NvbnRleHQ7Ci0gICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0
OjpQcmlvckNvbnRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1v
dmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1
bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndh
cmQgPyBuYXRpdmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxl
bmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxl
bmd0aDsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBk
ZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNT
RVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0
ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+bmF0
aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0
ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBj
aHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGlu
dDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBz
dGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0
YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQo
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBV
Qm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0
LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBz
dGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnApOwotICAgIHRleHRVVEYxNkNvbnRleHRB
d2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5Q
cmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0
aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRl
bnRzID09IHRleHQtPnEpOwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0
LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRpdmVM
ZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4
IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8g
bmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgp
OwotICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0aXZl
TGltaXQgPSB0ZXh0LT5iOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAgICB0
ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50NjRf
dCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8g
RW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4
Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNldCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua09m
ZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1h
eCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3Ro
KTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNv
bnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVu
Z3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8
fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIHRleHQtPmNodW5rQ29udGVu
dHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRVVEYxNkNv
bnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVu
Z3RoLCBmb3J3YXJkKTsKLX0KLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJl
Q2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVw
LCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjRf
dCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQotewotICAg
IHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0VVRGMTZD
b250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29s
IGZvcndhcmQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jb250ZXh0KQotICAgICAgICByZXR1cm4gRkFM
U0U7Ci0gICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0
aXZlTGVuZ3RoKHRleHQpOwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodVRleHRB
Y2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Ci0g
ICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgpOwotICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVU
RjE2Q29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVVRleHRQcm92aWRl
ckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkg
ewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlBy
aW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJp
bWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9y
Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9
IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250
ZXh0KQotICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0
KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2Ugewot
ICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JD
b250ZXh0KTsKLSAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRl
eHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAg
IHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJl
RXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9y
Q29kZSogZXJyb3JDb2RlKQotewotICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMg
dGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCi0gICAgLy8gdGhh
dCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKLSAgICByZXR1
cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0
KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3Bl
blVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIq
IHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQg
cHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJ
TFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVu
Z3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpKSkgewotICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAs
IHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQo
IXRleHQpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplQ29udGV4
dEF3YXJlVVRleHRQcm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0
cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0
dXJuIHRleHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YjQ3ZGQ3MzRiYWE3MzA4MDM0M2UwNTgwNWQ3MmUwMjNh
N2E5ZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3Zp
ZGVyVVRGMTZfaAotI2RlZmluZSBVVGV4dFByb3ZpZGVyVVRGMTZfaAotCi0jaW5jbHVkZSA8dW5p
Y29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVUZXh0KiBvcGVuVVRGMTZD
b250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBs
ZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgs
IFVFcnJvckNvZGUqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRl
eHRQcm92aWRlclVURjE2X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggYjg2MGEzNTI5MmMzNTFiNDNiNjk0Nzg4MTVmZGRh
MWMxYjI2ZDJiOC4uZDhlZTU5OGM3NDM4YjU3MjBjZWVlOTgxN2RlZjNlYWJhOTU1Zjk4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMu
bW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGV4dEJv
dW5kYXJpZXMuaCIKIAotI2ltcG9ydCAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKLSNpbXBvcnQgIlRl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NG
U3RyaW5nVG9rZW5pemVyLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNp
bXBvcnQgPHVuaWNvZGUvdWJyay5oPgpAQCAtMzYsNiArMzQsOCBAQAogI2ltcG9ydCA8dW5pY29k
ZS91dHlwZXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmg+CiAjaW1wb3J0
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWU1Mzk3NmZiMWQ1ZDcyYmNhNzQ2NzM2YjY4MzcxNTA2YWE4ZDY0Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotCi0jaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBp
bnQgbWF4TG9jYWxlU3RyaW5nTGVuZ3RoID0gMzI7Ci0KLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlW
YWx1ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwKLSAgICAgICAga0NGUHJlZmVyZW5j
ZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5j
ZXNBbnlIb3N0KSk7Ci0gICAgaWYgKCFsb2NhbGUgfHwgQ0ZHZXRUeXBlSUQobG9jYWxlLmdldCgp
KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGxvY2FsZS5nZXQoKSk7Ci19Ci0KLXN0YXRp
YyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCi17Ci0gICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlc0FycmF5ID0gYWRvcHRDRihDRkxvY2FsZUNv
cHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7Ci0gICAgaWYgKCFsYW5ndWFnZXNBcnJheSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzQXJy
YXkuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzQXJyYXkuZ2V0
KCksIDApKTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0TG9jYWxlKENGU3RyaW5nUmVmIGxvY2FsZSwg
Y2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICAv
LyBFbXB0eSBzdHJpbmcgbWVhbnMgInJvb3QgbG9jYWxlIiwgYW5kIHRoYXQgaXMgd2hhdCB3ZSB1
c2UgaWYgd2UgY2FuJ3QgZ2V0IGEgcHJlZmVyZW5jZS4KLSAgICBsb2NhbGVTdHJpbmdCdWZmZXJb
MF0gPSAwOwotICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZTdHJpbmdH
ZXRDU3RyaW5nKGxvY2FsZSwgbG9jYWxlU3RyaW5nQnVmZmVyLCBtYXhMb2NhbGVTdHJpbmdMZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwotfQotCi1zdGF0aWMgdm9pZCBnZXRTZWFyY2hM
b2NhbGUoY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsK
LSAgICBnZXRMb2NhbGUodG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkuZ2V0KCksIGxvY2FsZVN0cmlu
Z0J1ZmZlcik7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0g
ICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07
Ci0gICAgc3RhdGljIGJvb2wgZ290U2VhcmNoTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RT
ZWFyY2hMb2NhbGUpIHsKLSAgICAgICAgZ2V0U2VhcmNoTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZl
cik7Ci0gICAgICAgIGdvdFNlYXJjaExvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBs
b2NhbGVTdHJpbmdCdWZmZXI7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldFRleHRCcmVha0xvY2FsZShj
aGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQotewotICAgIC8v
IElmIHRoZXJlIGlzIG5vIHRleHQgYnJlYWsgbG9jYWxlLCB1c2UgdGhlIHRvcCBsYW5ndWFnZSBw
cmVmZXJlbmNlLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlID0gdGV4dEJyZWFr
TG9jYWxlUHJlZmVyZW5jZSgpOwotICAgIGlmIChsb2NhbGUpIHsKLSAgICAgICAgaWYgKFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2Fub25pY2FsTG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0
ZUNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgbG9jYWxlLmdldCgpKSkpCi0gICAgICAgICAgICBsb2NhbGUgPSBjYW5vbmljYWxMb2NhbGU7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGxvY2FsZSA9IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpOwot
ICAgIGdldExvY2FsZShsb2NhbGUuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0KLWNv
bnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNoYXIg
bG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGljIGJv
b2wgZ290VGV4dEJyZWFrTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RUZXh0QnJlYWtMb2Nh
bGUpIHsKLSAgICAgICAgZ2V0VGV4dEJyZWFrTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0g
ICAgICAgIGdvdFRleHRCcmVha0xvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2Nh
bGVTdHJpbmdCdWZmZXI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdp
bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTdlMTcwNWVmNTRiOTM5MjE0
ZGExODQ4MGRiN2EzMmMzMmM5MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNl
YXJjaExvY2FsZUlEKCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxl
LgotICAgIHJldHVybiAiIjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2Fs
ZUlEKCkKLXsKLSAgICAvLyBVc2luZyBlbl9VU19QT1NJWCBub3cgc28gd29yZCBzZWxlY3Rpb24g
aW4gYWRkcmVzcyBmaWVsZCB3b3JrcyBhcyBleHBlY3RlZCBhcyBiZWZvcmUgKGRvdWJsZS1jbGlj
a2luZwotICAgIC8vIGluIGEgVVJMIHNlbGVjdHMgYSB3b3JkIGRlbGltaXRlZCBieSBwZXJpb2Rz
IHJhdGhlciB0aGFuIHNlbGVjdGluZyB0aGUgZW50aXJlIFVSTCkuCi0gICAgLy8gSG93ZXZlciwg
dGhpcyBpcyBub3QgZW50aXJlbHkgY29ycmVjdCAtIHdlIHNob3VsZCBob25vciB0aGUgc3lzdGVt
IGxvY2FsZSBpbiB0aGUgbm9ybWFsIGNhc2UuCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxl
bS82Nzg2NzAzPiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUgZm9yIHRleHQgYnJlYWtpbmcKLSAg
ICByZXR1cm4gImVuX1VTX1BPU0lYIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggZTM1NDYwMzE5NTAzMjU4Y2YyOWY3NDNhNWI4NDEwZmYyNGU5
ZWViNy4uMmVkNWI1YTk1ZWVjM2MwNTBjZTFiZDQ5ZGZhMDQ1YjYwNjcxMzFmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgog
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAKaW5kZXggOGI0ZWMzZjhlZWI5MzJjMWM3ZGM1ZGUxNjY5ZjA4YzQwYmEw
NmVjYi4uMmE1YWQ1ZDQ1MDk0MjU3NzZiOWFjMDQwMDAzNmZjNzYwMWI2ZTA5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJlc291cmNl
RGVjb2Rlci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgImJyZWFr
X2xpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBiYWNjNWMy
NTNhYzNlN2M5NWQ1YzZmYTlmMzYxNzU1MjQ0NWE4OTUyLi5kNjNlNjA4OWNkZTQwMzdjNTVlNWYx
YzhjNjIyODFlOGFjYTYyYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
QEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0TGluZUJveGVzLmgiCiAjaW5j
bHVkZSAiU2ltcGxlTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJU
ZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRG
cmFnbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKaW5kZXggYzc5MDZjMTdkYzhlMDE0ZWQwNTBmOTVm
Y2IwMWNjODZiNTEwMWQ2NC4uMTA3N2JjYmJmMTYwOTU1NGJjZWJiNzc0NThmMjgwODVmZjYyNmFj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRU
ZXh0RnJhZ21lbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogCiAj
aW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZs
b3dDb250ZW50cy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJicmVha19saW5lcy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvYnJlYWtfbGluZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVz
LmNwcAppbmRleCAwNzU3NmJiYzhiZDRjZmY2ZjUzYWIzNGIwYzEzNjVhM2Y4NDRhOGNhLi5lNGI5
NTM2ZmQxYmVkZjFjZTM2M2Q2NjAxMWQ1MTIzNTkwZWY4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9icmVha19saW5lcy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgogCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAppbmRleCA5ZTA0ZDFlNDI4Y2EyNjA4MzVh
YmViZjk1ZWVjNjQzODliZmVlNGQ2Li5hMjk0NjEyOWNiYTZlYjkxNmRhYjllNTFhODBlY2JlOWUx
N2ZiMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaApAQCAtMjIsOSAr
MjIsOSBAQAogI2lmbmRlZiBicmVha19saW5lc19oCiAjZGVmaW5lIGJyZWFrX2xpbmVzX2gKIAot
I2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUJyZWFrZXIuaAppbmRleCAyNzc0ZjI2ODU2MTE5ODNkZjVjMzQ4MzllZGU3MDQ2ZGVkMjZh
M2ZkLi5jODlmZTE3Y2NkMDY5YTY1Y2UxM2Q4MWFjN2UxYTNjODlmNTE4YzdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKQEAgLTI4LDggKzI4LDggQEAK
ICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5j
bHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283251</attachid>
            <date>2016-07-09 01:20:56 -0700</date>
            <delta_ts>2016-07-09 01:55:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159594-20160709012019.patch</filename>
            <type>text/plain</type>
            <size>362274</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLmFmOTRjZDdkYWVlN2QzZmY4ZmRjYWQ0OWRjMGE1MThlOTBhNDJi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE2LTA3LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2luZyBpdGVyYXRvciBj
b2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1ZpZXcgYSBHcmFwaGVt
ZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRvciBuZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9yCisgICAgICAgIGNv
ZGUuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpY3UvdW5pY29kZS91YnJrLmg6IEFkZGVkLgorICAgICAgICAqIGljdS91bmljb2RlL3V0ZXh0
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGV4dC5oLgorICAg
ICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAg
ICogd3RmL1RpbnlMUlVDYWNoZS5oOgorICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaC4KKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0
b3JQb29sOjpMaW5lQnJlYWtJdGVyYXRvclBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJdGVyYXRv
clBvb2w6Om1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKToKKyAgICAgICAgKFdURjo6TGluZUJy
ZWFrSXRlcmF0b3JQb29sOjp0YWtlKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0b3JQ
b29sOjpwdXQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwLgorICAgICAgICAoV1RGOjppbml0aWFsaXplSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOgorICAgICAgICAoV1RGOjpzZXRUZXh0Rm9ySXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OnNlbnRlbmNl
QnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmN1cnNvck1vdmVtZW50SXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpy
ZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjptYXBMaW5lSXRlcmF0b3JN
b2RlVG9SdWxlcyk6CisgICAgICAgIChXVEY6OmlzQ0pLTG9jYWxlKToKKyAgICAgICAgKFdURjo6
b3BlbkxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OmNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZpcnN0KToKKyAgICAgICAgKFdURjo6dGV4
dEJyZWFrTGFzdCk6CisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOgorICAgICAgICAoV1RG
Ojp0ZXh0QnJlYWtQcmV2aW91cyk6CisgICAgICAgIChXVEY6OnRleHRCcmVha1ByZWNlZGluZyk6
CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXVEY6OnRleHRC
cmVha0N1cnJlbnQpOgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6CisgICAgICAgIChXVEY6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXVEY6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOgor
ICAgICAgICAoV1RGOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAgICAg
KiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oLgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6fkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c3RyaW5nKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjppc0xvb3NlQ0pLTW9kZSk6CisgICAgICAgIChXVEY6OkxhenlM
aW5lQnJlYWtJdGVyYXRvcjo6bGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OnVwZGF0ZVByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6Okxh
enlMaW5lQnJlYWtJdGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpyZXNldFN0cmluZ0FuZFJlbGVhc2VJdGVyYXRvcik6CisgICAgICAgIChXVEY6
Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJh
dG9yKik6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmguCisgICAgICAgICogd3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4dC9ndGsvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXIuY3BwLgorICAgICAgICAoV1RGOjpmaXhQb2ludGVyKToKKyAgICAg
ICAgKFdURjo6dVRleHRDbG9uZUltcGwpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmguCisgICAgICAgIChXVEY6OnVUZXh0UHJvdmlkZXJDb250ZXh0KToKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOgorICAgICAg
ICAoV1RGOjp1VGV4dEFjY2Vzc1BpbkluZGV4KToKKyAgICAgICAgKFdURjo6dVRleHRBY2Nlc3NJ
bkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcC4KKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDbG9u
ZSk6CisgICAgICAgIChXVEY6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdU
Rjo6dVRleHRMYXRpbjFBY2Nlc3MpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUV4dHJhY3Qp
OgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKToKKyAgICAgICAg
KFdURjo6dVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYpOgorICAgICAgICAoV1RGOjp1
VGV4dExhdGluMUNsb3NlKToKKyAgICAgICAgKFdURjo6b3BlbkxhdGluMVVUZXh0UHJvdmlkZXIp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRl
eHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5
Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5Qcmlv
ckNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9Q
cmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25l
KToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOgor
ICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2Vzcyk6CisgICAgICAgIChX
VEY6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6CisgICAgICAgIChXVEY6OnVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UpOgorICAgICAgICAoV1RGOjpvcGVuTGF0aW4xQ29udGV4
dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlk
ZXJMYXRpbjEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaC4KKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAuCisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2Q29udGV4
dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0VVRGMTZDb250
ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dFVU
RjE2Q29udGV4dEF3YXJlQ2xvbmUpOgorICAgICAgICAoV1RGOjp1VGV4dFVURjE2Q29udGV4dEF3
YXJlTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUFj
Y2Vzcyk6CisgICAgICAgIChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KToKKyAg
ICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKToKKyAgICAgICAgKFdURjo6
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmguCisgICAgICAgICogd3RmL3RleHQv
bWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
TWFjLm1tLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKToKKyAgICAg
ICAgKFdURjo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxl
KToKKyAgICAgICAgKFdURjo6Z2V0U2VhcmNoTG9jYWxlKToKKyAgICAgICAgKFdURjo6Y3VycmVu
dFNlYXJjaExvY2FsZUlEKToKKyAgICAgICAgKFdURjo6Z2V0VGV4dEJyZWFrTG9jYWxlKToKKyAg
ICAgICAgKFdURjo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4
dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVV2luLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorCiAyMDE2LTA3LTA4
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjAyNzk5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwOTRlNzRiMGM0NDRi
YTQ4MjBhYTJhM2FlNjAzNzFkZGY1MWZlMmEuLjFmMGE3MjQwOTFkZGMwODQyOGU3Mjk0ZDk1MzEw
OTdiZGFlODIxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTQgQEAKKzIwMTYtMDctMDkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGJy
ZWFraW5nIGl0ZXJhdG9yIGNvZGUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBnaXZpbmcgU3Ry
aW5nVmlldyBhIEdyYXBoZW1lQ2x1c3RlcnMgaXRlcmF0b3IuCisgICAgICAgIFN1Y2ggYW4gaW50
ZXJhdG9yIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBvdXIgYnJlYWtpbmcgaXRl
cmF0b3IKKyAgICAgICAgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVy
ZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFs
dWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3Jl
YXRlVmFsdWVGb3JLZXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVy
YXRvclBvb2w6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjptYWtlTG9jYWxlV2l0aEJyZWFrS2V5
d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6
OnRha2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29s
OjpwdXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzZXRUZXh0Rm9ySXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OndvcmRCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNlbnRl
bmNlQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JNb3Zl
bWVudEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFjcXVpcmVMaW5lQnJl
YWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTGluZUJyZWFr
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bWFwTGluZUl0ZXJhdG9yTW9k
ZVRvUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNDSktMb2NhbGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxpbmVCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4
dEJyZWFrRmlyc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFrTGFzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0QnJlYWtOZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnRleHRCcmVha1ByZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRleHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0
ZXh0QnJlYWtGb2xsb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFr
Q3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1RleHRCcmVhayk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJlYWspOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bnVtR3JhcGhlbWVDbHVzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6On5MYXp5TGluZUJyZWFrSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjppc0xvb3NlQ0pLTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I6Omxhc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjp1
cGRhdGVQcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OmdldCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnJlc2V0U3RyaW5nQW5k
UmVsZWFzZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yKik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaXhQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xv
bmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dFByb3ZpZGVyQ29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dEFjY2Vzc1BpbkluZGV4KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNsb25lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExh
dGluMU1hcE9mZnNldFRvTmF0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0
TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxhdGlu
MVVUZXh0UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMUNv
bnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29u
dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
TW92ZUluUHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRp
bjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFBy
b3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlR2V0
Q3VycmVudENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29u
dGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dp
dGNoVG9QcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRVVEYx
NkNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0VVRG
MTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
dVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmdldExvY2FsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRTZWFyY2hM
b2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldFRleHRCcmVha0xvY2FsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oOgorCiAyMDE2LTA3LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgYWRvcHROb2RlKCkgY2hhbmdlcyBjc3MgY2xhc3MgdG8gbG93ZXJjYXNlIGZvciBkb2N1
bWVudCBsb2FkZWQgd2l0aCBYSFIgcmVzcG9uc2VUeXBlID0gImRvY3VtZW50IgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDM0ZjY2ZTMzZTljY2Q4Yzk1Mzdm
NzU3MGVmMmE4MmIwN2VjM2QzMS4uNGJlNGZjMWRhNDRjYzlhMThmMjEyZTgyMGRiMzU4MGJjNmIy
OWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2
ICs4OSwxNSBAQAogCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJv
bHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2Vk
QnlTYWZhcmkubW0gKi87IH07CiAJCTFBRkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2Fz
dHNDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
REU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi87IH07CiAJCTFBRkRFNjUz
MTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGREU2NTIxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFs
LmggKi87IH07CisJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4
MUM3RDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OworCQkx
QzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTgxQzdFMUQzMDc4REEwMEY1
RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oICovOyB9OworCQkxQzE4MUM4RjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRl
ci5jcHAgKi87IH07CisJCTFDMTgxQzkwMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
QTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5oICovOyB9OworCQkxQzE4MUM5MTFE
MzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYg
LyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi87IH07CisJCTFDMTgxQzkyMUQzMDdBQjgwMEY1
RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92
aWRlckxhdGluMS5oICovOyB9OworCQkxQzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQ
cm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMTgxQzhEMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
ICovOyB9OworCQkxQzE4MUM5NDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggKi87IH07CisJCTFDMTgx
Qzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxODFDOTUx
RDMwODAwQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gKi87
IH07CiAJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg4MTUyNTAy
REEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCAqLzsgfTsKIAkJMUZBNDdDOEIxNTI1MDJE
QTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg5MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmggKi87IH07CiAJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5oICovOyB9OwpAQCAtNDE0LDYgKzQyMywxNyBAQAogCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3
MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0
c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkRFNjUyMTk1M0IyM0QwMEM0
OEZGQSAvKiBPcHRpb25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRp
b25hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM3RDFEMzA3OERBMDBG
NUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODIxRDMwNzlB
QzAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDOEExRDMwN0FCODAwRjVGQTE2IC8qIFVU
ZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92
aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4QjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMxODFDOEMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRp
bjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGlu
MS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4RDFEMzA3QUI4MDBGNUZB
MTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMTgxQzhFMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgcGF0
aCA9IG1hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRkE0N0M4ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVh
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4
RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29yZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODgsNiArNzA4LDE5IEBACiAJCQluYW1lID0gTGli
cmFyaWVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMxODFDODgxRDMw
N0FCODAwRjVGQTE2IC8qIGljdSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUMxODFDODkxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3Bw
ICovLAorCQkJCTFDMTgxQzhBMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggKi8s
CisJCQkJMUMxODFDOEIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
ICovLAorCQkJCTFDMTgxQzhDMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4x
LmggKi8sCisJCQkJMUMxODFDOEQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi8sCisJCQkJMUMxODFDOEUxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc1MSw2ICs3ODQsNyBAQAogCQlB
NUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBB
ODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSAqLywKIAkJCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJF
NjkgLyogU3RyaW5nTWFjLm1tICovLAogCQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBT
dHJpbmdWaWV3T2JqQy5tbSAqLywKQEAgLTEwNDMsNiArMTA3Nyw3IEBACiAJCUE4QTQ3MzFCMTUx
QTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzE4MUM4ODFEMzA3QUI4MDBGNUZBMTYgLyogaWN1ICovLAogCQkJCUE1
QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAvKiBjZiAqLywKIAkJCQlBNUJBMTVGMTE4MjQzMzlGMDBB
ODJFNjkgLyogbWFjICovLAogCQkJCUE4QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZh
c3RQYXRoLmggKi8sCkBAIC0xMDc5LDYgKzExMTQsMTAgQEAKIAkJCQk3MEVDQTYwQzFCMDI0MjY4
MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGU3RyaW5nLmggKi8sCisJCQkJMUMxODFDN0QxRDMwNzhEQTAwRjVGQTE2IC8qIFRl
eHRCcmVha0l0ZXJhdG9yLmNwcCAqLywKKwkJCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyog
VGV4dEJyZWFrSXRlcmF0b3IuaCAqLywKKwkJCQkxQzE4MUM4MTFEMzA3OTdDMDBGNUZBMTYgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8sCisJCQkJMUMxODFDODIxRDMwNzlBQzAwRjVG
QTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjQ3LDYgKzEyODYsNyBA
QAogCQkJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVk
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogSGFz
aGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4MUM5MDFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDQxNTFBODI1QjAwNDEyM0ZG
IC8qIEhhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Q1MTUxQTgyNUIw
MDQxMjNGRiAvKiBIYXNoSXRlcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNENjE1
MUE4MjVCMDA0MTIzRkYgLyogSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjYzLDYgKzEz
MDMsNyBAQAogCQkJCTdDREQ3RkZBMTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0FDOTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MERBMDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJv
dmlkZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZG
IC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUxNjQ2QjFCNkZGQzk2MDA0
MDBFN0MgLyogTG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEy
M0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjcyLDYgKzEzMTMsNyBAQAogCQkJ
CUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxQzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyog
TWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMyLDYgKzEzNzQsNyBA
QAogCQkJCUE3NDg3NDUzMTdBMEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyNjE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5k
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0
UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVC
MDA0MTIzRkYgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAg
LTE1MDIsNiArMTU0NSw3IEBACiAJCQkJQThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTU1NkY1
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDM5MTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTFDMTgxQzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAw
NDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUx
QTgyNUIwMDQxMjNGRiAvKiBEYXRhTG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Ew
MTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MTUs
NiArMTU1OSw3IEBACiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2Nr
T2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzhG
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTI5LDYgKzE1NzQsNyBAQAogCQkJCUE4
QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIzMzRFQjAw
ODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgy
NEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNTU4LDYgKzE2MDQsOCBAQAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcx
NTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzdG
MUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDgxNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NEExNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91YnJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljMGVmNjI3YjY3Mjc5Zjg2ZTQ2MDQ0YmYwZjI1
NzEwMmUwYzZjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJy
ay5oCkBAIC0wLDAgKzEsNTQxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHly
aWdodCAoQykgMTk5Ni0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuCisqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyovCisKKyNpZm5kZWYgVUJSS19ICisjZGVmaW5lIFVCUktfSAorCisjaW5jbHVk
ZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3Vsb2MuaCIKKyNpbmNsdWRl
ICJ1bmljb2RlL3V0ZXh0LmgiCisjaW5jbHVkZSAidW5pY29kZS9sb2NhbHBvaW50ZXIuaCIKKwor
LyoqCisgKiBBIHRleHQtYnJlYWsgaXRlcmF0b3IuCisgKiAgRm9yIHVzYWdlIGluIEMgcHJvZ3Jh
bXMuCisgKi8KKyNpZm5kZWYgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRPUgorIyAgIGRlZmlu
ZSBVQlJLX1RZUEVERUZfVUJSRUFLX0lURVJBVE9SCisgICAgLyoqCisgICAgICogIE9wYXF1ZSB0
eXBlIHJlcHJlc2VudGluZyBhbiBJQ1UgQnJlYWsgaXRlcmF0b3Igb2JqZWN0LgorICAgICAqICBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBVQnJlYWtJdGVyYXRv
ciBVQnJlYWtJdGVyYXRvcjsKKyNlbmRpZgorCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFU
SU9OCisKKyNpbmNsdWRlICJ1bmljb2RlL3BhcnNlZXJyLmgiCisKKy8qKgorICogXGZpbGUKKyAq
IFxicmllZiBDIEFQSTogQnJlYWtJdGVyYXRvcgorICoKKyAqIDxoMj4gQnJlYWtJdGVyYXRvciBD
IEFQSSA8L2gyPgorICoKKyAqIFRoZSBCcmVha0l0ZXJhdG9yIEMgQVBJIGRlZmluZXMgIG1ldGhv
ZHMgZm9yIGZpbmRpbmcgdGhlIGxvY2F0aW9uCisgKiBvZiBib3VuZGFyaWVzIGluIHRleHQuIFBv
aW50ZXIgdG8gYSBVQnJlYWtJdGVyYXRvciBtYWludGFpbiBhCisgKiBjdXJyZW50IHBvc2l0aW9u
IGFuZCBzY2FuIG92ZXIgdGV4dCByZXR1cm5pbmcgdGhlIGluZGV4IG9mIGNoYXJhY3RlcnMKKyAq
IHdoZXJlIGJvdW5kYXJpZXMgb2NjdXIuCisgKiA8cD4KKyAqIExpbmUgYm91bmRhcnkgYW5hbHlz
aXMgZGV0ZXJtaW5lcyB3aGVyZSBhIHRleHQgc3RyaW5nIGNhbiBiZSBicm9rZW4KKyAqIHdoZW4g
bGluZS13cmFwcGluZy4gVGhlIG1lY2hhbmlzbSBjb3JyZWN0bHkgaGFuZGxlcyBwdW5jdHVhdGlv
biBhbmQKKyAqIGh5cGhlbmF0ZWQgd29yZHMuCisgKiA8cD4KKyAqIFNlbnRlbmNlIGJvdW5kYXJ5
IGFuYWx5c2lzIGFsbG93cyBzZWxlY3Rpb24gd2l0aCBjb3JyZWN0CisgKiBpbnRlcnByZXRhdGlv
biBvZiBwZXJpb2RzIHdpdGhpbiBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb25zLCBhbmQKKyAqIHRy
YWlsaW5nIHB1bmN0dWF0aW9uIG1hcmtzIHN1Y2ggYXMgcXVvdGF0aW9uIG1hcmtzIGFuZCBwYXJl
bnRoZXNlcy4KKyAqIDxwPgorICogV29yZCBib3VuZGFyeSBhbmFseXNpcyBpcyB1c2VkIGJ5IHNl
YXJjaCBhbmQgcmVwbGFjZSBmdW5jdGlvbnMsIGFzCisgKiB3ZWxsIGFzIHdpdGhpbiB0ZXh0IGVk
aXRpbmcgYXBwbGljYXRpb25zIHRoYXQgYWxsb3cgdGhlIHVzZXIgdG8KKyAqIHNlbGVjdCB3b3Jk
cyB3aXRoIGEgZG91YmxlIGNsaWNrLiBXb3JkIHNlbGVjdGlvbiBwcm92aWRlcyBjb3JyZWN0Cisg
KiBpbnRlcnByZXRhdGlvbiBvZiBwdW5jdHVhdGlvbiBtYXJrcyB3aXRoaW4gYW5kIGZvbGxvd2lu
ZworICogd29yZHMuIENoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSB3b3JkLCBzdWNo
IGFzIHN5bWJvbHMgb3IKKyAqIHB1bmN0dWF0aW9uIG1hcmtzLCBoYXZlIHdvcmQtYnJlYWtzIG9u
IGJvdGggc2lkZXMuCisgKiA8cD4KKyAqIENoYXJhY3RlciBib3VuZGFyeSBhbmFseXNpcyBpZGVu
dGlmaWVzIHRoZSBib3VuZGFyaWVzIG9mCisgKiAiRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlcnMi
LCB3aGljaCBhcmUgZ3JvdXBpbmdzIG9mIGNvZGVwb2ludHMKKyAqIHRoYXQgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgY2hhcmFjdGVyLWxpa2UgdW5pdHMgZm9yIG1hbnkgdGV4dCBvcGVyYXRpb25zLgor
ICogUGxlYXNlIHNlZSBVbmljb2RlIFN0YW5kYXJkIEFubmV4ICMyOSwgVW5pY29kZSBUZXh0IFNl
Z21lbnRhdGlvbiwKKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjI5LyBmb3Ig
YWRkaXRpb25hbCBpbmZvcm1hdGlvbiAKKyAqIG9uIGdyYXBoZW1lIGNsdXN0ZXJzIGFuZCBndWlk
ZWxpbmVzIG9uIHRoZWlyIHVzZS4KKyAqIDxwPgorICogVGl0bGUgYm91bmRhcnkgYW5hbHlzaXMg
bG9jYXRlcyBhbGwgcG9zaXRpb25zLAorICogdHlwaWNhbGx5IHN0YXJ0cyBvZiB3b3JkcywgdGhh
dCBzaG91bGQgYmUgc2V0IHRvIFRpdGxlIENhc2UKKyAqIHdoZW4gdGl0bGUgY2FzaW5nIHRoZSB0
ZXh0LgorICogPHA+CisgKiBUaGUgdGV4dCBib3VuZGFyeSBwb3NpdGlvbnMgYXJlIGZvdW5kIGFj
Y29yZGluZyB0byB0aGUgcnVsZXMKKyAqIGRlc2NyaWJlZCBpbiBVbmljb2RlIFN0YW5kYXJkIEFu
bmV4ICMyOSwgVGV4dCBCb3VuZGFyaWVzLCBhbmQKKyAqIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXgg
IzE0LCBMaW5lIEJyZWFraW5nIFByb3BlcnRpZXMuICBUaGVzZQorICogYXJlIGF2YWlsYWJsZSBh
dCBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIxNC8gYW5kCisgKiBodHRwOi8vd3d3
LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8uCisgKiA8cD4KKyAqIEluIGFkZGl0aW9uIHRvIHRo
ZSBwbGFpbiBDIEFQSSBkZWZpbmVkIGluIHRoaXMgaGVhZGVyIGZpbGUsIGFuCisgKiBvYmplY3Qg
b3JpZW50ZWQgQysrIEFQSSB3aXRoIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyBkZWZpbmVk
IGluIHRoZQorICogZmlsZSBicmtpdGVyLmguCisgKiA8cD4KKyAqIENvZGUgc25pcHBldHMgaWxs
dXN0cmF0aW5nIHRoZSB1c2Ugb2YgdGhlIEJyZWFrIEl0ZXJhdG9yIEFQSXMKKyAqIGFyZSBhdmFp
bGFibGUgaW4gdGhlIElDVSBVc2VyIEd1aWRlLAorICogaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy91
c2VyZ3VpZGUvYm91bmRhcnlBbmFseXNpcy5odG1sCisgKiBhbmQgaW4gdGhlIHNhbXBsZSBwcm9n
cmFtIGljdS9zb3VyY2Uvc2FtcGxlcy9icmVhay9icmVhay5jcHAKKyAqLworCisvKiogVGhlIHBv
c3NpYmxlIHR5cGVzIG9mIHRleHQgYm91bmRhcmllcy4gIEBzdGFibGUgSUNVIDIuMCAqLwordHlw
ZWRlZiBlbnVtIFVCcmVha0l0ZXJhdG9yVHlwZSB7CisgIC8qKiBDaGFyYWN0ZXIgYnJlYWtzICBA
c3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19DSEFSQUNURVIgPSAwLAorICAvKiogV29yZCBicmVh
a3MgQHN0YWJsZSBJQ1UgMi4wICovCisgIFVCUktfV09SRCA9IDEsCisgIC8qKiBMaW5lIGJyZWFr
cyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19MSU5FID0gMiwKKyAgLyoqIFNlbnRlbmNlIGJy
ZWFrcyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19TRU5URU5DRSA9IDMsCisKKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgIC8qKgorICAgKiBUaXRsZSBDYXNlIGJyZWFrcworICAg
KiBUaGUgaXRlcmF0b3IgY3JlYXRlZCB1c2luZyB0aGlzIHR5cGUgbG9jYXRlcyB0aXRsZSBib3Vu
ZGFyaWVzIGFzIGRlc2NyaWJlZCBmb3IKKyAgICogVW5pY29kZSAzLjIgb25seS4gRm9yIFVuaWNv
ZGUgNC4wIGFuZCBhYm92ZSB0aXRsZSBib3VuZGFyeSBpdGVyYXRpb24sCisgICAqIHBsZWFzZSB1
c2UgV29yZCBCb3VuZGFyeSBpdGVyYXRvci4KKyAgICoKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDIu
OCBVc2UgdGhlIHdvcmQgYnJlYWsgaXRlcmF0b3IgZm9yIHRpdGxlY2FzaW5nIGZvciBVbmljb2Rl
IDQgYW5kIGxhdGVyLgorICAgKi8KKyAgVUJSS19USVRMRSA9IDQsCisjZW5kaWYgLyogVV9ISURF
X0RFUFJFQ0FURURfQVBJICovCisgIFVCUktfQ09VTlQgPSA1Cit9IFVCcmVha0l0ZXJhdG9yVHlw
ZTsKKworLyoqIFZhbHVlIGluZGljYXRpbmcgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4g
cmV0dXJuZWQuCisgKiAgQHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVUJSS19ET05FICgo
aW50MzJfdCkgLTEpCisKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRoZSB3b3JkIGJy
ZWFrIHRhZ3MgcmV0dXJuZWQgYnkKKyAqICBnZXRSdWxlU3RhdHVzKCkuICBBIHJhbmdlIG9mIHZh
bHVlcyBpcyBkZWZpbmVkIGZvciBlYWNoIGNhdGVnb3J5IG9mCisgKiAgd29yZCwgdG8gYWxsb3cg
Zm9yIGZ1cnRoZXIgc3ViZGl2aXNpb25zIG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2Vz
LgorICogIEFwcGxpY2F0aW9ucyBzaG91bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3
aXRoaW4gdGhlIHJhbmdlLCByYXRoZXIKKyAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2
YWx1ZXMuCisgKiAgQHN0YWJsZSBJQ1UgMi4yCisqLwordHlwZWRlZiBlbnVtIFVXb3JkQnJlYWsg
eworICAgIC8qKiBUYWcgdmFsdWUgZm9yICJ3b3JkcyIgdGhhdCBkbyBub3QgZml0IGludG8gYW55
IG9mIG90aGVyIGNhdGVnb3JpZXMuCisgICAgICogIEluY2x1ZGVzIHNwYWNlcyBhbmQgbW9zdCBw
dW5jdHVhdGlvbi4gKi8KKyAgICBVQlJLX1dPUkRfTk9ORSAgICAgICAgICAgPSAwLAorICAgIC8q
KiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3IgdW5jYXRlZ29yaXplZCB3b3Jkcy4gKi8KKyAgICBV
QlJLX1dPUkRfTk9ORV9MSU1JVCAgICAgPSAxMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29y
ZHMgdGhhdCBhcHBlYXIgdG8gYmUgbnVtYmVycywgbG93ZXIgbGltaXQuICAgICovCisgICAgVUJS
S19XT1JEX05VTUJFUiAgICAgICAgID0gMTAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRz
IHRoYXQgYXBwZWFyIHRvIGJlIG51bWJlcnMsIHVwcGVyIGxpbWl0LiAgICAqLworICAgIFVCUktf
V09SRF9OVU1CRVJfTElNSVQgICA9IDIwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyB0
aGF0IGNvbnRhaW4gbGV0dGVycywgZXhjbHVkaW5nCisgICAgICogIGhpcmFnYW5hLCBrYXRha2Fu
YSBvciBpZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzLCBsb3dlciBsaW1pdC4gICAgKi8KKyAgICBVQlJL
X1dPUkRfTEVUVEVSICAgICAgICAgPSAyMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMg
Y29udGFpbmluZyBsZXR0ZXJzLCB1cHBlciBsaW1pdCAgKi8KKyAgICBVQlJLX1dPUkRfTEVUVEVS
X0xJTUlUICAgPSAzMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMgY29udGFpbmluZyBr
YW5hIGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0tBTkEgICAgICAg
ICAgID0gMzAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcga2FuYSBj
aGFyYWN0ZXJzLCB1cHBlciBsaW1pdCAqLworICAgIFVCUktfV09SRF9LQU5BX0xJTUlUICAgICA9
IDQwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyBjb250YWluaW5nIGlkZW9ncmFwaGlj
IGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0lERU8gICAgICAgICAg
ID0gNDAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcgaWRlb2dyYXBo
aWMgY2hhcmFjdGVycywgdXBwZXIgbGltaXQgKi8KKyAgICBVQlJLX1dPUkRfSURFT19MSU1JVCAg
ICAgPSA1MDAKK30gVVdvcmRCcmVhazsKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRo
ZSBsaW5lIGJyZWFrIHRhZ3MgcmV0dXJuZWQgYnkgZ2V0UnVsZVN0YXR1cygpLgorICogIEEgcmFu
Z2Ugb2YgdmFsdWVzIGlzIGRlZmluZWQgZm9yIGVhY2ggY2F0ZWdvcnkgb2YKKyAqICB3b3JkLCB0
byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2YgYSBjYXRlZ29yeSBpbiBmdXR1cmUg
cmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBmb3IgdGFnIHZhbHVlcyBm
YWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICogIHRoYW4gZm9yIHNpbmdsZSBpbmRp
dmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgKKyovCit0eXBlZGVmIGVudW0gVUxp
bmVCcmVha1RhZyB7CisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igc29mdCBsaW5lIGJyZWFrcywgcG9z
aXRpb25zIGF0IHdoaWNoIGEgbGluZSBicmVhaworICAgICAgKiAgaXMgYWNjZXB0YWJsZSBidXQg
bm90IHJlcXVpcmVkICAgICAgICAgICAgICAgICovCisgICAgVUJSS19MSU5FX1NPRlQgICAgICAg
ICAgICA9IDAsCisgICAgLyoqIFVwcGVyIGJvdW5kIGZvciBzb2Z0IGxpbmUgYnJlYWtzLiAgICAg
ICAgICAgICAgKi8KKyAgICBVQlJLX0xJTkVfU09GVF9MSU1JVCAgICAgID0gMTAwLAorICAgIC8q
KiBUYWcgdmFsdWUgZm9yIGEgaGFyZCwgb3IgbWFuZGF0b3J5IGxpbmUgYnJlYWsgICovCisgICAg
VUJSS19MSU5FX0hBUkQgICAgICAgICAgICA9IDEwMCwKKyAgICAvKiogVXBwZXIgYm91bmQgZm9y
IGhhcmQgbGluZSBicmVha3MuICAgICAgICAgICAgICAqLworICAgIFVCUktfTElORV9IQVJEX0xJ
TUlUICAgICAgPSAyMDAKK30gVUxpbmVCcmVha1RhZzsKKworCisKKy8qKgorICogIEVudW0gY29u
c3RhbnRzIGZvciB0aGUgc2VudGVuY2UgYnJlYWsgdGFncyByZXR1cm5lZCBieSBnZXRSdWxlU3Rh
dHVzKCkuCisgKiAgQSByYW5nZSBvZiB2YWx1ZXMgaXMgZGVmaW5lZCBmb3IgZWFjaCBjYXRlZ29y
eSBvZgorICogIHNlbnRlbmNlLCB0byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2Yg
YSBjYXRlZ29yeSBpbiBmdXR1cmUgcmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBj
aGVjayBmb3IgdGFnIHZhbHVlcyBmYWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICog
IHRoYW4gZm9yIHNpbmdsZSBpbmRpdmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgK
KyovCit0eXBlZGVmIGVudW0gVVNlbnRlbmNlQnJlYWtUYWcgeworICAgIC8qKiBUYWcgdmFsdWUg
Zm9yIGZvciBzZW50ZW5jZXMgIGVuZGluZyB3aXRoIGEgc2VudGVuY2UgdGVybWluYXRvcgorICAg
ICAgKiAoJy4nLCAnPycsICchJywgZXRjLikgY2hhcmFjdGVyLCBwb3NzaWJseSBmb2xsb3dlZCBi
eSBhCisgICAgICAqIGhhcmQgc2VwYXJhdG9yIChDUiwgTEYsIFBTLCBldGMuKQorICAgICAgKi8K
KyAgICBVQlJLX1NFTlRFTkNFX1RFUk0gICAgICAgPSAwLAorICAgIC8qKiBVcHBlciBib3VuZCBm
b3IgdGFncyBmb3Igc2VudGVuY2VzIGVuZGVkIGJ5IHNlbnRlbmNlIHRlcm1pbmF0b3JzLiAgICAq
LworICAgIFVCUktfU0VOVEVOQ0VfVEVSTV9MSU1JVCA9IDEwMCwKKyAgICAvKiogVGFnIHZhbHVl
IGZvciBmb3Igc2VudGVuY2VzIHRoYXQgZG8gbm90IGNvbnRhaW4gYW4gZW5kaW5nCisgICAgICAq
IHNlbnRlbmNlIHRlcm1pbmF0b3IgKCcuJywgJz8nLCAnIScsIGV0Yy4pIGNoYXJhY3RlciwgYnV0
CisgICAgICAqIGFyZSBlbmRlZCBvbmx5IGJ5IGEgaGFyZCBzZXBhcmF0b3IgKENSLCBMRiwgUFMs
IGV0Yy4pIG9yIGVuZCBvZiBpbnB1dC4KKyAgICAgICovCisgICAgVUJSS19TRU5URU5DRV9TRVAg
ICAgICAgID0gMTAwLAorICAgIC8qKiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3Igc2VudGVuY2Vz
IGVuZGVkIGJ5IGEgc2VwYXJhdG9yLiAgICAgICAgICAgICAgKi8KKyAgICBVQlJLX1NFTlRFTkNF
X1NFUF9MSU1JVCAgPSAyMDAKKyAgICAvKiogVGFnIHZhbHVlIGZvciBhIGhhcmQsIG9yIG1hbmRh
dG9yeSBsaW5lIGJyZWFrICAqLworfSBVU2VudGVuY2VCcmVha1RhZzsKKworCisvKioKKyAqIE9w
ZW4gYSBuZXcgVUJyZWFrSXRlcmF0b3IgZm9yIGxvY2F0aW5nIHRleHQgYm91bmRhcmllcyBmb3Ig
YSBzcGVjaWZpZWQgbG9jYWxlLgorICogQSBVQnJlYWtJdGVyYXRvciBtYXkgYmUgdXNlZCBmb3Ig
ZGV0ZWN0aW5nIGNoYXJhY3RlciwgbGluZSwgd29yZCwKKyAqIGFuZCBzZW50ZW5jZSBicmVha3Mg
aW4gdGV4dC4KKyAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIFVCcmVha0l0ZXJhdG9yIHRvIG9w
ZW46IG9uZSBvZiBVQlJLX0NIQVJBQ1RFUiwgVUJSS19XT1JELAorICogVUJSS19MSU5FLCBVQlJL
X1NFTlRFTkNFCisgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgc3BlY2lmeWluZyB0aGUgdGV4
dC1icmVha2luZyBjb252ZW50aW9ucy4KKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIGl0
ZXJhdGVkIG92ZXIuCisgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBB
IFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgorICogQHJldHVybiBBIFVCcmVha0l0
ZXJhdG9yIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAqIEBzZWUgdWJya19vcGVuUnVsZXMK
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJdGVyYXRvciogVV9FWFBP
UlQyCit1YnJrX29wZW4oVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUsCisgICAgICBjb25zdCBjaGFy
ICpsb2NhbGUsCisgICAgICBjb25zdCBVQ2hhciAqdGV4dCwKKyAgICAgIGludDMyX3QgdGV4dExl
bmd0aCwKKyAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3BlbiBhIG5ldyBV
QnJlYWtJdGVyYXRvciBmb3IgbG9jYXRpbmcgdGV4dCBib3VuZGFyaWVzIHVzaW5nIHNwZWNpZmll
ZCBicmVha2luZyBydWxlcy4KKyAqIFRoZSBydWxlIHN5bnRheCBpcyAuLi4gKFRCRCkKKyAqIEBw
YXJhbSBydWxlcyBBIHNldCBvZiBydWxlcyBzcGVjaWZ5aW5nIHRoZSB0ZXh0IGJyZWFraW5nIGNv
bnZlbnRpb25zLgorICogQHBhcmFtIHJ1bGVzTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyBpbiBydWxlcywgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHRleHQgVGhl
IHRleHQgdG8gYmUgaXRlcmF0ZWQgb3Zlci4gIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIHVi
cmtfc2V0VGV4dCgpIGlzCisgKiAgICAgICAgdXNlZCB0byBzcGVjaWZ5IHRoZSB0ZXh0IHRvIGJl
IGl0ZXJhdGVkLgorICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IGluIHRleHQsIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KKyAqIEBwYXJhbSBwYXJzZUVyciAg
IFJlY2VpdmVzIHBvc2l0aW9uIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciBhbnkgc3ludGF4
IGVycm9ycworICogICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQgd2hpbGUgcGFyc2luZyB0aGUg
cnVsZXMuCisgKiBAcGFyYW0gc3RhdHVzIEEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJv
cnMuCisgKiBAcmV0dXJuIEEgVUJyZWFrSXRlcmF0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcnVsZXMu
CisgKiBAc2VlIHVicmtfb3BlbgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIFVC
cmVha0l0ZXJhdG9yKiBVX0VYUE9SVDIKK3Vicmtfb3BlblJ1bGVzKGNvbnN0IFVDaGFyICAgICAq
cnVsZXMsCisgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgcnVsZXNMZW5ndGgsCisgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAgICAgKnRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90
ICAgICAgICAgIHRleHRMZW5ndGgsCisgICAgICAgICAgICAgICBVUGFyc2VFcnJvciAgICAgKnBh
cnNlRXJyLAorICAgICAgICAgICAgICAgVUVycm9yQ29kZSAgICAgICpzdGF0dXMpOworCisvKioK
KyAqIFRocmVhZCBzYWZlIGNsb25pbmcgb3BlcmF0aW9uCisgKiBAcGFyYW0gYmkgaXRlcmF0b3Ig
dG8gYmUgY2xvbmVkCisgKiBAcGFyYW0gc3RhY2tCdWZmZXIgPGVtPkRlcHJlY2F0ZWQgZnVuY3Rp
b25hbGl0eSBhcyBvZiBJQ1UgNTIsIHVzZSBOVUxMLjwvZW0+PGJyPgorICogIHVzZXIgYWxsb2Nh
dGVkIHNwYWNlIGZvciB0aGUgbmV3IGNsb25lLiBJZiBOVUxMIG5ldyBtZW1vcnkgd2lsbCBiZSBh
bGxvY2F0ZWQuCisgKiAgSWYgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gsIG5ldyBtZW1vcnkg
d2lsbCBiZSBhbGxvY2F0ZWQuCisgKiAgQ2xpZW50cyBjYW4gdXNlIHRoZSBVX0JSS19TQUZFQ0xP
TkVfQlVGRkVSU0laRS4KKyAqIEBwYXJhbSBwQnVmZmVyU2l6ZSA8ZW0+RGVwcmVjYXRlZCBmdW5j
dGlvbmFsaXR5IGFzIG9mIElDVSA1MiwgdXNlIE5VTEwgb3IgMS48L2VtPjxicj4KKyAqICBwb2lu
dGVyIHRvIHNpemUgb2YgYWxsb2NhdGVkIHNwYWNlLgorICogIElmICpwQnVmZmVyU2l6ZSA9PSAw
LCBhIHN1ZmZpY2llbnQgc2l6ZSBmb3IgdXNlIGluIGNsb25pbmcgd2lsbAorICogIGJlIHJldHVy
bmVkICgncHJlLWZsaWdodGluZycpCisgKiAgSWYgKnBCdWZmZXJTaXplIGlzIG5vdCBlbm91Z2gg
Zm9yIGEgc3RhY2stYmFzZWQgc2FmZSBjbG9uZSwKKyAqICBuZXcgbWVtb3J5IHdpbGwgYmUgYWxs
b2NhdGVkLgorICogQHBhcmFtIHN0YXR1cyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBvcGVyYXRp
b24gd2VudCBvbiBzbW9vdGhseSBvciB0aGVyZSB3ZXJlIGVycm9ycworICogIEFuIGluZm9ybWF0
aW9uYWwgc3RhdHVzIHZhbHVlLCBVX1NBRkVDTE9ORV9BTExPQ0FURURfRVJST1IsIGlzIHVzZWQg
aWYgYW55IGFsbG9jYXRpb25zIHdlcmUgbmVjZXNzYXJ5LgorICogQHJldHVybiBwb2ludGVyIHRv
IHRoZSBuZXcgY2xvbmUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJ
dGVyYXRvciAqIFVfRVhQT1JUMgordWJya19zYWZlQ2xvbmUoCisgICAgICAgICAgY29uc3QgVUJy
ZWFrSXRlcmF0b3IgKmJpLAorICAgICAgICAgIHZvaWQgKnN0YWNrQnVmZmVyLAorICAgICAgICAg
IGludDMyX3QgKnBCdWZmZXJTaXplLAorICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisK
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisKKy8qKgorICAqIEEgcmVjb21tZW5kZWQg
c2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUgbWVtb3J5IGJ1ZmZlciB0byBiZSBwYXNzZWQgdG8gdWJy
a19zYXZlQ2xvbmUoKS4KKyAgKiBAZGVwcmVjYXRlZCBJQ1UgNTIuIERvIG5vdCByZWx5IG9uIHVi
cmtfc2FmZUNsb25lKCkgY2xvbmluZyBpbnRvIGFueSBwcm92aWRlZCBidWZmZXIuCisgICovCisj
ZGVmaW5lIFVfQlJLX1NBRkVDTE9ORV9CVUZGRVJTSVpFIDEKKworI2VuZGlmIC8qIFVfSElERV9E
RVBSRUNBVEVEX0FQSSAqLworCisvKioKKyogQ2xvc2UgYSBVQnJlYWtJdGVyYXRvci4KKyogT25j
ZSBjbG9zZWQsIGEgVUJyZWFrSXRlcmF0b3IgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFy
YW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIGNsb3NlLgorICogQHN0YWJsZSBJQ1UgMi4wCisq
LworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VicmtfY2xvc2UoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8q
KgorICogXGNsYXNzIExvY2FsVUJyZWFrSXRlcmF0b3JQb2ludGVyCisgKiAiU21hcnQgcG9pbnRl
ciIgY2xhc3MsIGNsb3NlcyBhIFVCcmVha0l0ZXJhdG9yIHZpYSB1YnJrX2Nsb3NlKCkuCisgKiBG
b3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoK
KyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFi
bGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVQnJlYWtJ
dGVyYXRvclBvaW50ZXIsIFVCcmVha0l0ZXJhdG9yLCB1YnJrX2Nsb3NlKTsKKworVV9OQU1FU1BB
Q0VfRU5ECisKKyNlbmRpZgorCisvKioKKyAqIFNldHMgYW4gZXhpc3RpbmcgaXRlcmF0b3IgdG8g
cG9pbnQgdG8gYSBuZXcgcGllY2Ugb2YgdGV4dAorICogQHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0
byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIHNldAorICogQHBhcmFtIHRleHRM
ZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgdGV4dAorICogQHBhcmFtIHN0YXR1cyBUaGUgZXJyb3Ig
Y29kZQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1
YnJrX3NldFRleHQoVUJyZWFrSXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiAgICB0ZXh0LAorICAgICAgICAgICAgIGludDMyX3QgICAgICAgICB0ZXh0TGVuZ3RoLAorICAg
ICAgICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKy8qKgorICogU2V0cyBhbiBl
eGlzdGluZyBpdGVyYXRvciB0byBwb2ludCB0byBhIG5ldyBwaWVjZSBvZiB0ZXh0LgorICoKKyAq
IEFsbCBpbmRleCBwb3NpdGlvbnMgcmV0dXJuZWQgYnkgYnJlYWsgaXRlcmF0b3IgZnVuY3Rpb25z
IGFyZQorICogbmF0aXZlIGluZGljZXMgZnJvbSB0aGUgVVRleHQuIEZvciBleGFtcGxlLCB3aGVu
IGJyZWFraW5nIFVURi04CisgKiBlbmNvZGVkIHRleHQsIHRoZSBicmVhayBwb3NpdGlvbnMgcmV0
dXJuZWQgYnkgXHJlZiB1YnJrX25leHQsIFxyZWYgdWJya19wcmV2aW91cywgZXRjLgorICogd2ls
bCBiZSBVVEYtOCBzdHJpbmcgaW5kaWNlcywgbm90IFVURi0xNiBwb3NpdGlvbnMuCisgKgorICog
QHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRv
IGJlIHNldC4KKyAqICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gbWFrZXMgYSBzaGFsbG93IGNs
b25lIG9mIHRoZSBzdXBwbGllZCBVVGV4dC4gIFRoaXMgbWVhbnMKKyAqICAgICAgICAgICAgIHRo
YXQgdGhlIGNhbGxlciBpcyBmcmVlIHRvIGltbWVkaWF0ZWx5IGNsb3NlIG9yIG90aGVyd2lzZSBy
ZXVzZSB0aGUKKyAqICAgICAgICAgICAgIFVUZXh0IHRoYXQgd2FzIHBhc3NlZCBhcyBhIHBhcmFt
ZXRlciwgYnV0IHRoYXQgdGhlIHVuZGVybHlpbmcgdGV4dCBpdHNlbGYKKyAqICAgICAgICAgICAg
IG11c3Qgbm90IGJlIGFsdGVyZWQgd2hpbGUgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGUgYnJlYWsg
aXRlcmF0b3IuCisgKiBAcGFyYW0gc3RhdHVzIFRoZSBlcnJvciBjb2RlCisgKiBAc3RhYmxlIElD
VSAzLjQKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3Vicmtfc2V0VVRleHQoVUJyZWFr
SXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIFVUZXh0KiAgICAgICAgICB0ZXh0LAorICAgICAg
ICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKworLyoqCisgKiBEZXRlcm1pbmUg
dGhlIG1vc3QgcmVjZW50bHktcmV0dXJuZWQgdGV4dCBib3VuZGFyeS4KKyAqCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBp
bmRleCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IFxyZWYgdWJya19uZXh0LCBccmVmIHVicmtf
cHJldmlvdXMsCisgKiBccmVmIHVicmtfZmlyc3QsIG9yIFxyZWYgdWJya19sYXN0LgorICogQHN0
YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2N1cnJl
bnQoY29uc3QgVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVy
YXRvciB0byB0aGUgYm91bmRhcnkgZm9sbG93aW5nIHRoZSBjdXJyZW50IGJvdW5kYXJ5LgorICoK
KyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUg
Y2hhcmFjdGVyIGluZGV4IG9mIHRoZSBuZXh0IHRleHQgYm91bmRhcnksIG9yIFVCUktfRE9ORQor
ICogaWYgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4gcmV0dXJuZWQuCisgKiBAc2VlIHVi
cmtfcHJldmlvdXMKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVf
RVhQT1JUMgordWJya19uZXh0KFVCcmVha0l0ZXJhdG9yICpiaSk7CisKKy8qKgorICogU2V0IHRo
ZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgYm91bmRhcnkgcHJlY2VkaW5nIHRoZSBjdXJyZW50
IGJvdW5kYXJ5LgorICoKKyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgor
ICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBwcmVjZWRpbmcgdGV4dCBib3Vu
ZGFyeSwgb3IgVUJSS19ET05FCisgKiBpZiBhbGwgdGV4dCBib3VuZGFyaWVzIGhhdmUgYmVlbiBy
ZXR1cm5lZC4KKyAqIEBzZWUgdWJya19uZXh0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9T
VEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VicmtfcHJldmlvdXMoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisgKiBUaGlzIGlz
IG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgaW5kZXggMCBvZiB0aGUgdGV4dC4KKyAqIEBwYXJhbSBi
aSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGlu
ZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAq
IEBzZWUgdWJya19sYXN0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3VicmtfZmlyc3QoVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBT
ZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBpbW1lZGlhdGVseSA8RU0+YmV5
b25kPC9FTT4gdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisg
KiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIuCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBv
ZmZzZXQgaW1tZWRpYXRlbHkgPEVNPmJleW9uZDwvRU0+IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0
aGUKKyAqIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAqIEBzZWUgdWJya19maXJzdAorICogQHN0YWJs
ZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2xhc3QoVUJy
ZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRv
IHRoZSBmaXJzdCBib3VuZGFyeSBwcmVjZWRpbmcgdGhlIHNwZWNpZmllZCBvZmZzZXQuCisgKiBU
aGUgbmV3IHBvc2l0aW9uIGlzIGFsd2F5cyBzbWFsbGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RP
TkUuCisgKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBv
ZmZzZXQgVGhlIG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQg
Ym91bmRhcnkgcHJlY2VkaW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX2Zv
bGxvd2luZworICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX3ByZWNlZGluZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMy
X3Qgb2Zmc2V0KTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byB0aGUgZmlyc3Qg
Ym91bmRhcnkgZm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgorICogVGhlIHZhbHVlIHJl
dHVybmVkIGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuCisgKiBA
cGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBvZmZzZXQgVGhl
IG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQgYm91bmRhcnkg
Zm9sbG93aW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX3ByZWNlZGluZwor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJr
X2ZvbGxvd2luZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0
KTsKKworLyoqCisqIEdldCBhIGxvY2FsZSBmb3Igd2hpY2ggdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBpcyBhdmFpbGFibGUuCisqIEEgVUJyZWFrSXRlcmF0b3IgaW4gYSBsb2NhbGUgcmV0dXJu
ZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhlIGNvcnJlY3QKKyogdGV4dCBicmVh
a2luZyBmb3IgdGhlIGxvY2FsZS4KKyogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZGVz
aXJlZCBsb2NhbGUuCisqIEByZXR1cm4gQSBsb2NhbGUgZm9yIHdoaWNoIG51bWJlciB0ZXh0IGJy
ZWFraW5nIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVi
cmtfY291bnRBdmFpbGFibGUKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3Qg
Y2hhciogVV9FWFBPUlQyCit1YnJrX2dldEF2YWlsYWJsZShpbnQzMl90IGluZGV4KTsKKworLyoq
CisqIERldGVybWluZSBob3cgbWFueSBsb2NhbGVzIGhhdmUgdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBhdmFpbGFibGUuCisqIFRoaXMgZnVuY3Rpb24gaXMgbW9zdCB1c2VmdWwgYXMgZGV0ZXJt
aW5pbmcgdGhlIGxvb3AgZW5kaW5nIGNvbmRpdGlvbiBmb3IKKyogY2FsbHMgdG8gXHJlZiB1YnJr
X2dldEF2YWlsYWJsZS4KKyogQHJldHVybiBUaGUgbnVtYmVyIG9mIGxvY2FsZXMgZm9yIHdoaWNo
IHRleHQgYnJlYWtpbmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgorKiBAc2VlIHVicmtfZ2V0
QXZhaWxhYmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX2NvdW50QXZhaWxhYmxlKHZvaWQpOworCisKKy8qKgorKiBSZXR1cm5zIHRydWUg
aWYgdGhlIHNwZWNmaWVkIHBvc2l0aW9uIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uICBBcyBhIHNp
ZGUKKyogZWZmZWN0LCBsZWF2ZXMgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBi
b3VuZGFyeSBwb3NpdGlvbiBhdAorKiBvciBhZnRlciAib2Zmc2V0Ii4KKyogQHBhcmFtIGJpIFRo
ZSBicmVhayBpdGVyYXRvciB0byB1c2UuCisqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCB0byBj
aGVjay4KKyogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24u
CisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFICBVQm9vbCBVX0VYUE9SVDIKK3Vicmtf
aXNCb3VuZGFyeShVQnJlYWtJdGVyYXRvciAqYmksIGludDMyX3Qgb2Zmc2V0KTsKKworLyoqCisg
KiBSZXR1cm4gdGhlIHN0YXR1cyBmcm9tIHRoZSBicmVhayBydWxlIHRoYXQgZGV0ZXJtaW5lZCB0
aGUgbW9zdCByZWNlbnRseQorICogcmV0dXJuZWQgYnJlYWsgcG9zaXRpb24uICBUaGUgdmFsdWVz
IGFwcGVhciBpbiB0aGUgcnVsZSBzb3VyY2UKKyAqIHdpdGhpbiBicmFja2V0cywgezEyM30sIGZv
ciBleGFtcGxlLiAgRm9yIHJ1bGVzIHRoYXQgZG8gbm90IHNwZWNpZnkgYQorICogc3RhdHVzLCBh
IGRlZmF1bHQgdmFsdWUgb2YgMCBpcyByZXR1cm5lZC4KKyAqIDxwPgorICogRm9yIHdvcmQgYnJl
YWsgaXRlcmF0b3JzLCB0aGUgcG9zc2libGUgdmFsdWVzIGFyZSBkZWZpbmVkIGluIGVudW0gVVdv
cmRCcmVhay4KKyAqIEBzdGFibGUgSUNVIDIuMgorICovCitVX1NUQUJMRSAgaW50MzJfdCBVX0VY
UE9SVDIKK3VicmtfZ2V0UnVsZVN0YXR1cyhVQnJlYWtJdGVyYXRvciAqYmkpOworCisvKioKKyAq
IEdldCB0aGUgc3RhdHVzZXMgZnJvbSB0aGUgYnJlYWsgcnVsZXMgdGhhdCBkZXRlcm1pbmVkIHRo
ZSBtb3N0IHJlY2VudGx5CisgKiByZXR1cm5lZCBicmVhayBwb3NpdGlvbi4gIFRoZSB2YWx1ZXMg
YXBwZWFyIGluIHRoZSBydWxlIHNvdXJjZQorICogd2l0aGluIGJyYWNrZXRzLCB7MTIzfSwgZm9y
IGV4YW1wbGUuICBUaGUgZGVmYXVsdCBzdGF0dXMgdmFsdWUgZm9yIHJ1bGVzCisgKiB0aGF0IGRv
IG5vdCBleHBsaWNpdGx5IHByb3ZpZGUgb25lIGlzIHplcm8uCisgKiA8cD4KKyAqIEZvciB3b3Jk
IGJyZWFrIGl0ZXJhdG9ycywgdGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiBlbnVt
IFVXb3JkQnJlYWsuCisgKiBAcGFyYW0gYmkgICAgICAgIFRoZSBicmVhayBpdGVyYXRvciB0byB1
c2UKKyAqIEBwYXJhbSBmaWxsSW5WZWMgYW4gYXJyYXkgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhl
IHN0YXR1cyB2YWx1ZXMuCisgKiBAcGFyYW0gY2FwYWNpdHkgIHRoZSBsZW5ndGggb2YgdGhlIHN1
cHBsaWVkIHZlY3Rvci4gIEEgbGVuZ3RoIG9mIHplcm8gY2F1c2VzCisgKiAgICAgICAgICAgICAg
ICAgIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0dXMgdmFsdWVzLCBp
biB0aGUKKyAqICAgICAgICAgICAgICAgICAgbm9ybWFsIHdheSwgd2l0aG91dCBhdHRlbXRwaW5n
IHRvIHN0b3JlIGFueSB2YWx1ZXMuCisgKiBAcGFyYW0gc3RhdHVzICAgIHJlY2VpdmVzIGVycm9y
IGNvZGVzLgorICogQHJldHVybiAgICAgICAgICBUaGUgbnVtYmVyIG9mIHJ1bGUgc3RhdHVzIHZh
bHVlcyBmcm9tIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lZAorICogICAgICAgICAgICAgICAgICB0aGUg
bW9zdCByZWNlbnQgYm91bmRhcnkgcmV0dXJuZWQgYnkgdGhlIGJyZWFrIGl0ZXJhdG9yLgorICog
QHN0YWJsZSBJQ1UgMy4wCisgKi8KK1VfU1RBQkxFICBpbnQzMl90IFVfRVhQT1JUMgordWJya19n
ZXRSdWxlU3RhdHVzVmVjKFVCcmVha0l0ZXJhdG9yICpiaSwgaW50MzJfdCAqZmlsbEluVmVjLCBp
bnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIFJldHVybiB0
aGUgbG9jYWxlIG9mIHRoZSBicmVhayBpdGVyYXRvci4gWW91IGNhbiBjaG9vc2UgYmV0d2VlbiB0
aGUgdmFsaWQgYW5kCisgKiB0aGUgYWN0dWFsIGxvY2FsZS4KKyAqIEBwYXJhbSBiaSBicmVhayBp
dGVyYXRvcgorICogQHBhcmFtIHR5cGUgbG9jYWxlIHR5cGUgKHZhbGlkIG9yIGFjdHVhbCkKKyAq
IEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZQorICogQHJldHVybiBsb2NhbGUgc3RyaW5nCisgKiBA
c3RhYmxlIElDVSAyLjgKKyAqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1YnJr
X2dldExvY2FsZUJ5VHlwZShjb25zdCBVQnJlYWtJdGVyYXRvciAqYmksIFVMb2NEYXRhTG9jYWxl
VHlwZSB0eXBlLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisvKioKKyAgKiAgU2V0IHRoZSBzdWJq
ZWN0IHRleHQgc3RyaW5nIHVwb24gd2hpY2ggdGhlIGJyZWFrIGl0ZXJhdG9yIGlzIG9wZXJhdGlu
ZworICAqICB3aXRob3V0IGNoYW5naW5nIGFueSBvdGhlciBhc3BlY3Qgb2YgdGhlIHN0YXRlLgor
ICAqICBUaGUgbmV3IGFuZCBwcmV2aW91cyB0ZXh0IHN0cmluZ3MgbXVzdCBoYXZlIHRoZSBzYW1l
IGNvbnRlbnQuCisgICoKKyAgKiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGlu
IGVudmlyb25tZW50cyB3aGVyZSBJQ1UgaXMgb3BlcmF0aW5nIG9uCisgICogIHN0cmluZ3MgdGhh
dCBtYXkgbW92ZSBhcm91bmQgaW4gbWVtb3J5LiAgSXQgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9y
IG5vdGlmeWluZworICAqICBJQ1UgdGhhdCB0aGUgc3RyaW5nIGhhcyBiZWVuIHJlbG9jYXRlZCwg
YW5kIHByb3ZpZGluZyBhIG5ldyBVVGV4dCB0byBhY2Nlc3MgdGhlCisgICogIHN0cmluZyBpbiBp
dHMgbmV3IHBvc2l0aW9uLgorICAqCisgICogIE5vdGUgdGhhdCB0aGUgYnJlYWsgaXRlcmF0b3Ig
bmV2ZXIgY29waWVzIHRoZSB1bmRlcmx5aW5nIHRleHQKKyAgKiAgb2YgYSBzdHJpbmcgYmVpbmcg
cHJvY2Vzc2VkLCBidXQgYWx3YXlzIG9wZXJhdGVzIGRpcmVjdGx5IG9uIHRoZSBvcmlnaW5hbCB0
ZXh0CisgICogIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLiBSZWZyZXNoaW5nIHNpbXBseSBkcm9wcyB0
aGUgcmVmZXJlbmNlcyB0byB0aGUgb2xkIHRleHQKKyAgKiAgYW5kIHJlcGxhY2VzIHRoZW0gd2l0
aCByZWZlcmVuY2VzIHRvIHRoZSBuZXcuCisgICoKKyAgKiAgQ2F1dGlvbjogIHRoaXMgZnVuY3Rp
b24gaXMgbm9ybWFsbHkgdXNlZCBvbmx5IGJ5IHZlcnkgc3BlY2lhbGl6ZWQKKyAgKiAgICAgICAg
ICAgIHN5c3RlbS1sZXZlbCBjb2RlLiAgIE9uZSBleGFtcGxlIHVzZSBjYXNlIGlzIHdpdGggZ2Fy
YmFnZSBjb2xsZWN0aW9uCisgICogICAgICAgICAgICB0aGF0IG1vdmVzIHRoZSB0ZXh0IGluIG1l
bW9yeS4KKyAgKgorICAqIEBwYXJhbSBiaSAgICAgICAgIFRoZSBicmVhayBpdGVyYXRvci4KKyAg
KiBAcGFyYW0gdGV4dCAgICAgICBUaGUgbmV3IChtb3ZlZCkgdGV4dCBzdHJpbmcuCisgICogQHBh
cmFtIHN0YXR1cyAgICAgUmVjZWl2ZXMgZXJyb3JzIGRldGVjdGVkIGJ5IHRoaXMgZnVuY3Rpb24u
CisgICoKKyAgKiBAc3RhYmxlIElDVSA0OQorICAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIK
K3VicmtfcmVmcmVzaFVUZXh0KFVCcmVha0l0ZXJhdG9yICpiaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVVRleHQgICAgICAgICAgKnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgICAgICpzdGF0dXMpOworCisjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0JSRUFLX0lU
RVJBVElPTiAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dXRleHQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRleHQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDMx
OTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIyMjE1ZTY0ZmYzMzllCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5oCkBAIC0wLDAgKzEsMTYwMCBAQAorLyoKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMiwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMu
ICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIGZp
bGUgbmFtZTogIHV0ZXh0LmgKKyogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIHRhYiBzaXpl
OiAgIDggKG5vdCB1c2VkKQorKiAgIGluZGVudGF0aW9uOjQKKyoKKyogICBjcmVhdGVkIG9uOiAy
MDA0b2N0MDYKKyogICBjcmVhdGVkIGJ5OiBNYXJrdXMgVy4gU2NoZXJlcgorKi8KKworI2lmbmRl
ZiBfX1VURVhUX0hfXworI2RlZmluZSBfX1VURVhUX0hfXworCisvKioKKyAqIFxmaWxlCisgKiBc
YnJpZWYgQyBBUEk6IEFic3RyYWN0IFVuaWNvZGUgVGV4dCBBUEkKKyAqCisgKiBUaGUgVGV4dCBB
Y2Nlc3MgQVBJIHByb3ZpZGVzIGEgbWVhbnMgdG8gYWxsb3cgdGV4dCB0aGF0IGlzIHN0b3JlZCBp
biBhbHRlcm5hdGl2ZQorICogZm9ybWF0cyB0byB3b3JrIHdpdGggSUNVIHNlcnZpY2VzLiAgSUNV
IG5vcm1hbGx5IG9wZXJhdGVzIG9uIHRleHQgdGhhdCBpcworICogc3RvcmVkIGluIFVURi0xNiBm
b3JtYXQsIGluIChVQ2hhciAqKSBhcnJheXMgZm9yIHRoZSBDIEFQSXMgb3IgYXMgdHlwZQorICog
VW5pY29kZVN0cmluZyBmb3IgQysrIEFQSXMuCisgKgorICogSUNVIFRleHQgQWNjZXNzIGFsbG93
cyBvdGhlciBmb3JtYXRzLCBzdWNoIGFzIFVURi04IG9yIG5vbi1jb250aWd1b3VzCisgKiBVVEYt
MTYgc3RyaW5ncywgdG8gYmUgcGxhY2VkIGluIGEgVVRleHQgd3JhcHBlciBhbmQgdGhlbiBwYXNz
ZWQgdG8gSUNVIHNlcnZpY2VzLgorICoKKyAqIFRoZXJlIGFyZSB0aHJlZSBnZW5lcmFsIGNsYXNz
ZXMgb2YgdXNhZ2UgZm9yIFVUZXh0OgorICoKKyAqICAgICBBcHBsaWNhdGlvbiBMZXZlbCBVc2Uu
ICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB1c2FnZSAtIGFwcGxpY2F0aW9ucyB3b3VsZAorICogICAg
IHVzZSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMgb24gdGhlaXIgaW5wdXQgdGV4
dCwgYW5kIHBhc3MKKyAqICAgICB0aGUgcmVzdWx0aW5nIFVUZXh0IHRvIHRoZSBkZXNpcmVkIElD
VSBzZXJ2aWNlLgorICoKKyAqICAgICBTZWNvbmQgaXMgdXNhZ2UgaW4gSUNVIFNlcnZpY2VzLCBz
dWNoIGFzIGJyZWFrIGl0ZXJhdGlvbiwgdGhhdCB3aWxsIG5lZWQgdG8KKyAqICAgICBvcGVyYXRl
IG9uIGlucHV0IHByZXNlbnRlZCB0byB0aGVtIGFzIGEgVVRleHQuICBUaGVzZSBpbXBsZW1lbnRh
dGlvbnMKKyAqICAgICB3aWxsIG5lZWQgdG8gdXNlIHRoZSBpdGVyYXRpb24gYW5kIHJlbGF0ZWQg
VVRleHQgZnVuY3Rpb25zIHRvIGdhaW4KKyAqICAgICBhY2Nlc3MgdG8gdGhlIGFjdHVhbCB0ZXh0
LgorICoKKyAqICAgICBUaGUgdGhpcmQgY2xhc3Mgb2YgVVRleHQgdXNlcnMgYXJlICJ0ZXh0IHBy
b3ZpZGVycy4iICBUaGVzZSBhcmUgdGhlCisgKiAgICAgVVRleHQgaW1wbGVtZW50YXRpb25zIGZv
ciB0aGUgdmFyaW91cyB0ZXh0IHN0b3JhZ2UgZm9ybWF0cy4gIEFuIGFwcGxpY2F0aW9uCisgKiAg
ICAgb3Igc3lzdGVtIHdpdGggYSB1bmlxdWUgdGV4dCBzdG9yYWdlIGZvcm1hdCBjYW4gaW1wbGVt
ZW50IGEgc2V0IG9mCisgKiAgICAgVVRleHQgcHJvdmlkZXIgZnVuY3Rpb25zIGZvciB0aGF0IGZv
cm1hdCwgd2hpY2ggd2lsbCB0aGVuIGFsbG93CisgKiAgICAgSUNVIHNlcnZpY2VzIHRvIG9wZXJh
dGUgb24gdGhhdCBmb3JtYXQuCisgKgorICoKKyAqIDxlbT5JdGVyYXRpbmcgb3ZlciB0ZXh0PC9l
bT4KKyAqCisgKiBIZXJlIGlzIHNhbXBsZSBjb2RlIGZvciBhIGZvcndhcmQgaXRlcmF0aW9uIG92
ZXIgdGhlIGNvbnRlbnRzIG9mIGEgVVRleHQKKyAqCisgKiBcY29kZQorICogICAgVUNoYXIzMiAg
YzsKKyAqICAgIFVUZXh0ICAgICp1dCA9IHdoYXRldmVyKCk7CisgKgorICogICAgZm9yIChjPXV0
ZXh0X25leHQzMkZyb20odXQsIDApOyBjPj0wOyBjPXV0ZXh0X25leHQzMih1dCkpIHsKKyAqICAg
ICAgIC8vIGRvIHdoYXRldmVyIHdpdGggdGhlIGNvZGVwb2ludCBjIGhlcmUuCisgKiAgICB9Cisg
KiBcZW5kY29kZQorICoKKyAqIEFuZCBoZXJlIGlzIHNpbWlsYXIgY29kZSB0byBpdGVyYXRlIGlu
IHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgZnJvbSB0aGUgZW5kCisgKiBvZiB0aGUgdGV4dCB0b3dh
cmRzIHRoZSBiZWdpbm5pbmcuCisgKgorICogXGNvZGUKKyAqICAgIFVDaGFyMzIgIGM7CisgKiAg
ICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZlcigpOworICogICAgaW50ICAgICAgdGV4dExlbmd0aCA9
IHV0ZXh0X25hdGl2ZUxlbmd0aCh1dCk7CisgKiAgICBmb3IgKGM9dXRleHRfcHJldmlvdXMzMkZy
b20odXQsIHRleHRMZW5ndGgpOyBjPj0wOyBjPXV0ZXh0X3ByZXZpb3VzMzIodXQpKSB7CisgKiAg
ICAgICAvLyBkbyB3aGF0ZXZlciB3aXRoIHRoZSBjb2RlcG9pbnQgYyBoZXJlLgorICogICAgfQor
ICogXGVuZGNvZGUKKyAqCisgKiA8ZW0+Q2hhcmFjdGVycyBhbmQgSW5kZXhpbmc8L2VtPgorICoK
KyAqIEluZGV4aW5nIGludG8gdGV4dCBieSBVVGV4dCBmdW5jdGlvbnMgaXMgbmVhcmx5IGFsd2F5
cyBpbiB0ZXJtcyBvZiB0aGUgbmF0aXZlCisgKiBpbmRleGluZyBvZiB0aGUgdW5kZXJseWluZyB0
ZXh0IHN0b3JhZ2UuICBUaGUgc3RvcmFnZSBmb3JtYXQgY291bGQgYmUgVVRGLTgKKyAqIG9yIFVU
Ri0zMiwgZm9yIGV4YW1wbGUuICBXaGVuIGNvZGluZyB0byB0aGUgVVRleHQgYWNjZXNzIEFQSSwg
bm8gYXNzdW1wdGlvbnMKKyAqIGNhbiBiZSBtYWRlIHJlZ2FyZGluZyB0aGUgc2l6ZSBvZiBjaGFy
YWN0ZXJzLCBvciBob3cgZmFyIGFuIGluZGV4CisgKiBtYXkgbW92ZSB3aGVuIGl0ZXJhdGluZyBi
ZXR3ZWVuIGNoYXJhY3RlcnMuCisgKgorICogQWxsIGluZGljZXMgc3VwcGxpZWQgdG8gVVRleHQg
ZnVuY3Rpb25zIGFyZSBwaW5uZWQgdG8gdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHRleHQuICBBbiBv
dXQtb2YtYm91bmRzIGluZGV4IGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGFuIGVycm9yLCBidXQg
aXMKKyAqIGFkanVzdGVkIHRvIGJlIGluIHRoZSByYW5nZSAgMCA8PSBpbmRleCA8PSBsZW5ndGgg
b2YgaW5wdXQgdGV4dC4KKyAqCisgKgorICogV2hlbiBhbiBpbmRleCBwb3NpdGlvbiBpcyByZXR1
cm5lZCBmcm9tIGEgVVRleHQgZnVuY3Rpb24sIGl0IHdpbGwgYmUKKyAqIGEgbmF0aXZlIGluZGV4
IHRvIHRoZSB1bmRlcmx5aW5nIHRleHQuICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11bml0IGNoYXJh
Y3RlcnMsCisgKiBpdCB3aWxsICBhbHdheXMgcmVmZXIgdG8gdGhlIGZpcnN0IHBvc2l0aW9uIG9m
IHRoZSBjaGFyYWN0ZXIsCisgKiBuZXZlciB0byB0aGUgaW50ZXJpb3IuICBUaGlzIGlzIGVzc2Vu
dGlhbGx5IHRoZSBzYW1lIHRoaW5nIGFzIHNheWluZyB0aGF0CisgKiBhIHJldHVybmVkIGluZGV4
IHdpbGwgYWx3YXlzIHBvaW50IHRvIGEgYm91bmRhcnkgYmV0d2VlbiBjaGFyYWN0ZXJzLgorICoK
KyAqIFdoZW4gYSBuYXRpdmUgaW5kZXggaXMgc3VwcGxpZWQgdG8gYSBVVGV4dCBmdW5jdGlvbiwg
YWxsIGluZGljZXMgdGhhdAorICogcmVmZXIgdG8gYW55IHBhcnQgb2YgYSBtdWx0aS11bml0IGNo
YXJhY3RlciByZXByZXNlbnRhdGlvbiBhcmUgY29uc2lkZXJlZAorICogdG8gYmUgZXF1aXZhbGVu
dC4gIEluIHRoZSBjYXNlIG9mIG11bHRpLXVuaXQgY2hhcmFjdGVycywgYW4gaW5jb21pbmcgaW5k
ZXgKKyAqIHdpbGwgYmUgbG9naWNhbGx5IG5vcm1hbGl6ZWQgdG8gcmVmZXIgdG8gdGhlIHN0YXJ0
IG9mIHRoZSBjaGFyYWN0ZXIuCisgKiAKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHRlc3Qgd2hldGhl
ciBhIG5hdGl2ZSBpbmRleCBpcyBvbiBhIGNvZGUgcG9pbnQgYm91bmRhcnkKKyAqIGJ5IGRvaW5n
IGEgdXRleHRfc2V0TmF0aXZlSW5kZXgoKSBmb2xsb3dlZCBieSBhIHV0ZXh0X2dldE5hdGl2ZUlu
ZGV4KCkuCisgKiBJZiB0aGUgaW5kZXggaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLCBpdCB3YXMgb24g
YSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAgSWYKKyAqIGFuIGFkanVzdGVkIGluZGV4IGlzIHJldHVy
bmVkLCB0aGUgb3JpZ2luYWwgaW5kZXggcmVmZXJyZWQgdG8gdGhlCisgKiBpbnRlcmlvciBvZiBh
IGNoYXJhY3Rlci4KKyAqCisgKiA8ZW0+Q29udmVudGlvbnMgZm9yIGNhbGxpbmcgVVRleHQgZnVu
Y3Rpb25zPC9lbT4KKyAqCisgKiBNb3N0IFVUZXh0IGFjY2VzcyBmdW5jdGlvbnMgaGF2ZSBhcyB0
aGVpciBmaXJzdCBwYXJhbWV0ZXIgYSAoVVRleHQgKikgcG9pbnRlciwKKyAqIHdoaWNoIHNwZWNp
ZmllcyB0aGUgVVRleHQgdG8gYmUgdXNlZC4gIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZQor
ICogcG9pbnRlciBtdXN0IHJlZmVyIHRvIGEgdmFsaWQsIG9wZW4gVVRleHQuICBBdHRlbXB0aW5n
IHRvCisgKiB1c2UgYSBjbG9zZWQgVVRleHQgb3IgcGFzc2luZyBhIE5VTEwgcG9pbnRlciBpcyBh
IHByb2dyYW1taW5nIGVycm9yIGFuZAorICogd2lsbCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRz
IG9yIE5VTEwgcG9pbnRlciBleGNlcHRpb25zLgorICogCisgKiBUaGUgVVRleHRfT3BlbiBmYW1p
bHkgb2YgZnVuY3Rpb25zIGNhbiBlaXRoZXIgb3BlbiBhbiBleGlzdGluZyAoY2xvc2VkKQorICog
VVRleHQsIG9yIGhlYXAgYWxsb2NhdGUgYSBuZXcgVVRleHQuICBIZXJlIGlzIHNhbXBsZSBjb2Rl
IGZvciBjcmVhdGluZworICogYSBzdGFjay1hbGxvY2F0ZWQgVVRleHQuCisgKgorICogXGNvZGUK
KyAqICAgIGNoYXIgICAgICpzID0gd2hhdGV2ZXIoKTsgIC8vIEEgdXRmLTggc3RyaW5nIAorICog
ICAgVV9FcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogICAgVVRleHQgICAgdXQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAqICAgIHV0ZXh0X29wZW5VVEY4KHV0LCBzLCAtMSwgJnN0
YXR1cyk7CisgKiAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAqICAgICAgICAvLyBlcnJv
ciBoYW5kbGluZworICogICAgfSBlbHNlIHsKKyAqICAgICAgICAvLyB3b3JrIHdpdGggdGhlIFVU
ZXh0CisgKiAgICB9CisgKiBcZW5kY29kZQorICoKKyAqIEFueSBleGlzdGluZyBVVGV4dCBwYXNz
ZWQgdG8gYW4gb3BlbiBmdW5jdGlvbiBfbXVzdF8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLCAKKyAq
IGVpdGhlciBieSB0aGUgVVRFWFRfSU5JVElBTElaRVIsIG9yIGJ5IGhhdmluZyBiZWVuIG9yaWdp
bmFsbHkgaGVhcC1hbGxvY2F0ZWQKKyAqIGJ5IGFuIG9wZW4gZnVuY3Rpb24uICBQYXNzaW5nIE5V
TEwgd2lsbCBjYXVzZSB0aGUgb3BlbiBmdW5jdGlvbiB0bworICogaGVhcC1hbGxvY2F0ZSBhbmQg
ZnVsbHkgaW5pdGlhbGl6ZSBhIG5ldyBVVGV4dC4KKyAqCisgKi8KKworCisKKyNpbmNsdWRlICJ1
bmljb2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWNoYXIuaCIKKyNpZiBVX1NIT1df
Q1BMVVNQTFVTX0FQSQorI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCisjaW5jbHVk
ZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUg
InVuaWNvZGUvY2hhcml0ZXIuaCIKKyNlbmRpZgorCisKK1VfQ0RFQ0xfQkVHSU4KKworc3RydWN0
IFVUZXh0OwordHlwZWRlZiBzdHJ1Y3QgVVRleHQgVVRleHQ7IC8qKjwgQyB0eXBlZGVmIGZvciBz
dHJ1Y3QgVVRleHQuIEBzdGFibGUgSUNVIDMuNiAqLworCisKKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAqCisgKiAgIEMgRnVuY3Rpb25zIGZvciBjcmVhdGluZyBVVGV4dCB3cmFw
cGVycyBhcm91bmQgdmFyaW91cyBraW5kcyBvZiB0ZXh0IHN0cmluZ3MuCisgKgorICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgICogQ2xvc2UgZnVuY3Rpb24gZm9y
IFVUZXh0IGluc3RhbmNlcy4KKyAgKiBDbGVhbnMgdXAsIHJlbGVhc2VzIGFueSByZXNvdXJjZXMg
YmVpbmcgaGVsZCBieSBhbiBvcGVuIFVUZXh0LgorICAqIDxwPgorICAqICAgSWYgdGhlIFVUZXh0
IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZCBieSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4gZnVuY3Rp
b25zLAorICAqICAgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSB1dGV4dCB3aWxsIGFs
c28gYmUgZnJlZWQuCisgICogICBJZiB0aGUgVVRleHQgc3RvcmFnZSBvcmlnaW5hdGVkIHdpdGgg
dGhlIGFwcGxpY2F0aW9uLCBhcyBpdCB3b3VsZCB3aXRoCisgICogICBhIGxvY2FsIG9yIHN0YXRp
YyBpbnN0YW5jZSwgdGhlIHN0b3JhZ2Ugd2lsbCBub3QgYmUgZGVsZXRlZC4KKyAgKgorICAqICAg
QW4gb3BlbiBVVGV4dCBjYW4gYmUgcmVzZXQgdG8gcmVmZXIgdG8gbmV3IHN0cmluZyBieSB1c2lu
ZyBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKQorICAqICAgZnVuY3Rpb25zIHdpdGhvdXQgZmlyc3Qg
Y2xvc2luZyB0aGUgVVRleHQuICAKKyAgKgorICAqIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJl
IGNsb3NlZC4KKyAgKiBAcmV0dXJuICAgIE5VTEwgaWYgdGhlIFVUZXh0IHN0cnVjdCB3YXMgZGVs
ZXRlZCBieSB0aGUgY2xvc2UuICBJZiB0aGUgVVRleHQgc3RydWN0CisgICogICAgICAgICAgICB3
YXMgb3JpZ2luYWxseSBwcm92aWRlZCBieSB0aGUgY2FsbGVyIHRvIHRoZSBvcGVuIGZ1bmN0aW9u
LCBpdCBpcworICAqICAgICAgICAgICAgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIG1h
eSBiZSBzYWZlbHkgdXNlZCBhZ2FpbiBpbgorICAqICAgICAgICAgICAgYSBzdWJzZXF1ZW50IHV0
ZXh0X29wZW4uCisgICoKKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RBQkxFIFVUZXh0
ICogVV9FWFBPUlQyCit1dGV4dF9jbG9zZShVVGV4dCAqdXQpOworCisjaWYgVV9TSE9XX0NQTFVT
UExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xhc3MgTG9jYWxVVGV4
dFBvaW50ZXIKKyAqICJTbWFydCBwb2ludGVyIiBjbGFzcywgY2xvc2VzIGEgVVRleHQgdmlhIHV0
ZXh0X2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFz
ZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2Nh
bFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BP
SU5URVIoTG9jYWxVVGV4dFBvaW50ZXIsIFVUZXh0LCB1dGV4dF9jbG9zZSk7CisKK1VfTkFNRVNQ
QUNFX0VORAorCisjZW5kaWYKKworLyoqCisgKiBPcGVuIGEgcmVhZC1vbmx5IFVUZXh0IGltcGxl
bWVudGF0aW9uIGZvciBVVEYtOCBzdHJpbmdzLgorICogCisgKiBcaHRtbG9ubHkKKyAqIEFueSBp
bnZhbGlkIFVURi04IGluIHRoZSBpbnB1dCB3aWxsIGJlIGhhbmRsZWQgaW4gdGhpcyB3YXk6Cisg
KiBhIHNlcXVlbmNlIG9mIGJ5dGVzIHRoYXQgaGFzIHRoZSBmb3JtIG9mIGEgdHJ1bmNhdGVkLCBi
dXQgb3RoZXJ3aXNlIHZhbGlkLAorICogVVRGLTggc2VxdWVuY2Ugd2lsbCBiZSByZXBsYWNlZCBi
eSBhIHNpbmdsZSB1bmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlciwgXHVGRkZELiAKKyAqIEFu
eSBvdGhlciBpbGxlZ2FsIGJ5dGVzIHdpbGwgZWFjaCBiZSByZXBsYWNlZCBieSBhIFx1RkZGRC4K
KyAqIFxlbmRodG1sb25seQorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4
dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAg
ICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0
IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJl
ZmVyZW5jZSB0aGUgc3BlY2lmaWVkIFVURi04IHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBV
VEYtOCBzdHJpbmcuICBNdXN0IG5vdCBiZSBOVUxMLgorICogQHBhcmFtIGxlbmd0aCBUaGUgbGVu
Z3RoIG9mIHRoZSBVVEYtOCBzdHJpbmcgaW4gYnl0ZXMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMK
KyAqICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBFcnJv
cnMgYXJlIHJldHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgIEEgcG9pbnRlciB0byB0aGUg
VVRleHQuICBJZiBhIHByZS1hbGxvY2F0ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBpdAorICogICAg
ICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAqIEBzdGFibGUg
SUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlblVURjgo
VVRleHQgKnV0LCBjb25zdCBjaGFyICpzLCBpbnQ2NF90IGxlbmd0aCwgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKKworCisvKioKKyAqIE9wZW4gYSByZWFkLW9ubHkgVVRleHQgZm9yIFVDaGFyICogc3Ry
aW5nLgorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJ
ZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElm
IG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hp
Y2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUg
c3BlY2lmaWVkIFVDaGFyIHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBVQ2hhciAoVVRGLTE2
KSBzdHJpbmcKKyAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGlu
cHV0IHN0cmluZywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcworICogICAgICAgICAgICAgICB6ZXJv
IHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4K
KyAqIEByZXR1cm4gICAgICAgQSBwb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgcHJlLWFsbG9j
YXRlZCBVVGV4dCB3YXMgcHJvdmlkZWQsIGl0CisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlz
IGJlIHVzZWQgYW5kIHJldHVybmVkLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuVUNoYXJzKFVUZXh0ICp1dCwgY29uc3QgVUNo
YXIgKnMsIGludDY0X3QgbGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisKKyNpZiBVX1NI
T1dfQ1BMVVNQTFVTX0FQSQorLyoqCisgKiBPcGVuIGEgd3JpdGFibGUgVVRleHQgZm9yIGEgbm9u
LWNvbnN0IFVuaWNvZGVTdHJpbmcuIAorICogCisgKiBAcGFyYW0gdXQgICAgICBQb2ludGVyIHRv
IGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgor
ICogICAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxp
emVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgICAgYmUg
cmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgaW5wdXQgc3RyaW5nLgorICogQHBhcmFt
IHMgICAgICAgQSBVbmljb2RlU3RyaW5nLgorICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElm
IGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgICAg
d2lsbCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LworVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKK3V0ZXh0X29wZW5Vbmljb2RlU3RyaW5nKFVU
ZXh0ICp1dCwgaWN1OjpVbmljb2RlU3RyaW5nICpzLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisK
Ky8qKgorICogT3BlbiBhIFVUZXh0IGZvciBhIGNvbnN0IFVuaWNvZGVTdHJpbmcuICAgVGhlIHJl
c3VsdGluZyBVVGV4dCB3aWxsIG5vdCBiZSB3cml0YWJsZS4KKyAqIAorICogQHBhcmFtIHV0ICAg
IFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJl
IGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFu
IGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAg
ICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIGlucHV0IHN0cmluZy4KKyAq
IEBwYXJhbSBzICAgICAgQSBjb25zdCBVbmljb2RlU3RyaW5nIHRvIGJlIHdyYXBwZWQuCisgKiBA
cGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAg
UG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwg
dGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4K
KyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRl
eHRfb3BlbkNvbnN0VW5pY29kZVN0cmluZyhVVGV4dCAqdXQsIGNvbnN0IGljdTo6VW5pY29kZVN0
cmluZyAqcywgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIE9wZW4gYSB3cml0YWJs
ZSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBmb3IgYW4gSUNVIFJlcGxhY2VhYmxlIG9iamVjdC4KKyAq
IEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcg
VVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVz
dCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4KKyAq
ICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVwbGFj
ZWFibGUgdGV4dC4KKyAqIEBwYXJhbSByZXAgICAgQSBSZXBsYWNlYWJsZSB0ZXh0IG9iamVjdC4K
KyAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgorICogQHJldHVybiAg
ICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlu
cHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVy
bmVkLgorICogQHNlZSBSZXBsYWNlYWJsZQorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuUmVwbGFjZWFibGUoVVRleHQgKnV0LCBp
Y3U6OlJlcGxhY2VhYmxlICpyZXAsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3Bl
biBhICBVVGV4dCBpbXBsZW1lbnRhdGlvbiBvdmVyIGFuIElDVSBDaGFyYWN0ZXJJdGVyYXRvci4K
KyAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBu
ZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwg
bXVzdCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4K
KyAqICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVw
bGFjZWFibGUgdGV4dC4KKyAqIEBwYXJhbSBjaSAgICAgQSBDaGFyYWN0ZXIgSXRlcmF0b3IuCisg
KiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAg
ICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1
dCwgdGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5l
ZC4KKyAqIEBzZWUgUmVwbGFjZWFibGUKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlbkNoYXJhY3Rlckl0ZXJhdG9yKFVUZXh0ICp1
dCwgaWN1OjpDaGFyYWN0ZXJJdGVyYXRvciAqY2ksIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNl
bmRpZgorCisKKy8qKgorICAqICBDbG9uZSBhIFVUZXh0LiAgVGhpcyBpcyBtdWNoIGxpa2Ugb3Bl
bmluZyBhIFVUZXh0IHdoZXJlIHRoZSBzb3VyY2UgdGV4dCBpcyBpdHNlbGYKKyAgKiAgYW5vdGhl
ciBVVGV4dC4KKyAgKgorICAqICBBIGRlZXAgY2xvbmUgd2lsbCBjb3B5IGJvdGggdGhlIFVUZXh0
IGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHVuZGVybHlpbmcgdGV4dC4KKyAgKiAgVGhlIG9yaWdp
bmFsIGFuZCBjbG9uZWQgVVRleHQgd2lsbCBvcGVyYXRlIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnRs
eTsgbW9kaWZpY2F0aW9ucworICAqICBtYWRlIHRvIHRoZSB0ZXh0IGluIG9uZSB3aWxsIG5vdCBh
ZmZlY3QgdGhlIG90aGVyLiAgVGV4dCBwcm92aWRlcnMgYXJlIG5vdAorICAqICByZXF1aXJlZCB0
byBzdXBwb3J0IGRlZXAgY2xvbmVzLiAgVGhlIHVzZXIgb2YgY2xvbmUoKSBtdXN0IGNoZWNrIHRo
ZSBzdGF0dXMgcmV0dXJuCisgICogIGFuZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgZmFpbHVyZXMu
CisgICoKKyAgKiAgVGhlIHN0YW5kYXJkIFVUZXh0IGltcGxlbWVudGF0aW9ucyBmb3IgVVRGOCwg
VUNoYXIgKiwgVW5pY29kZVN0cmluZyBhbmQKKyAgKiAgUmVwbGFjZWFibGUgYWxsIHN1cHBvcnQg
ZGVlcCBjbG9uaW5nLgorICAqCisgICogIFRoZSBVVGV4dCByZXR1cm5lZCBmcm9tIGEgZGVlcCBj
bG9uZSB3aWxsIGJlIHdyaXRhYmxlLCBhc3N1bWluZyB0aGF0IHRoZSB0ZXh0CisgICogIHByb3Zp
ZGVyIGlzIGFibGUgdG8gc3VwcG9ydCB3cml0aW5nLCBldmVuIGlmIHRoZSBzb3VyY2UgVVRleHQg
aGFkIGJlZW4gbWFkZQorICAqICBub24td3JpdGFibGUgYnkgbWVhbnMgb2YgVVRleHRfZnJlZXpl
KCkuCisgICoKKyAgKiAgQSBzaGFsbG93IGNsb25lIHJlcGxpY2F0ZXMgb25seSB0aGUgVVRleHQg
ZGF0YSBzdHJ1Y3R1cmVzOyBpdCBkb2VzIG5vdCBtYWtlCisgICogIGEgY29weSBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0LiAgU2hhbGxvdyBjbG9uZXMgY2FuIGJlIHVzZWQgYXMgYW4gZWZmaWNpZW50
IHdheSB0byAKKyAgKiAgaGF2ZSBtdWx0aXBsZSBpdGVyYXRvcnMgYWN0aXZlIGluIGEgc2luZ2xl
IHRleHQgc3RyaW5nIHRoYXQgaXMgbm90IGJlaW5nCisgICogIG1vZGlmaWVkLgorICAqCisgICog
IEEgc2hhbGxvdyBjbG9uZSBvcGVyYXRpb24gd2lsbCBub3QgZmFpbCwgYmFycmluZyB0cnVseSBl
eGNlcHRpb25hbCBjb25kaXRpb25zIHN1Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFp
bHVyZXMuCisgICoKKyAgKiAgU2hhbGxvdyBVVGV4dCBjbG9uZXMgc2hvdWxkIGJlIGF2b2lkZWQg
aWYgdGhlIFVUZXh0IGZ1bmN0aW9ucyB0aGF0IG1vZGlmeSB0aGUKKyAgKiAgdGV4dCBhcmUgZXhw
ZWN0ZWQgdG8gYmUgdXNlZCwgZWl0aGVyIG9uIHRoZSBvcmlnaW5hbCBvciB0aGUgY2xvbmVkIFVU
ZXh0LgorICAqICBBbnkgc3VjaCBtb2RpZmljYXRpb25zICBjYW4gY2F1c2UgdW5wcmVkaWN0YWJs
ZSBiZWhhdmlvci4gIFJlYWQgT25seQorICAqICBzaGFsbG93IGNsb25lcyBwcm92aWRlIHNvbWUg
cHJvdGVjdGlvbiBhZ2FpbnN0IGVycm9ycyBvZiB0aGlzIHR5cGUgYnkKKyAgKiAgZGlzYWJsaW5n
IHRleHQgbW9kaWZpY2F0aW9uIHZpYSB0aGUgY2xvbmVkIFVUZXh0LgorICAqCisgICogIEEgc2hh
bGxvdyBjbG9uZSBtYWRlIHdpdGggdGhlIHJlYWRPbmx5IHBhcmFtZXRlciA9PSBGQUxTRSB3aWxs
IHByZXNlcnZlIHRoZSAKKyAgKiAgdXRleHRfaXNXcml0YWJsZSgpIHN0YXRlIG9mIHRoZSBzb3Vy
Y2Ugb2JqZWN0LiAgTm90ZSwgaG93ZXZlciwgdGhhdAorICAqICB3cml0ZSBvcGVyYXRpb25zIG11
c3QgYmUgYXZvaWRlZCB3aGlsZSBtb3JlIHRoYW4gb25lIFVUZXh0IGV4aXN0cyB0aGF0IHJlZmVy
CisgICogIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgdGV4dC4KKyAgKgorICAqICBBIFVUZXh0IGFu
ZCBpdHMgY2xvbmUgbWF5IGJlIHNhZmVseSBjb25jdXJyZW50bHkgYWNjZXNzZWQgYnkgc2VwYXJh
dGUgdGhyZWFkcy4KKyAgKiAgVGhpcyBpcyB0cnVlIGZvciByZWFkIGFjY2VzcyBvbmx5IHdpdGgg
c2hhbGxvdyBjbG9uZXMsIGFuZCBmb3IgYm90aCByZWFkIGFuZAorICAqICB3cml0ZSBhY2Nlc3Mg
d2l0aCBkZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBU
ZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25z
dHJhaW50IGlzIG1ldC4KKyAgKgorICAqICBAcGFyYW0gZGVzdCAgIEEgVVRleHQgc3RydWN0IHRv
IGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGNsb25lIG9wZXJhdGlvbiwKKyAg
KiAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZSBjbG9uZSBmdW5jdGlvbiBzaG91bGQgaGVh
cC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBzdHJ1Y3QuCisgICogICAgICAgICAgICAgICAgSWYgbm9u
LU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4dCwgd2hpY2ggd2ls
bCB0aGVuCisgICogICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gYmVjb21lIHRoZSBjbG9uZS4K
KyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQgdG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0g
ZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAgY2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cg
Y2xvbmUuCisgICogIEBwYXJhbSByZWFkT25seSBUUlVFIHRvIHJlcXVlc3QgdGhhdCB0aGUgY2xv
bmVkIFVUZXh0IGhhdmUgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgCisgICogICAgICAgICAgICAg
ICAgdW5kZXJseWluZyB0ZXh0LiAgCisKKyAgKiAgQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuICBGb3IgZGVlcCBjbG9uZXMsIFVfVU5TVVBQT1JURURfRVJST1IKKyAgKiAg
ICAgICAgICAgICAgICB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHByb3ZpZGVyIGlzIHVu
YWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5hbCB0ZXh0LgorICAq
ICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBOVUxMIGlmIHRoZSBj
bG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqICBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9jbG9uZShVVGV4dCAqZGVzdCwgY29uc3QgVVRl
eHQgKnNyYywgVUJvb2wgZGVlcCwgVUJvb2wgcmVhZE9ubHksIFVFcnJvckNvZGUgKnN0YXR1cyk7
CisKKworLyoqCisgICogIENvbXBhcmUgdHdvIFVUZXh0IG9iamVjdHMgZm9yIGVxdWFsaXR5Lgor
ICAqICBVVGV4dHMgYXJlIGVxdWFsIGlmIHRoZXkgYXJlIGl0ZXJhdGluZyBvdmVyIHRoZSBzYW1l
IHRleHQsIGFuZAorICAqICAgIGhhdmUgdGhlIHNhbWUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpdGhp
biB0aGUgdGV4dC4KKyAgKiAgICBJZiBlaXRoZXIgb3IgYm90aCBvZiB0aGUgcGFyYW1ldGVycyBh
cmUgTlVMTCwgdGhlIGNvbXBhcmlzb24gaXMgRkFMU0UuCisgICoKKyAgKiAgQHBhcmFtIGEgICBU
aGUgZmlyc3Qgb2YgdGhlIHR3byBVVGV4dHMgdG8gY29tcGFyZS4KKyAgKiAgQHBhcmFtIGIgICBU
aGUgb3RoZXIgVVRleHQgdG8gYmUgY29tcGFyZWQuCisgICogIEByZXR1cm4gICAgVFJVRSBpZiB0
aGUgdHdvIFVUZXh0cyBhcmUgZXF1YWwuCisgICogIEBzdGFibGUgSUNVIDMuNgorICAqLworVV9T
VEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9lcXVhbHMoY29uc3QgVVRleHQgKmEsIGNvbnN0
IFVUZXh0ICpiKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9u
cyB0byB3b3JrIHdpdGggdGhlIHRleHQgcmVwcmVzZXRlZCBieSBhIFVUZXh0IHdyYXBwZXIKKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICAqIEdldCB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LiAgRGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXJpc3RpY3MKKyAgKiBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1heSBiZSBleHBlbnNpdmUuICAKKyAg
KiBAc2VlICB1dGV4dF9pc0xlbmd0aEV4cGVuc2l2ZSgpCisgICoKKyAgKgorICAqIEBwYXJhbSB1
dCAgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LCBleHByZXNzZWQgaW4gbmF0aXZlIHVuaXRzLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCitVX1NUQUJMRSBpbnQ2NF90IFVfRVhQT1JUMgordXRleHRfbmF0aXZlTGVuZ3Ro
KFVUZXh0ICp1dCk7CisKKy8qKgorICogIFJldHVybiBUUlVFIGlmIGNhbGN1bGF0aW5nIHRoZSBs
ZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgZXhwZW5zaXZlLgorICogIEZpbmRpbmcgdGhlIGxl
bmd0aCBvZiBOVUwgdGVybWluYXRlZCBzdHJpbmdzIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXhwZW5z
aXZlLgorICoKKyAqICBOb3RlIHRoYXQgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gbWF5IGNo
YW5nZQorICogIGFzIHRoZSByZXN1bHQgb2Ygb3RoZXIgb3BlcmF0aW9ucyBvbiBhIFVUZXh0Lgor
ICogIE9uY2UgdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBoYXMgYmVlbiBkaXNjb3ZlcmVkLCBpdCB3
aWxsIG5vIGxvbmdlcgorICogIGJlIGV4cGVuc2l2ZSB0byByZXBvcnQgaXQuCisgKgorICogQHBh
cmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICogQHJldHVybiBUUlVFIGlmIGRldGVy
bWluaW5nIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgdGltZSBjb25zdW1pbmcuCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9p
c0xlbmd0aEV4cGVuc2l2ZShjb25zdCBVVGV4dCAqdXQpOworCisvKioKKyAqIFJldHVybnMgdGhl
IGNvZGUgcG9pbnQgYXQgdGhlIHJlcXVlc3RlZCBpbmRleCwKKyAqIG9yIFVfU0VOVElORUwgKC0x
KSBpZiBpdCBpcyBvdXQgb2YgYm91bmRzLgorICoKKyAqIElmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
cG9pbnRzIHRvIHRoZSBpbnRlcmlvciBvZiBhIG11bHRpLXVuaXQKKyAqIGNoYXJhY3RlciAtIG9u
ZSBvZiB0aGUgdHJhaWwgYnl0ZXMgb2YgYSBVVEYtOCBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUgLQor
ICogdGhlIGNvbXBsZXRlIGNvZGUgcG9pbnQgd2lsbCBiZSByZXR1cm5lZC4KKyAqCisgKiBUaGUg
aXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgcmV0dXJu
ZWQgY29kZSBwb2ludC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkgZXF1aXZhbGVu
dCB0byB0aGUgdGhlIHNlcXVlbmNlCisgKiAgICB1dGV4dF9zZXROYXRpdmVJbmRleChpbmRleCk7
CisgKiAgICB1dGV4dF9jdXJyZW50MzIoKTsKKyAqIChUaGVyZSBpcyBhIHN1YnRsZSBkaWZmZXJl
bmNlIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIGJ5IGJlaW5nIGxlc3MgdGhhbiB6ZXJv
IC0gCisgKiB1dGV4dF9zZXROYXRpdmVJbmRleChuZWdhdGl2ZSB2YWx1ZSkgc2V0cyB0aGUgaW5k
ZXggdG8gemVybywgYWZ0ZXIgd2hpY2ggdXRleHRfY3VycmVudCgpCisgKiB3aWxsIHJldHVybiB0
aGUgY2hhciBhdCB6ZXJvLiAgdXRleHRfY2hhcjMyQXQobmVnYXRpdmUgaW5kZXgpLCBvbiB0aGUg
b3RoZXIgaGFuZCwgd2lsbAorICogcmV0dXJuIHRoZSBVX1NFTlRJTkVMIHZhbHVlIG9mIC0xLikK
KyAqIAorICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkCisgKiBAcGFyYW0gbmF0
aXZlSW5kZXggdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHRvIGJlIGFjY2Vzc2Vk
LiAgSWYgdGhlIGluZGV4IHBvaW50cworICogICAgICAgIHRvIG90aGVyIHRoYW4gdGhlIGZpcnN0
IHVuaXQgb2YgYSBtdWx0aS11bml0IGNoYXJhY3RlciwgaXQgd2lsbCBiZSBhZGp1c3RlZAorICog
ICAgICAgIHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICogQHJldHVybiB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1dGV4dF9jaGFyMzJBdChVVGV4dCAqdXQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgpOworCisKKy8qKgorICoKKyAqIEdldCB0aGUgY29kZSBwb2ludCBh
dCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24sCisgKiBvciBVX1NFTlRJTkVMICgtMSkg
aWYgdGhlIGl0ZXJhdGlvbiBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mCisgKiB0aGUgaW5wdXQgdGV4
dC4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBAcmV0dXJu
IHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24u
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0
ZXh0X2N1cnJlbnQzMihVVGV4dCAqdXQpOworCisKKy8qKgorICogR2V0IHRoZSBjb2RlIHBvaW50
IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBvZiB0aGUgVVRleHQsIGFuZAorICog
YWR2YW5jZSB0aGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0IGluZGV4IGZvbGxvd2luZyB0aGUgY2hh
cmFjdGVyLgorICoKKyAqIElmIHRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0
ICh0aGUgaW5kZXggZm9sbG93aW5nCisgKiB0aGUgbGFzdCBjaGFyYWN0ZXIsIHdoaWNoIGlzIGFs
c28gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCksIAorICogcmV0dXJuIFVfU0VOVElORUwgKC0xKSBh
bmQgZG8gbm90IGFkdmFuY2UgdGhlIGluZGV4LiAKKyAqCisgKiBUaGlzIGlzIGEgcG9zdC1pbmNy
ZW1lbnQgb3BlcmF0aW9uLgorICoKKyAqIEFuIGlubGluZSBtYWNybyB2ZXJzaW9uIG9mIHRoaXMg
ZnVuY3Rpb24sIFVURVhUX05FWFQzMigpLCAKKyAqIGlzIGF2YWlsYWJsZSBmb3IgcGVyZm9ybWFu
Y2UgY3JpdGljYWwgdXNlLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3Nl
ZC4KKyAqIEByZXR1cm4gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBhdCB0aGUgaXRlcmF0aW9uIHBv
c2l0aW9uLgorICogQHNlZSBVVEVYVF9ORVhUMzIKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitV
X1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4dDMyKFVUZXh0ICp1dCk7CisKKwor
LyoqCisgKiAgTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJhY3RlciAoY29k
ZSBwb2ludCkgd2hvc2UKKyAqICBpbmRleCBwcmVjZWRlcyB0aGUgY3VycmVudCBwb3NpdGlvbiwg
YW5kIHJldHVybiB0aGF0IGNoYXJhY3Rlci4KKyAqICBUaGlzIGlzIGEgcHJlLWRlY3JlbWVudCBv
cGVyYXRpb24uCisgKgorICogIElmIHRoZSBpbml0aWFsIHBvc2l0aW9uIGlzIGF0IHRoZSBzdGFy
dCBvZiB0aGUgdGV4dCAoaW5kZXggb2YgMCkgCisgKiAgcmV0dXJuIFVfU0VOVElORUwgKC0xKSwg
YW5kIGxlYXZlIHRoZSBwb3NpdGlvbiB1bmNoYW5nZWQuCisgKgorICogIEFuIGlubGluZSBtYWNy
byB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24sIFVURVhUX1BSRVZJT1VTMzIoKSwgCisgKiAgaXMg
YXZhaWxhYmxlIGZvciBwZXJmb3JtYW5jZSBjcml0aWNhbCB1c2UuCisgKgorICogIEBwYXJhbSB1
dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KKyAqICBAcmV0dXJuIHRoZSBwcmV2aW91cyBVQ2hh
cjMyIGNvZGUgcG9pbnQsIG9yIFVfU0VOVElORUwgKC0xKSAKKyAqICAgICAgICAgIGlmIHRoZSBp
dGVyYXRpb24gaGFzIHJlYWNoZWQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICogIEBzZWUgVVRF
WFRfUFJFVklPVVMzMgorICogIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVQ2hhcjMy
IFVfRVhQT1JUMgordXRleHRfcHJldmlvdXMzMihVVGV4dCAqdXQpOworCisKKy8qKgorICAqIFNl
dCB0aGUgaXRlcmF0aW9uIGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhhdCBp
bmRleC4gCisgICogTGVhdmUgdGhlIGl0ZXJhdGlvbiBpbmRleCBhdCB0aGUgc3RhcnQgb2YgdGhl
IGZvbGxvd2luZyBjb2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9z
dCBlZmZpY2llbnQgYW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBmb3J3YXJkIGl0
ZXJhdGlvbi4gIFRoZSByZXN1bHRzIGFyZSBpZGVudGljYWwgdG8gdGhlIHRob3NlCisgICogZnJv
bSB0aGUgc2VxdWVuY2UKKyAgKiBcY29kZQorICAqICAgIHV0ZXh0X3NldEluZGV4KCk7CisgICog
ICAgdXRleHRfbmV4dDMyKCk7CisgICogXGVuZGNvZGUKKyAgKgorICAqICBAcGFyYW0gdXQgdGhl
IHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogIEBwYXJhbSBuYXRpdmVJbmRleCBJdGVyYXRpb24g
aW5kZXgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCisgICogIEBy
ZXR1cm4gQ29kZSBwb2ludCB3aGljaCBzdGFydHMgYXQgb3IgYmVmb3JlIGluZGV4LAorICAqICAg
ICAgICAgb3IgVV9TRU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCisgICogQHN0
YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4
dDMyRnJvbShVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisKKworLyoqCisgICog
U2V0IHRoZSBpdGVyYXRpb24gaW5kZXgsIGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgcHJlY2Vk
aW5nIHRoZQorICAqIG9uZSBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwgaW5kZXguICBMZWF2ZSB0
aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisgICogYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXR1cm5lZCBj
b2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9zdCBlZmZpY2llbnQg
YW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBiYWNrd2FyZHMgaXRlcmF0aW9uLgor
ICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEBwYXJhbSBu
YXRpdmVJbmRleCBJdGVyYXRpb24gaW5kZXggaW4gdGhlIG5hdGl2ZSB1bml0cyBvZiB0aGUgdGV4
dCBwcm92aWRlci4KKyAgKiBAcmV0dXJuIENvZGUgcG9pbnQgcHJlY2VkaW5nIHRoZSBvbmUgYXQg
dGhlIGluaXRpYWwgaW5kZXgsCisgICogICAgICAgICBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQg
aXMgb3V0IG9mIGJvdW5kcy4KKyAgKgorICAqIEBzdGFibGUgSUNVIDMuNAorICAqLworVV9TVEFC
TEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0ZXh0X3ByZXZpb3VzMzJGcm9tKFVUZXh0ICp1dCwgaW50
NjRfdCBuYXRpdmVJbmRleCk7CisKKy8qKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBw
b3NpdGlvbiwgd2hpY2ggY2FuIHJhbmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LgorICAqIFRoZSBwb3NpdGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1
dCB0ZXh0LCBpbiB3aGF0ZXZlciBmb3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRG
LTggZm9yIGV4YW1wbGUpLCBhbmQgbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0
aGUgY29ycmVzcG9uZGluZyBVQ2hhciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQg
cG9zaXRpb24gd2lsbCBhbHdheXMgYmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnku
IAorICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEByZXR1
cm4gdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhl
IHRleHQgcHJvdmlkZXIuCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBpbnQ2
NF90IFVfRVhQT1JUMgordXRleHRfZ2V0TmF0aXZlSW5kZXgoY29uc3QgVVRleHQgKnV0KTsKKwor
LyoqCisgKiBTZXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBuZWFyZXN0
IGNvZGUgcG9pbnQKKyAqIGJvdW5kYXJ5IGF0IG9yIHByZWNlZGluZyB0aGUgc3BlY2lmaWVkIGlu
ZGV4LgorICogVGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFs
IGlucHV0IHRleHQuCisgKiBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCBpdCB3aWxsIGJl
IHBpbm5lZCB0byBiZSB3aXRoaW4KKyAqIHRoZSByYW5nZSBvZiB0aGUgaW5wdXQgdGV4dC4KKyAq
IDxwPgorICogSXQgd2lsbCB1c3VhbGx5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGJlZ2luIGFuIGl0
ZXJhdGlvbgorICogdXNpbmcgdGhlIGZ1bmN0aW9ucyB1dGV4dF9uZXh0MzJGcm9tKCkgb3IgdXRl
eHRfcHJldmlvdXMzMkZyb20oKQorICogcmF0aGVyIHRoYW4gc2V0SW5kZXgoKS4KKyAqIDxwPgor
ICogTW92aW5nIHRoZSBpbmRleCBwb3NpdGlvbiB0byBhbiBhZGphY2VudCBjaGFyYWN0ZXIgaXMg
YmVzdCBkb25lCisgKiB3aXRoIHV0ZXh0X25leHQzMigpLCB1dGV4dF9wcmV2aW91czMyKCkgb3Ig
dXRleHRfbW92ZUluZGV4MzIoKS4KKyAqIEF0dGVtcHRpbmcgdG8gZG8gZGlyZWN0IGFyaXRobWV0
aWMgb24gdGhlIGluZGV4IHBvc2l0aW9uIGlzCisgKiBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0
aGF0IHRoZSBzaXplIChpbiBuYXRpdmUgdW5pdHMpIG9mIGEKKyAqIGNoYXJhY3RlciBkZXBlbmRz
IG9uIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0ZXIKKyAqIChV
VEYtOCwgVVRGLTE2LCBVVEYtMzIsIGFyYml0cmFyeSBjb2RlcGFnZSksIGFuZCBpcyBub3QKKyAq
IGVhc2lseSBrbm93YWJsZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNz
ZWQuCisgKiBAcGFyYW0gbmF0aXZlSW5kZXggdGhlIG5hdGl2ZSB1bml0IGluZGV4IG9mIHRoZSBu
ZXcgaXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyCit1dGV4dF9zZXROYXRpdmVJbmRleChVVGV4dCAqdXQsIGludDY0X3Qg
bmF0aXZlSW5kZXgpOworCisvKioKKyAqIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc3Rpb24gYnkgZGVs
dGEgY29kZSBwb2ludHMuICBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzCisgKiBpcyBhIHNpZ25l
ZCBudW1iZXI7IGEgbmVnYXRpdmUgZGVsdGEgd2lsbCBtb3ZlIHRoZSBpdGVyYXRvciBiYWNrd2Fy
ZHMsCisgKiB0b3dhcmRzIHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KKyAqIDxwPgorICogVGhlIGlu
ZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRlbHRhPC9jb2RlPiBjb2RlIHBvaW50cworICogZm9yd2Fy
ZCBvciBiYWNrd2FyZCwgYnV0IG5vIGZ1cnRoZXIgYmFja3dhcmQgdGhhbiB0byAwIGFuZAorICog
bm8gZnVydGhlciBmb3J3YXJkIHRoYW4gdG8gdXRleHRfbmF0aXZlTGVuZ3RoKCkuCisgKiBUaGUg
cmVzdWx0aW5nIGluZGV4IHZhbHVlIHdpbGwgYmUgaW4gYmV0d2VlbiAwIGFuZCBsZW5ndGgsIGlu
Y2x1c2l2ZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBA
cGFyYW0gZGVsdGEgdGhlIHNpZ25lZCBudW1iZXIgb2YgY29kZSBwb2ludHMgdG8gbW92ZSB0aGUg
aXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHJldHVybiBUUlVFIGlmIHRoZSBwb3NpdGlvbiBjb3Vs
ZCBiZSBtb3ZlZCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBwb3NpdGlvbnMgd2hpbGUKKyAqICAg
ICAgICAgICAgICBzdGF5aW5nIHdpdGhpbiB0aGUgcmFuZ2UgWzAgLSB0ZXh0IGxlbmd0aF0uCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9t
b3ZlSW5kZXgzMihVVGV4dCAqdXQsIGludDMyX3QgZGVsdGEpOworCisvKioKKyAqIEdldCB0aGUg
bmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgY3VycmVudCBwb3Np
dGlvbi4KKyAqIElmIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgYWxyZWFkeSBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHRleHQsIHplcm8KKyAqIGlzIHJldHVybmVkLgorICogVGhlIHZhbHVlIHJldHVy
bmVkIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNlcXVl
bmNlLAorICogYnV0IHdpdGhvdXQgdGhlIHNpZGUgZWZmZWN0IG9mIGNoYW5naW5nIHRoZSBpdGVy
YXRpb24gcG9zaXRpb24uCisgKiAgIAorICogXGNvZGUKKyAqICAgIFVUZXh0ICAqdXQgPSB3aGF0
ZXZlcjsKKyAqICAgICAgLi4uCisgKiAgICB1dGV4dF9wcmV2aW91cyh1dCkKKyAqICAgIHV0ZXh0
X2dldE5hdGl2ZUluZGV4KHV0KTsKKyAqIFxlbmRjb2RlCisgKgorICogVGhpcyBmdW5jdGlvbiBp
cyBtb3N0IHVzZWZ1bCBkdXJpbmcgZm9yd2FyZHMgaXRlcmF0aW9uLCB3aGVyZSBpdCB3aWxsIGdl
dCB0aGUKKyAqICAgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgbW9zdCByZWNlbnRseSBy
ZXR1cm5lZCBmcm9tIHV0ZXh0X25leHQoKS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8g
YmUgYWNjZXNzZWQKKyAqIEByZXR1cm4gdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVy
IHByZWNlZWRpbmcgdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sCisgKiAgICAgICAgIG9yIHpl
cm8gaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0Lgor
ICogQHN0YWJsZSBJQ1UgMy42CisgKi8KK1VfU1RBQkxFIGludDY0X3QgVV9FWFBPUlQyCit1dGV4
dF9nZXRQcmV2aW91c05hdGl2ZUluZGV4KFVUZXh0ICp1dCk7IAorCisKKy8qKgorICoKKyAqIEV4
dHJhY3QgdGV4dCBmcm9tIGEgVVRleHQgaW50byBhIFVDaGFyIGJ1ZmZlci4gIFRoZSByYW5nZSBv
ZiB0ZXh0IHRvIGJlIGV4dHJhY3RlZAorICogaXMgc3BlY2lmaWVkIGluIHRoZSBuYXRpdmUgaW5k
aWNlcyBvZiB0aGUgVVRleHQgcHJvdmlkZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vzc2FyaWx5Cisg
KiBiZSBVVEYtMTYgaW5kaWNlcy4KKyAqIDxwPgorICogVGhlIHNpemUgKG51bWJlciBvZiAxNiBi
aXQgVUNoYXJzKSBvZiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJuZWQuICBUaGUK
KyAqIGZ1bGwgbnVtYmVyIG9mIFVDaGFycyBpcyByZXR1cm5lZCwgZXZlbiB3aGVuIHRoZSBleHRy
YWN0ZWQgdGV4dCBpcyB0cnVuY2F0ZWQKKyAqIGJlY2F1c2UgdGhlIHNwZWNpZmllZCBidWZmZXIg
c2l6ZSBpcyB0b28gc21hbGwuCisgKiA8cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwg
KGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQor
ICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUg
ZGVzdGluYXRpb24gYnVmZmVyLiAgVGhpcworICogdGVybWluYXRpbmcgTlVMIGlzIG5vdCBpbmNs
dWRlZCBpbiB0aGUgcmV0dXJuZWQgbGVuZ3RoLgorICogPHA+CisgKiBUaGUgaXRlcmF0aW9uIGlu
ZGV4IGlzIGxlZnQgYXQgdGhlIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgbGFzdCBleHRyYWN0ZWQg
Y2hhcmFjdGVyLgorICoKKyAqIEBwYXJhbSAgdXQgICAgdGhlIFVUZXh0IGZyb20gd2hpY2ggdG8g
ZXh0cmFjdCBkYXRhLgorICogQHBhcmFtICBuYXRpdmVTdGFydCB0aGUgbmF0aXZlIGluZGV4IG9m
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gZXh0cmFjdC5cCisgKiAgICAgICAgICAgICAgIElmIHRo
ZSBzcGVjaWZpZWQgaW5kZXggaXMgb3V0IG9mIHJhbmdlLAorICogICAgICAgICAgICAgICBpdCB3
aWxsIGJlIHBpbm5lZCB0byB0byBiZSB3aXRoaW4gMCA8PSBpbmRleCA8PSB0ZXh0TGVuZ3RoCisg
KiBAcGFyYW0gIG5hdGl2ZUxpbWl0IHRoZSBuYXRpdmUgc3RyaW5nIGluZGV4IG9mIHRoZSBwb3Np
dGlvbiBmb2xsb3dpbmcgdGhlIGxhc3QKKyAqICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4
dHJhY3QuICBJZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG91dCBvZiByYW5nZSwKKyAqICAgICAg
ICAgICAgICAgaXQgd2lsbCBiZSBwaW5uZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0gaW5kZXggPD0g
dGV4dExlbmd0aC4KKyAqICAgICAgICAgICAgICAgbmF0aXZlTGltaXQgbXVzdCBiZSA+PSBuYXRp
dmVTdGFydC4KKyAqIEBwYXJhbSAgZGVzdCAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRv
IHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFj
aXR5ICBUaGUgc2l6ZSwgaW4gVUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5
IGJlIHplcm8KKyAqICAgICAgICAgICAgICAgZm9yIHByZWNvbXB1dGluZyB0aGUgcmVxdWlyZWQg
c2l6ZS4KKyAqIEBwYXJhbSAgc3RhdHVzIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAg
ICAgICAgIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOiB0aGUgZXh0cmFjdGVkIHRleHQgd2FzIHRy
dW5jYXRlZCBiZWNhdXNlIHRoZSAKKyAqICAgICAgICAgYnVmZmVyIHdhcyB0b28gc21hbGwuICBS
ZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMgZm9yIHByZWZsaWdodGluZy4KKyAqIEByZXR1cm4gTnVt
YmVyIG9mIFVDaGFycyBpbiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgordXRleHRfZXh0cmFjdChVVGV4dCAqdXQsCisgICAgICAgICAg
ICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKKyAgICAgICAgICAg
ICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAgVUVycm9y
Q29kZSAqc3RhdHVzKTsKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg
KiAgI2RlZmluZSBpbmxpbmUgdmVyc2lvbnMgb2Ygc2VsZWN0ZWQgcGVyZm9ybWFuY2UtY3JpdGlj
YWwgdGV4dCBhY2Nlc3MgZnVuY3Rpb25zCisgKiAgICAgICAgICBDYXV0aW9uOiAgZG8gbm90IHVz
ZSBhdXRvIGluY3JlbWVudCsrIG9yIGRlY3JlbWVudC0tIGV4cHJlc3Npb25zCisgKiAgICAgICAg
ICAgICAgICAgICAgYXMgcGFyYW1ldGVycyB0byB0aGVzZSBtYWNyb3MuCisgKgorICogICAgICAg
ICAgRm9yIG1vc3QgdXNlLCB3aGVyZSB0aGVyZSBpcyBubyBleHRyZW1lIHBlcmZvcm1hbmNlIGNv
bnN0cmFpbnQsIHRoZQorICogICAgICAgICAgbm9ybWFsLCBub24taW5saW5lIGZ1bmN0aW9ucyBh
cmUgYSBiZXR0ZXIgY2hvaWNlLiAgVGhlIHJlc3VsdGluZyBjb2RlCisgKiAgICAgICAgICB3aWxs
IGJlIHNtYWxsZXIsIGFuZCwgaWYgdGhlIG5lZWQgZXZlciBhcmlzZXMsIGVhc2llciB0byBkZWJ1
Zy4KKyAqCisgKiAgICAgICAgICBUaGVzZSBhcmUgaW1wbGVtZW50ZWQgYXMgI2RlZmluZXMgcmF0
aGVyIHRoYW4gcmVhbCBmdW5jdGlvbnMKKyAqICAgICAgICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8g
ZnVsbHkgcG9ydGFibGUgd2F5IHRvIGRvIGlubGluZSBmdW5jdGlvbnMgaW4gcGxhaW4gQy4KKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIFVfSElERV9JTlRFUk5B
TF9BUEkKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfY3VycmVudDMyKCksIGZvciBw
ZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29kZSBwb2lu
dCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LgorICogUmV0
dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhl
CisgKiB0ZXh0LgorICoKKyAqIEBpbnRlcm5hbCBJQ1UgNC40IHRlY2hub2xvZ3kgcHJldmlldwor
ICovCisjZGVmaW5lIFVURVhUX0NVUlJFTlQzMih1dCkgIFwKKyAgICAoKHV0KS0+Y2h1bmtPZmZz
ZXQgPCAodXQpLT5jaHVua0xlbmd0aCAmJiAoKHV0KS0+Y2h1bmtDb250ZW50cylbKHV0KS0+Y2h1
bmtPZmZzZXRdPDB4ZDgwMCA/IFwKKyAgICAoKHV0KS0+Y2h1bmtDb250ZW50cylbKCh1dCktPmNo
dW5rT2Zmc2V0KV0gOiB1dGV4dF9jdXJyZW50MzIodXQpKQorI2VuZGlmICAvKiBVX0hJREVfSU5U
RVJOQUxfQVBJICovCisKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfbmV4dDMyKCks
IGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LCBh
bmQKKyAqIGFkdmFuY2UgdGhlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBpbmRleCBmb2xsb3dpbmcg
dGhlIGNoYXJhY3Rlci4KKyAqIFRoaXMgaXMgYSBwb3N0LWluY3JlbWVudCBvcGVyYXRpb24uCisg
KiBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIGVuZCBv
ZiB0aGUKKyAqIHRleHQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KKyNkZWZpbmUgVVRF
WFRfTkVYVDMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8ICh1dCktPmNodW5rTGVu
Z3RoICYmICgodXQpLT5jaHVua0NvbnRlbnRzKVsodXQpLT5jaHVua09mZnNldF08MHhkODAwID8g
XAorICAgICgodXQpLT5jaHVua0NvbnRlbnRzKVsoKHV0KS0+Y2h1bmtPZmZzZXQpKytdIDogdXRl
eHRfbmV4dDMyKHV0KSkKKworLyoqCisgKiBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4dF9wcmV2aW91
czMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqICBNb3Zl
IHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgY2hhcmFjdGVyIChjb2RlIHBvaW50KSB3aG9z
ZQorICogIGluZGV4IHByZWNlZGVzIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQgcmV0dXJuIHRo
YXQgY2hhcmFjdGVyLgorICogIFRoaXMgaXMgYSBwcmUtZGVjcmVtZW50IG9wZXJhdGlvbi4KKyAq
ICBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0
IG9mIHRoZSAgdGV4dC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworI2RlZmluZSBVVEVY
VF9QUkVWSU9VUzMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA+IDAgJiYgXAorICAg
ICAodXQpLT5jaHVua0NvbnRlbnRzWyh1dCktPmNodW5rT2Zmc2V0LTFdIDwgMHhkODAwID8gXAor
ICAgICAgICAgICh1dCktPmNodW5rQ29udGVudHNbLS0oKHV0KS0+Y2h1bmtPZmZzZXQpXSAgOiAg
dXRleHRfcHJldmlvdXMzMih1dCkpCisKKy8qKgorICAqICBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4
dF9nZXROYXRpdmVJbmRleCgpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4K
KyAgKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBwb3NpdGlvbiwgd2hpY2ggY2FuIHJh
bmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LgorICAqIFRoZSBwb3Np
dGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1dCB0ZXh0LCBpbiB3aGF0ZXZlciBm
b3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRGLTggZm9yIGV4YW1wbGUpLCBhbmQg
bWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0aGUgY29ycmVzcG9uZGluZyBVQ2hh
ciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQgcG9zaXRpb24gd2lsbCBhbHdheXMg
YmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuIAorICAqCisgICogQHN0YWJsZSBJ
Q1UgMy42CisgICovCisjZGVmaW5lIFVURVhUX0dFVE5BVElWRUlOREVYKHV0KSAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8PSAodXQpLT5uYXRpdmVJbmRl
eGluZ0xpbWl0PyAgIFwKKyAgICAgICAgKHV0KS0+Y2h1bmtOYXRpdmVTdGFydCsodXQpLT5jaHVu
a09mZnNldCA6ICAgICBcCisgICAgICAgICh1dCktPnBGdW5jcy0+bWFwT2Zmc2V0VG9OYXRpdmUo
dXQpKSAgICAKKworLyoqCisgICogIGlubGluZSB2ZXJzaW9uIG9mIHV0ZXh0X3NldE5hdGl2ZUlu
ZGV4KCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICAqCisgICogU2V0
IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUgbmVhcmVzdCBjb2RlIHBvaW50
CisgICogYm91bmRhcnkgYXQgb3IgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgaW5kZXguCisgICog
VGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFsIGlucHV0IHRl
eHQuCisgICogSWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZSwgaXQgd2lsbCBiZSBwaW5uZWQg
dG8gYmUgd2l0aGluCisgICogdGhlIHJhbmdlIG9mIHRoZSBpbnB1dCB0ZXh0LgorICAqCisgICog
QHN0YWJsZSBJQ1UgMy44CisgICovCisjZGVmaW5lIFVURVhUX1NFVE5BVElWRUlOREVYKHV0LCBp
eCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IGludDY0X3QgX19vZmZzZXQgPSAoaXgp
IC0gKHV0KS0+Y2h1bmtOYXRpdmVTdGFydDsgXAorICAgICAgaWYgKF9fb2Zmc2V0Pj0wICYmIF9f
b2Zmc2V0PD0oaW50NjRfdCkodXQpLT5uYXRpdmVJbmRleGluZ0xpbWl0KSB7IFwKKyAgICAgICAg
ICAodXQpLT5jaHVua09mZnNldD0oaW50MzJfdClfX29mZnNldDsgXAorICAgICAgfSBlbHNlIHsg
XAorICAgICAgICAgIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCh1dCksIChpeCkpOyB9IH0KKworCisK
Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9ucyByZWxhdGVk
IHRvIHdyaXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSB0ZXh0LgorICogICBUaGVzZSB3aWxsIHdvcmsg
b25seSB3aXRoIG1vZGlmaWFibGUgVVRleHRzLiAgQXR0ZW1wdGluZyB0bworICogICBtb2RpZnkg
YSByZWFkLW9ubHkgVVRleHQgd2lsbCByZXR1cm4gYW4gZXJyb3Igc3RhdHVzLgorICoKKyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgKiAgUmV0dXJuIFRSVUUgaWYgdGhl
IHRleHQgY2FuIGJlIHdyaXR0ZW4gKG1vZGlmaWVkKSB3aXRoIHV0ZXh0X3JlcGxhY2UoKSBvcgor
ICogIHV0ZXh0X2NvcHkoKS4gIEZvciB0aGUgdGV4dCB0byBiZSB3cml0YWJsZSwgdGhlIHRleHQg
cHJvdmlkZXIgbXVzdAorICogIGJlIG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzIHdyaXRpbmcgYW5k
IHRoZSBVVGV4dCBtdXN0IG5vdCBiZSBmcm96ZW4uCisgKgorICogIEF0dGVtcHRpbmcgdG8gbW9k
aWZ5IHRleHQgd2hlbiB1dGV4dF9pc1dyaXRlYWJsZSgpIGlzIEZBTFNFIHdpbGwgZmFpbCAtCisg
KiAgdGhlIHRleHQgd2lsbCBub3QgYmUgbW9kaWZpZWQsIGFuZCBhbiBlcnJvciB3aWxsIGJlIHJl
dHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uCisgKiAgdGhhdCBhdHRlbXB0ZWQgdGhlIG1vZGlmaWNh
dGlvbi4KKyAqCisgKiBAcGFyYW0gIHV0ICAgdGhlIFVUZXh0IHRvIGJlIHRlc3RlZC4KKyAqIEBy
ZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCBpcyBtb2RpZmlhYmxlLgorICoKKyAqIEBzZWUgICAgdXRl
eHRfZnJlZXplKCkKKyAqIEBzZWUgICAgdXRleHRfcmVwbGFjZSgpCisgKiBAc2VlICAgIHV0ZXh0
X2NvcHkoKQorICogQHN0YWJsZSBJQ1UgMy40CisgKgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VY
UE9SVDIKK3V0ZXh0X2lzV3JpdGFibGUoY29uc3QgVVRleHQgKnV0KTsKKworCisvKioKKyAgKiBU
ZXN0IHdoZXRoZXIgdGhlcmUgaXMgbWV0YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4K
KyAgKiBAc2VlIFJlcGxhY2VhYmxlOjpoYXNNZXRhRGF0YSgpCisgICoKKyAgKiBAcGFyYW0gdXQg
VGhlIFVUZXh0IHRvIGJlIHRlc3RlZAorICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdW5kZXJseWlu
ZyB0ZXh0IGluY2x1ZGVzIG1ldGEgZGF0YS4KKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1Vf
U1RBQkxFIFVCb29sIFVfRVhQT1JUMgordXRleHRfaGFzTWV0YURhdGEoY29uc3QgVVRleHQgKnV0
KTsKKworCisvKioKKyAqIFJlcGxhY2UgYSByYW5nZSBvZiB0aGUgb3JpZ2luYWwgdGV4dCB3aXRo
IGEgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBMZWF2ZXMgdGhlIGN1cnJlbnQgaXRlcmF0aW9u
IHBvc2l0aW9uIGF0IHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlCisgKiAgbmV3bHkgaW5zZXJ0
ZWQgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh
YmxlIG9uIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0aW5nLAorICogdGhhdCBpcywgb25l
cyB3aGVyZSB1dGV4dF9pc1dyaXRhYmxlKCkgcmV0dXJucyBUUlVFLgorICoKKyAqIFdoZW4gdXNp
bmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRleHQgb3Bl
bmVkIG9udG8gdGhlCisgKiB1bmRlcmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIEJlaGF2aW9y
IGFmdGVyIGEgcmVwbGFjZSBvcGVyYXRpb24KKyAqIG9uIGEgVVRleHQgaXMgdW5kZWZpbmVkIGZv
ciBhbnkgb3RoZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlm
aWVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgICAgICB0aGUgVVRleHQgcmVw
cmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgorICogQHBhcmFtIG5hdGl2ZVN0
YXJ0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJlZ2lvbiB0byBi
ZSByZXBsYWNlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBv
ZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICog
QHBhcmFtIHJlcGxhY2VtZW50VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAor
ICogQHBhcmFtIHJlcGxhY2VtZW50TGVuZ3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgdGV4
dCwgb3IgLTEgaWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVz
ICAgICAgICAgICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGlu
Y2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgor
ICoKKyAqIEByZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0
cyBieSB3aGljaAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9y
IGNvbnRyYWN0ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIGludDMy
X3QgVV9FWFBPUlQyCit1dGV4dF9yZXBsYWNlKFVUZXh0ICp1dCwKKyAgICAgICAgICAgICBpbnQ2
NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICpyZXBsYWNlbWVudFRleHQsIGludDMyX3QgcmVwbGFjZW1lbnRMZW5ndGgsCisgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisKKy8qKgorICoKKyAqIENvcHkgb3Ig
bW92ZSBhIHN1YnN0cmluZyBmcm9tIG9uZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUg
dGV4dCwKKyAqIHdoaWxlIHJldGFpbmluZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRo
ZSB0ZXh0LgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVy
IHN1YnN0cmluZ3MuCisgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0
aGUgc291cmNlIHJhbmdlLgorICoKKyAqIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBp
cyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3
cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4KKyAqCisgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlz
IGxlZnQgZm9sbG93aW5nIHRoZSBuZXdseSBpbnNlcnRlZCB0ZXh0CisgKiBhdCB0aGUgZGVzdGlu
YXRpb24gcG9zaXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv
biBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3JpdGluZywKKyAqIHRoYXQgaXMsIG9uZXMgd2hl
cmUgdXRleHRfaXNXcml0YWJsZSgpIHJldHVybnMgVFJVRS4KKyAqCisgKiBXaGVuIHVzaW5nIHRo
aXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBvbmx5IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBv
bnRvIHRoZQorICogdW5kZXJseWluZyBuYXRpdmUgdGV4dCBzdHJpbmcuICBCZWhhdmlvciBhZnRl
ciBhIGNvcHkgb3BlcmF0aW9uCisgKiBvbiBhIFVUZXh0IGlzIHVuZGVmaW5lZCBpbiBhbnkgb3Ro
ZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlmaWVkIHN0cmlu
Zy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgIFRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhl
IHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQgIFRoZSBuYXRp
dmUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgY29waWVkIG9yIG1vdmVk
CisgKiBAcGFyYW0gbmF0aXZlTGltaXQgIFRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3Rl
ciBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIHJlZ2lvbgorICogICAgICAgICAgICAgICAgICAgICB0
byBiZSBjb3BpZWQuCisgKiBAcGFyYW0gZGVzdEluZGV4ICAgIFRoZSBuYXRpdmUgZGVzdGluYXRp
b24gaW5kZXggdG8gd2hpY2ggdGhlIHNvdXJjZSBzdWJzdHJpbmcgaXMKKyAqICAgICAgICAgICAg
ICAgICAgICAgY29waWVkIG9yIG1vdmVkLgorICogQHBhcmFtIG1vdmUgICAgICAgICBJZiBUUlVF
LCB0aGVuIHRoZSBzdWJzdHJpbmcgaXMgbW92ZWQsIG5vdCBjb3BpZWQvZHVwbGljYXRlZC4KKyAq
IEBwYXJhbSBzdGF0dXMgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3NpYmxl
IGVycm9ycyBpbmNsdWRlIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICogICAgICAgICAgICAgICAg
ICAgICAgIAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQy
Cit1dGV4dF9jb3B5KFVUZXh0ICp1dCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBp
bnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgIGludDY0X3QgZGVzdEluZGV4LAorICAgICAg
ICAgIFVCb29sIG1vdmUsCisgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioK
KyAgKiAgPHA+CisgICogIEZyZWV6ZSBhIFVUZXh0LiAgVGhpcyBwcmV2ZW50cyBhbnkgbW9kaWZp
Y2F0aW9uIHRvIHRoZSB1bmRlcmx5aW5nIHRleHQgaXRzZWxmCisgICogIGJ5IG1lYW5zIG9mIGZ1
bmN0aW9ucyBvcGVyYXRpbmcgb24gdGhpcyBVVGV4dC4KKyAgKiAgPC9wPgorICAqICA8cD4KKyAg
KiAgT25jZSBmcm96ZW4sIGEgVVRleHQgY2FuIG5vdCBiZSB1bmZyb3plbi4gIFRoZSBpbnRlbnQg
aXMgdG8gZW5zdXJlCisgICogIHRoYXQgYSB0aGUgdGV4dCB1bmRlcmx5aW5nIGEgZnJvemVuIFVU
ZXh0IHdyYXBwZXIgY2Fubm90IGJlIG1vZGlmaWVkIHZpYSB0aGF0IFVUZXh0LgorICAqICA8L3A+
CisgICogIDxwPgorICAqICBDYXV0aW9uOiAgZnJlZXppbmcgYSBVVGV4dCB3aWxsIGRpc2FibGUg
Y2hhbmdlcyBtYWRlIHZpYSB0aGUgc3BlY2lmaWMKKyAgKiAgIGZyb3plbiBVVGV4dCB3cmFwcGVy
IG9ubHk7IGl0IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYWJpbGl0eSB0bworICAq
ICAgZGlyZWN0bHkgbW9kaWZ5IHRoZSB0ZXh0IGJ5IGJ5cGFzc2luZyB0aGUgVVRleHQuICBBbnkg
c3VjaCBiYWNrZG9vciBtb2RpZmljYXRpb25zCisgICogICBhcmUgYWx3YXlzIGFuIGVycm9yIHdo
aWxlIFVUZXh0IGFjY2VzcyBpcyBvY2N1cmluZyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nCisgICog
ICB0ZXh0IGNhbiBnZXQgb3V0IG9mIHN5bmMgd2l0aCBVVGV4dCdzIGJ1ZmZlcmluZy4KKyAgKiAg
PC9wPgorICAqCisgICogIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJlIGZyb3plbi4KKyAgKiAg
QHNlZSAgIHV0ZXh0X2lzV3JpdGFibGUoKQorICAqICBAc3RhYmxlIElDVSAzLjYKKyAgKi8KK1Vf
U1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9mcmVlemUoVVRleHQgKnV0KTsKKworCisvKioK
KyAqIFVUZXh0IHByb3ZpZGVyIHByb3BlcnRpZXMgKGJpdCBmaWVsZCBpbmRleGVzKS4KKyAqCisg
KiBAc2VlIFVUZXh0CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworZW51bSB7CisgICAgLyoqCisg
ICAgICogSXQgaXMgcG90ZW50aWFsbHkgdGltZSBjb25zdW1pbmcgZm9yIHRoZSBwcm92aWRlciB0
byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjQKKyAgICAgKi8KKyAgICBVVEVYVF9QUk9WSURFUl9MRU5HVEhfSVNfRVhQRU5TSVZFID0gMSwK
KyAgICAvKioKKyAgICAgKiBUZXh0IGNodW5rcyByZW1haW4gdmFsaWQgYW5kIHVzYWJsZSB1bnRp
bCB0aGUgdGV4dCBvYmplY3QgaXMgbW9kaWZpZWQgb3IKKyAgICAgKiBkZWxldGVkLCBub3QganVz
dCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSBhY2Nlc3MoKSBmdW5jdGlvbiBpcyBjYWxsZWQKKyAg
ICAgKiAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLgorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAg
ICAqLworICAgIFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVOS1MgPSAyLAorICAgIC8qKgorICAg
ICAqIFRoZSBwcm92aWRlciBzdXBwb3J0cyBtb2RpZnlpbmcgdGhlIHRleHQgdmlhIHRoZSByZXBs
YWNlKCkgYW5kIGNvcHkoKQorICAgICAqIGZ1bmN0aW9ucy4KKyAgICAgKiBAc2VlIFJlcGxhY2Vh
YmxlCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgVVRFWFRfUFJPVklERVJf
V1JJVEFCTEUgPSAzLAorICAgIC8qKgorICAgICAqIFRoZXJlIGlzIG1ldGEgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhlIHRleHQuCisgICAgICogQHNlZSBSZXBsYWNlYWJsZTo6aGFzTWV0YURhdGEo
KQorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAqLyAKKyAgICBVVEVYVF9QUk9WSURFUl9I
QVNfTUVUQV9EQVRBID0gNCwKKyAgICAvKioKKyAgICAgKiBUZXh0IHByb3ZpZGVyIG93bnMgdGhl
IHRleHQgc3RvcmFnZS4KKyAgICAgKiAgR2VuZXJhbGx5IG9jY3VycyBhcyB0aGUgcmVzdWx0IG9m
IGEgZGVlcCBjbG9uZSBvZiB0aGUgVVRleHQuCisgICAgICogIFdoZW4gY2xvc2luZyB0aGUgVVRl
eHQsIHRoZSBhc3NvY2lhdGVkIHRleHQgbXVzdAorICAgICAqICBhbHNvIGJlIGNsb3NlZC9kZWxl
dGVkL2ZyZWVkLyB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZS4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjYKKyAgICAgKi8KKyAgICAgVVRFWFRfUFJPVklERVJfT1dOU19URVhUID0gNQorfTsKKworLyoq
CisgICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuY2xvbmUoKS4KKyAgKgor
ICAqICBjbG9uZSBhIFVUZXh0LiAgTXVjaCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3aGVyZSB0aGUg
c291cmNlIHRleHQgaXMgaXRzZWxmCisgICogIGFub3RoZXIgVVRleHQuCisgICoKKyAgKiAgQSBk
ZWVwIGNsb25lIHdpbGwgY29weSBib3RoIHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRo
ZSB1bmRlcmx5aW5nIHRleHQuCisgICogIFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVkIFVUZXh0IHdp
bGwgb3BlcmF0ZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlvbnMKKyAgKiAg
bWFkZSB0byB0aGUgdGV4dCBpbiBvbmUgd2lsbCBub3QgZWZmZWN0IHRoZSBvdGhlci4gIFRleHQg
cHJvdmlkZXJzIGFyZSBub3QKKyAgKiAgcmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVwIGNsb25lcy4g
IFRoZSB1c2VyIG9mIGNsb25lKCkgbXVzdCBjaGVjayB0aGUgc3RhdHVzIHJldHVybgorICAqICBh
bmQgYmUgcHJlcGFyZWQgdG8gaGFuZGxlIGZhaWx1cmVzLgorICAqCisgICogIEEgc2hhbGxvdyBj
bG9uZSByZXBsaWNhdGVzIG9ubHkgdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlczsgaXQgZG9lcyBu
b3QgbWFrZQorICAqICBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgdGV4dC4gIFNoYWxsb3cgY2xv
bmVzIGNhbiBiZSB1c2VkIGFzIGFuIGVmZmljaWVudCB3YXkgdG8gCisgICogIGhhdmUgbXVsdGlw
bGUgaXRlcmF0b3JzIGFjdGl2ZSBpbiBhIHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0IGlzIG5vdCBi
ZWluZworICAqICBtb2RpZmllZC4KKyAgKgorICAqICBBIHNoYWxsb3cgY2xvbmUgb3BlcmF0aW9u
IG11c3Qgbm90IGZhaWwgZXhjZXB0IGZvciB0cnVseSBleGNlcHRpb25hbCBjb25kaXRpb25zIHN1
Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICoKKyAgKiAgQSBVVGV4
dCBhbmQgaXRzIGNsb25lIG1heSBiZSBzYWZlbHkgY29uY3VycmVudGx5IGFjY2Vzc2VkIGJ5IHNl
cGFyYXRlIHRocmVhZHMuCisgICogIFRoaXMgaXMgdHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBk
ZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBUZXh0IFBy
b3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25zdHJhaW50
IGlzIG1ldC4KKworICAqCisgICogIEBwYXJhbSBkZXN0ICAgQSBVVGV4dCBzdHJ1Y3QgdG8gYmUg
ZmlsbGVkIGluIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgY2xvbmUgb3BlcmF0aW9uLAorICAqICAg
ICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhlIGNsb25lIGZ1bmN0aW9uIHNob3VsZCBoZWFwLWFs
bG9jYXRlIGEgbmV3IFVUZXh0IHN0cnVjdC4KKyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQg
dG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAg
Y2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cgY2xvbmUuCisgICogIEBwYXJhbSBzdGF0dXMgRXJy
b3JzIGFyZSByZXR1cm5lZCBoZXJlLiAgRm9yIGRlZXAgY2xvbmVzLCBVX1VOU1VQUE9SVEVEX0VS
Uk9SCisgICogICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHBy
b3ZpZGVyIGlzIHVuYWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5h
bCB0ZXh0LgorICAqICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBO
VUxMIGlmIHRoZSBjbG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCit0eXBlZGVmIFVUZXh0ICogVV9DQUxMQ09OVgorVVRleHRDbG9uZShVVGV4dCAq
ZGVzdCwgY29uc3QgVVRleHQgKnNyYywgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSAqc3RhdHVzKTsK
KworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm5hdGl2ZUxl
bmd0aCgpLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgVVRleHQgdG8gZ2V0IHRoZSBsZW5ndGggb2Yu
CisgKiBAcmV0dXJuIHRoZSBsZW5ndGgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdp
bmFsIHRleHQgc3RyaW5nLgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgaW50NjRfdCBVX0NBTExDT05WCitVVGV4dE5hdGl2ZUxlbmd0aChVVGV4dCAqdXQp
OworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmFjY2Vzcygp
LiAgR2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGV4dCBjaHVuaworICogIGNvbnRhaW5pbmcg
dGhlIHRleHQgYXQgYSByZXF1ZXN0ZWQgbmF0aXZlIGluZGV4LiAgVGhlIFVUZXh0J3MgaXRlcmF0
aW9uCisgKiAgcG9zaXRpb24gd2lsbCBiZSBsZWZ0IGF0IHRoZSByZXF1ZXN0ZWQgaW5kZXguICBJ
ZiB0aGUgaW5kZXggaXMgb3V0CisgKiAgb2YgYm91bmRzLCB0aGUgaXRlcmF0aW9uIHBvc2l0aW9u
IHdpbGwgYmUgbGVmdCBhdCB0aGUgc3RhcnQgb3IgZW5kCisgKiAgb2YgdGhlIHN0cmluZywgYXMg
YXBwcm9wcmlhdGUuCisgKgorICogIENodW5rcyBtdXN0IGJlZ2luIGFuZCBlbmQgb24gY29kZSBw
b2ludCBib3VuZGFyaWVzLiAgQSBzaW5nbGUgY29kZSBwb2ludAorICogIGNvbXByaXNlZCBvZiBt
dWx0aXBsZSBzdG9yYWdlIHVuaXRzIG11c3QgbmV2ZXIgc3BhbiBhIGNodW5rIGJvdW5kYXJ5Lgor
ICoKKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgdGhlIFVUZXh0IGJlaW5nIGFjY2Vzc2VkLgor
ICogQHBhcmFtIG5hdGl2ZUluZGV4IFJlcXVlc3RlZCBpbmRleCBvZiB0aGUgdGV4dCB0byBiZSBh
Y2Nlc3NlZC4KKyAqIEBwYXJhbSBmb3J3YXJkICAgICBJZiBUUlVFLCB0aGVuIHRoZSByZXR1cm5l
ZCBjaHVuayBtdXN0IGNvbnRhaW4gdGV4dAorICogICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5n
IGZyb20gdGhlIGluZGV4LCBzbyB0aGF0IHN0YXJ0PD1pbmRleDxsaW1pdC4KKyAqICAgICAgICAg
ICAgICAgICAgICBJZiBGQUxTRSwgdGhlbiB0aGUgcmV0dXJuZWQgY2h1bmsgbXVzdCBjb250YWlu
IHRleHQKKyAqICAgICAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGluZGV4LCBzbyB0aGF0IHN0
YXJ0PGluZGV4PD1saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBUcnVlIGlmIHRoZSByZXF1
ZXN0ZWQgaW5kZXggY291bGQgYmUgYWNjZXNzZWQuICBUaGUgY2h1bmsKKyAqICAgICAgICAgICAg
ICAgICAgICB3aWxsIGNvbnRhaW4gdGhlIHJlcXVlc3RlZCB0ZXh0LgorICogICAgICAgICAgICAg
ICAgICAgIEZhbHNlIHZhbHVlIGlmIGEgY2h1bmsgY2Fubm90IGJlIGFjY2Vzc2VkCisgKiAgICAg
ICAgICAgICAgICAgICAgKHRoZSByZXF1ZXN0ZWQgaW5kZXggaXMgb3V0IG9mIGJvdW5kcykuCisg
KgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgVUJvb2wg
VV9DQUxMQ09OVgorVVRleHRBY2Nlc3MoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBV
VGV4dC5leHRyYWN0KCkuCisgKgorICogRXh0cmFjdCB0ZXh0IGZyb20gYSBVVGV4dCBpbnRvIGEg
VUNoYXIgYnVmZmVyLiAgVGhlIHJhbmdlIG9mIHRleHQgdG8gYmUgZXh0cmFjdGVkCisgKiBpcyBz
cGVjaWZpZWQgaW4gdGhlIG5hdGl2ZSBpbmRpY2VzIG9mIHRoZSBVVGV4dCBwcm92aWRlci4gIFRo
ZXNlIG1heSBub3QgbmVjZXNzYXJpbHkKKyAqIGJlIFVURi0xNiBpbmRpY2VzLgorICogPHA+Cisg
KiBUaGUgc2l6ZSAobnVtYmVyIG9mIDE2IGJpdCBVQ2hhcnMpIGluIHRoZSBkYXRhIHRvIGJlIGV4
dHJhY3RlZCBpcyByZXR1cm5lZC4gIFRoZQorICogZnVsbCBhbW91bnQgaXMgcmV0dXJuZWQsIGV2
ZW4gd2hlbiB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBzaXplIGlzIHNtYWxsZXIuCisgKiA8cD4KKyAq
IFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlm
IHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQorICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUg
aXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICoKKyAqIEBw
YXJhbSAgdXQgICAgICAgICAgICB0aGUgVVRleHQgZnJvbSB3aGljaCB0byBleHRyYWN0IGRhdGEu
CisgKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0ICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjZXIgdG8gZXh0cmFjdC4KKyAqIEBwYXJhbSAgbmF0aXZlTGltaXQgICB0aGUgbmF0aXZl
IHN0cmluZyBpbmRleCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0CisgKiAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4dHJhY3QuCisgKiBAcGFyYW0gIGRlc3Qg
ICAgICAgICAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0
ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSwgaW4g
VUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5IGJlIHplcm8KKyAqICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgcHJlY29tcHV0aW5nIHRoZSByZXF1aXJlZCBzaXplLgorICog
QHBhcmFtICBzdGF0dXMgICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgSWYgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I6IFJldHVybnMgbnVt
YmVyIG9mIFVDaGFycyBmb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICBwcmVmbGlnaHRpbmcu
CisgKiBAcmV0dXJuIE51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGRhdGEuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCit0eXBlZGVm
IGludDMyX3QgVV9DQUxMQ09OVgorVVRleHRFeHRyYWN0KFVUZXh0ICp1dCwKKyAgICAgICAgICAg
ICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAg
IFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAgICBVRXJyb3JD
b2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVU
ZXh0LnJlcGxhY2UoKS4KKyAqCisgKiBSZXBsYWNlIGEgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIHRl
eHQgd2l0aCBhIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogTGVhdmVzIHRoZSBjdXJyZW50IGl0
ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZQorICogIG5ld2x5
IGluc2VydGVkIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogVGhpcyBmdW5jdGlvbiBuZWVkIG9u
bHkgYmUgaW1wbGVtZW50ZWQgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisg
KgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNp
bmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3Ry
aW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRl
eHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlv
biBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRvIGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVu
ZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJlIGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3Bl
cmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAgICAgICAgICAgICAgIHRoZSBVVGV4dCByZXByZXNl
bnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQg
ICAgICB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgcmVwbGFjZWQK
KyAqIEBwYXJhbSBuYXRpdmVMaW1pdCAgICAgIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZv
bGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICogQHBhcmFtIHJlcGxhY2VtZW50
VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICogQHBhcmFtIHJlcGxhY21l
bnRMZW5ndGggbGVuZ3RoIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGluIFVDaGFycywgb3IgLTEg
aWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgICAg
ICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICoKKyAqIEBy
ZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0cyBieSB3aGlj
aAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9yIGNvbnRyYWN0
ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgaW50MzJfdCBVX0NBTExD
T05WCitVVGV4dFJlcGxhY2UoVVRleHQgKnV0LAorICAgICAgICAgICAgIGludDY0X3QgbmF0aXZl
U3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCisgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnJl
cGxhY2VtZW50VGV4dCwgaW50MzJfdCByZXBsYWNtZW50TGVuZ3RoLAorICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBm
b3IgVVRleHQuY29weSgpLgorICoKKyAqIENvcHkgb3IgbW92ZSBhIHN1YnN0cmluZyBmcm9tIG9u
ZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxlIHJldGFpbmlu
ZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgorICogVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmluZ3MuCisgKiBUaGUgZGVz
dGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICoKKyAq
IFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7
CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4K
KyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5lZWQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgVVRleHQg
dHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisgKgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0
aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUK
KyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3Bv
bnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRleHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0
byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRv
IGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJl
IGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAg
ICAgICAgICAgVGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBv
bi4KKyAqIEBwYXJhbSBuYXRpdmVTdGFydCAgVGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUg
cmVnaW9uIHRvIGJlIGNvcGllZCBvciBtb3ZlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICBUaGUg
aW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNl
ZC4KKyAqIEBwYXJhbSBuYXRpdmVEZXN0ICAgVGhlIGRlc3RpbmF0aW9uIGluZGV4IHRvIHdoaWNo
IHRoZSBzb3VyY2Ugc3Vic3RyaW5nIGlzIGNvcGllZCBvciBtb3ZlZC4KKyAqIEBwYXJhbSBtb3Zl
ICAgICAgICAgSWYgVFJVRSwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBub3QgY29waWVk
L2R1cGxpY2F0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBz
dGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX05PX1dSSVRFX1BFUk1JU1NJT04KKyAq
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRlZiB2b2lkIFVfQ0FMTENPTlYKK1VUZXh0
Q29weShVVGV4dCAqdXQsCisgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBu
YXRpdmVMaW1pdCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZURlc3QsCisgICAgICAgICAgVUJv
b2wgbW92ZSwKKyAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0
aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm1hcE9mZnNldFRvTmF0aXZlKCkuCisgKiBN
YXAgZnJvbSB0aGUgY3VycmVudCBVQ2hhciBvZmZzZXQgd2l0aGluIHRoZSBjdXJyZW50IHRleHQg
Y2h1bmsgdG8KKyAqICB0aGUgY29ycmVzcG9uZGluZyBuYXRpdmUgaW5kZXggaW4gdGhlIG9yaWdp
bmFsIHNvdXJjZSB0ZXh0LgorICoKKyAqIFRoaXMgaXMgcmVxdWlyZWQgb25seSBmb3IgdGV4dCBw
cm92aWRlcnMgdGhhdCBkbyBub3QgdXNlIG5hdGl2ZSBVVEYtMTYgaW5kZXhlcy4KKyAqCisgKiBA
cGFyYW0gdXQgICAgIHRoZSBVVGV4dC4KKyAqIEByZXR1cm4gQWJzb2x1dGUgKG5hdGl2ZSkgaW5k
ZXggY29ycmVzcG9uZGluZyB0byBjaHVua09mZnNldCBpbiB0aGUgY3VycmVudCBjaHVuay4KKyAq
ICAgICAgICAgVGhlIHJldHVybmVkIG5hdGl2ZSBpbmRleCBzaG91bGQgYWx3YXlzIGJlIHRvIGEg
Y29kZSBwb2ludCBib3VuZGFyeS4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRl
ZiBpbnQ2NF90IFVfQ0FMTENPTlYKK1VUZXh0TWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQg
KnV0KTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5tYXBJ
bmRleFRvVVRGMTYoKS4KKyAqIE1hcCBmcm9tIGEgbmF0aXZlIGluZGV4IHRvIGEgVUNoYXIgb2Zm
c2V0IHdpdGhpbiBhIHRleHQgY2h1bmsuCisgKiBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgdGhl
IG5hdGl2ZSBpbmRleCBkb2VzIG5vdCBmYWxsIHdpdGhpbiB0aGUKKyAqICAgY3VycmVudCBjaHVu
ay4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIG9ubHkgZm9yIHRleHQgcHJvdmlk
ZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRpdmUgVVRGLTE2IGluZGV4ZXMuCisgKgorICogQHBhcmFt
IHV0ICAgICAgICAgIFRoZSBVVGV4dCBjb250YWluaW5nIHRoZSB0ZXh0IGNodW5rLgorICogQHBh
cmFtIG5hdGl2ZUluZGV4IEFic29sdXRlIChuYXRpdmUpIHRleHQgaW5kZXgsIGNodW5rLT5zdGFy
dDw9aW5kZXg8PWNodW5rLT5saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBDaHVuay1yZWxh
dGl2ZSBVVEYtMTYgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBuYXRpdmUK
KyAqICAgICAgICAgICAgICAgICAgICBpbmRleC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LwordHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKK1VUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2
KGNvbnN0IFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7CisKKworLyoqCisgKiBGdW5j
dGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC51dGV4dENsb3NlKCkuCisgKgorICogQSBU
ZXh0IFByb3ZpZGVyIGNsb3NlIGZ1bmN0aW9uIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHByb3ZpZGVy
IHR5cGVzIHRoYXQgbWFrZQorICogIGFsbG9jYXRpb25zIGluIHRoZWlyIG9wZW4gZnVuY3Rpb24g
KG9yIG90aGVyIGZ1bmN0aW9ucykgdGhhdCBtdXN0IGJlIAorICogIGNsZWFuZWQgd2hlbiB0aGUg
VVRleHQgaXMgY2xvc2VkLgorICoKKyAqIFRoZSBhbGxvY2F0aW9uIG9mIHRoZSBVVGV4dCBzdHJ1
Y3QgaXRzZWxmIGFuZCBhbnkgImV4dHJhIiBzdG9yYWdlCisgKiBhc3NvY2lhdGVkIHdpdGggdGhl
IFVUZXh0IGlzIGhhbmRsZWQgYnkgdGhlIGNvbW1vbiBVVGV4dCBpbXBsZW1lbnRhdGlvbgorICog
YW5kIGRvZXMgbm90IHJlcXVpcmUgcHJvdmlkZXIgc3BlY2lmaWMgY2xlYW51cCBpbiBhIGNsb3Nl
IGZ1bmN0aW9uLgorICoKKyAqIE1vc3QgVVRleHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb25zIGRv
IG5vdCBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSB1dCBB
IFVUZXh0IG9iamVjdCB0byBiZSBjbG9zZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgdm9pZCBVX0NBTExDT05WCitVVGV4dENsb3NlKFVUZXh0ICp1dCk7CisKKworLyoq
CisgICogICAocHVibGljKSAgRnVuY3Rpb24gZGlzcGF0Y2ggdGFibGUgZm9yIFVUZXh0LgorICAq
ICAgICAgICAgICAgIENvbmNlcHR1YWxseSB2ZXJ5IG11Y2ggbGlrZSBhIEMrKyBWaXJ0dWFsIEZ1
bmN0aW9uIFRhYmxlLgorICAqICAgICAgICAgICAgIFRoaXMgc3RydWN0IGRlZmluZXMgdGhlIG9y
Z2FuaXphdGlvbiBvZiB0aGUgdGFibGUuCisgICogICAgICAgICAgICAgRWFjaCB0ZXh0IHByb3Zp
ZGVyIGltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBhbgorICAqICAgICAgICAgICAgICBhY3R1
YWwgdGFibGUgdGhhdCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlv
bnMKKyAgKiAgICAgICAgICAgICAgZm9yIHRoZSB0eXBlIG9mIHRleHQgYmVpbmcgaGFuZGxlZC4K
KyAgKiAgIEBzdGFibGUgSUNVIDMuNgorICAqLworc3RydWN0IFVUZXh0RnVuY3MgeworICAgIC8q
KgorICAgICAqICAgKHB1YmxpYykgIEZ1bmN0aW9uIHRhYmxlIHNpemUsIHNpemVvZihVVGV4dEZ1
bmNzKQorICAgICAqICAgICAgICAgICAgIEludGVuZGVkIGZvciB1c2Ugc2hvdWxkIHRoZSB0YWJs
ZSBncm93IHRvIGFjY29tb2RhdGUgYWRkZWQKKyAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbnMg
aW4gdGhlIGZ1dHVyZSwgdG8gYWxsb3cgdGVzdHMgZm9yIG9sZGVyIGZvcm1hdAorICAgICAqICAg
ICAgICAgICAgIGZ1bmN0aW9uIHRhYmxlcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBleHRlbnNp
b25zLgorICAgICAqCisgICAgICogICAgICAgICAgICAgRmllbGRzIGFyZSBwbGFjZWQgZm9yIG9w
dGltYWwgYWxpZ25tZW50IG9uCisgICAgICogICAgICAgICAgICAgMzIvNjQvMTI4LWJpdC1wb2lu
dGVyIG1hY2hpbmVzLCBieSBub3JtYWxseSBncm91cGluZyB0b2dldGhlcgorICAgICAqICAgICAg
ICAgICAgIDQgMzItYml0IGZpZWxkcywKKyAgICAgKiAgICAgICAgICAgICA0IHBvaW50ZXJzLAor
ICAgICAqICAgICAgICAgICAgIDIgNjQtYml0IGZpZWxkcworICAgICAqICAgICAgICAgICAgIGlu
IHNlcXVlbmNlLgorICAgICAqICAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgaW50MzJf
dCAgICAgICB0YWJsZVNpemU7CisKKyAgICAvKioKKyAgICAgICogICAocHJpdmF0ZSkgIEFsaWdu
bWVudCBwYWRkaW5nLgorICAgICAgKiAgICAgICAgICAgICAgRG8gbm90IHVzZSwgcmVzZXJ2ZWQg
Zm9yIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrIG9ubHkuCisgICAgICAqICAgQGludGVybmFs
CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgcmVzZXJ2ZWQxLCAvKiogQGludGVybmFsICov
IHJlc2VydmVkMiwgLyoqIEBpbnRlcm5hbCAqLyByZXNlcnZlZDM7CisKKworICAgIC8qKgorICAg
ICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0Q2xvbmUKKyAgICAgKgorICAg
ICAqIEBzZWUgVVRleHRDbG9uZQorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAg
IFVUZXh0Q2xvbmUgKmNsb25lOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgZnVuY3Rpb24g
cG9pbnRlciBmb3IgVVRleHRMZW5ndGgKKyAgICAgKiBNYXkgYmUgZXhwZW5zaXZlIHRvIGNvbXB1
dGUhCisgICAgICoKKyAgICAgKiBAc2VlIFVUZXh0TGVuZ3RoCisgICAgICogQHN0YWJsZSBJQ1Ug
My42CisgICAgICovCisgICAgVVRleHROYXRpdmVMZW5ndGggKm5hdGl2ZUxlbmd0aDsKKworICAg
IC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0QWNjZXNzLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dEFjY2VzcworICAgICAqIEBzdGFibGUgSUNVIDMuNgor
ICAgICAqLworICAgIFVUZXh0QWNjZXNzICphY2Nlc3M7CisKKyAgICAvKioKKyAgICAgKiAocHVi
bGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dEV4dHJhY3QuCisgICAgICoKKyAgICAgKiBA
c2VlIFVUZXh0RXh0cmFjdAorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIFVU
ZXh0RXh0cmFjdCAqZXh0cmFjdDsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9u
IHBvaW50ZXIgZm9yIFVUZXh0UmVwbGFjZS4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRSZXBs
YWNlCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRSZXBsYWNlICpy
ZXBsYWNlOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3Ig
VVRleHRDb3B5LgorICAgICAqCisgICAgICogQHNlZSBVVGV4dENvcHkKKyAgICAgKiBAc3RhYmxl
IElDVSAzLjYKKyAgICAgKi8KKyAgICBVVGV4dENvcHkgKmNvcHk7CisKKyAgICAvKioKKyAgICAg
KiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dE1hcE9mZnNldFRvTmF0aXZlLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dE1hcE9mZnNldFRvTmF0aXZlCisgICAgICogQHN0YWJs
ZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRNYXBPZmZzZXRUb05hdGl2ZSAqbWFwT2Zmc2V0
VG9OYXRpdmU7CisKKyAgICAvKioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZv
ciBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNi4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRN
YXBOYXRpdmVJbmRleFRvVVRGMTYKKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAg
ICBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNiAqbWFwTmF0aXZlSW5kZXhUb1VURjE2OworCisg
ICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRDbG9zZS4K
KyAgICAgICoKKyAgICAgICogQHNlZSBVVGV4dENsb3NlCisgICAgICAqIEBzdGFibGUgSUNVIDMu
NgorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqY2xvc2U7CisKKyAgICAvKioKKyAgICAgICog
KHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAg
ICAgKi8KKyAgICBVVGV4dENsb3NlICAqc3BhcmUxOworICAgIAorICAgIC8qKgorICAgICAgKiAo
cHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9uIHBvaW50ZXIKKyAgICAgICogQGludGVybmFsCisgICAg
ICAqLworICAgIFVUZXh0Q2xvc2UgICpzcGFyZTI7CisKKyAgICAvKioKKyAgICAgICogKHByaXZh
dGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAgICAgKi8K
KyAgICBVVGV4dENsb3NlICAqc3BhcmUzOworCit9OworLyoqCisgKiBGdW5jdGlvbiBkaXNwYXRj
aCB0YWJsZSBmb3IgVVRleHQKKyAqIEBzZWUgVVRleHRGdW5jcworICovCit0eXBlZGVmIHN0cnVj
dCBVVGV4dEZ1bmNzIFVUZXh0RnVuY3M7CisKKyAvKioKKyAgKiAgIFVUZXh0IHN0cnVjdC4gIFBy
b3ZpZGVzIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBVVGV4dCBhY2Nlc3MgY29k
ZQorICAqICAgICAgICAgICAgICAgICAgYW5kIHRoZSBVVGV4dCBwcm92aWRlciBjb2RlIHRoYXQg
d29ya3Mgb24gc3BlY2lmaWMga2luZHMgb2YKKyAgKiAgICAgICAgICAgICAgICAgIHRleHQgIChV
VEYtOCwgbm9uY29udGlndW91cyBVVEYtMTYsIHdoYXRldmVyLikKKyAgKgorICAqICAgICAgICAg
ICAgICAgICAgQXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHByZWRlZmluZWQgdHlwZXMgb2Yg
dGV4dCBwcm92aWRlcnMKKyAgKiAgICAgICAgICAgICAgICAgIHRvIHBhc3MgdGV4dCBkYXRhIHRv
IElDVSBzZXJ2aWNlcyB3aWxsIGhhdmUgbm8gbmVlZCB0byB2aWV3IHRoZQorICAqICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzIG9mIHRoZSBVVGV4dCBzdHJ1Y3RzIHRoYXQgdGhleSBvcGVuLgor
ICAqCisgICogQHN0YWJsZSBJQ1UgMy42CisgICovCitzdHJ1Y3QgVVRleHQgeworICAgIC8qKgor
ICAgICAqICAgICAocHJpdmF0ZSkgIE1hZ2ljLiAgVXNlZCB0byBoZWxwIGRldGVjdCB3aGVuIFVU
ZXh0IGZ1bmN0aW9ucyBhcmUgaGFuZGVkCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBp
bnZhbGlkIG9yIHVuaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCisgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICB1dGV4dF9vcGVuWFlaKCkgZnVuY3Rpb25zIHRha2UgYW4gaW5pdGlhbGl6ZWQs
CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG9wZW4s
IFVUZXh0IHN0cnVjdCBhcyBhbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
YWwgZmlsbC1pbiBwYXJhbWV0ZXIuICBUaGlzIG1hZ2ljIGZpZWxkCisgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNoZWNrIGZvciB0aGF0IGluaXRpYWxpemF0aW9uLgor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCBwcm92aWRlciBjbG9zZSBmdW5jdGlv
bnMgbXVzdCBOT1QgY2xlYXIKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWdp
YyBmaWVsZCBiZWNhdXNlIHRoYXQgd291bGQgcHJldmVudAorICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgcmV1c2Ugb2YgdGhlIFVUZXh0IHN0cnVjdC4KKyAgICAgKiBAaW50ZXJuYWwKKyAg
ICAgKi8KKyAgICB1aW50MzJfdCAgICAgICBtYWdpYzsKKworCisgICAgLyoqCisgICAgICogICAg
IChwcml2YXRlKSAgRmxhZ3MgZm9yIG1hbmFnaW5nIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5n
IG9mCisgICAgICogICAgICAgICAgICAgICAgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFVU
ZXh0LgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIGludDMyX3QgICAgICAgIGZsYWdz
OworCisKKyAgICAvKioKKyAgICAgICogIFRleHQgcHJvdmlkZXIgcHJvcGVydGllcy4gIFRoaXMg
c2V0IG9mIGZsYWdzIGlzIG1haW50YWludGVkIGJ5IHRoZQorICAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICogIEBz
dGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgcHJvdmlkZXJQcm9w
ZXJ0aWVzOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgc2l6ZU9mU3RydWN0PXNpemVvZihV
VGV4dCkKKyAgICAgKiBBbGxvd3MgcG9zc2libGUgYmFja3dhcmQgY29tcGF0aWJsZSBleHRlbnNp
b24uCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBpbnQzMl90
ICAgICAgICAgc2l6ZU9mU3RydWN0OworICAgIAorICAgIC8qIC0tLS0tLSAxNiBieXRlIGFsaWdu
bWVudCBib3VuZGFyeSAtLS0tLS0tLS0tLSAgKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAg
KHByb3RlY3RlZCkgTmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgcG9zaXRpb24g
Zm9sbG93aW5nCisgICAgICAqICAgICAgICAgICAgICB0aGUgY3VycmVudCBjaHVuay4KKyAgICAg
ICogIEBzdGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBpbnQ2NF90ICAgICAgICAgY2h1bmtO
YXRpdmVMaW1pdDsKKworICAgIC8qKgorICAgICAqICAgKHByb3RlY3RlZCkgIFNpemUgaW4gYnl0
ZXMgb2YgdGhlIGV4dHJhIHNwYWNlIChwRXh0cmEpLgorICAgICAqICBAc3RhYmxlIElDVSAzLjQK
KyAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICBleHRyYVNpemU7CisKKyAgICAvKioKKyAgICAg
ICogICAgKHByb3RlY3RlZCkgVGhlIGhpZ2hlc3QgY2h1bmsgb2Zmc2V0IHdoZXJlIG5hdGl2ZSBp
bmRleGluZyBhbmQKKyAgICAgICogICAgY2h1bmsgKFVURi0xNikgaW5kZXhpbmcgY29ycmVzcG9u
ZC4gIEZvciBVVEYtMTYgc291cmNlcywgdmFsdWUKKyAgICAgICogICAgd2lsbCBiZSBlcXVhbCB0
byBjaHVua0xlbmd0aC4KKyAgICAgICoKKyAgICAgICogICAgQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBuYXRpdmVJbmRleGluZ0xpbWl0OworCisgICAgLyog
LS0tLSAxNiBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tLS0tLSAqLworICAgIAorICAgIC8qKgor
ICAgICAqICAocHJvdGVjdGVkKSBOYXRpdmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBp
biB0aGUgdGV4dCBjaHVuay4KKyAgICAgKiAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAg
aW50NjRfdCAgICAgICAgIGNodW5rTmF0aXZlU3RhcnQ7CisKKyAgICAvKioKKyAgICAgKiAgKHBy
b3RlY3RlZCkgQ3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0IGNodW5r
IChVVEYtMTYgYnVmZmVyKS4KKyAgICAgKiAgVGhpcyBpcyB0aGUgaW5kZXggdG8gdGhlIGNoYXJh
Y3RlciB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdXRleHRfbmV4dDMyKCkuCisgICAgICogIEBz
dGFibGUgSUNVIDMuNgorICAgICAqLworICAgIGludDMyX3QgICAgICAgICBjaHVua09mZnNldDsK
KworICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSBMZW5ndGggdGhlIHRleHQgY2h1bmsgKFVU
Ri0xNiBidWZmZXIpLCBpbiBVQ2hhcnMuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAq
LworICAgIGludDMyX3QgICAgICAgICBjaHVua0xlbmd0aDsKKworICAgIC8qIC0tLS0gMTYgIGJ5
dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAqICAocHJv
dGVjdGVkKSAgcG9pbnRlciB0byBhIGNodW5rIG9mIHRleHQgaW4gVVRGLTE2IGZvcm1hdC4KKyAg
ICAgKiAgTWF5IHJlZmVyIGVpdGhlciB0byBvcmlnaW5hbCBzdG9yYWdlIG9mIHRoZSBzb3VyY2Ug
b2YgdGhlIHRleHQsIG9yCisgICAgICogIGlmIGNvbnZlcnNpb24gd2FzIHJlcXVpcmVkLCB0byBh
IGJ1ZmZlciBvd25lZCBieSB0aGUgVVRleHQuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAg
ICAqLworICAgIGNvbnN0IFVDaGFyICAgICpjaHVua0NvbnRlbnRzOworCisgICAgIC8qKgorICAg
ICAgKiAocHVibGljKSAgICAgUG9pbnRlciB0byBEaXNwYXRjaCB0YWJsZSBmb3IgYWNjZXNzaW5n
IGZ1bmN0aW9ucyBmb3IgdGhpcyBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGNvbnN0IFVUZXh0RnVuY3MgICAgICpwRnVuY3M7CisKKyAgICAvKioKKyAgICAg
KiAgKHByb3RlY3RlZCkgIFBvaW50ZXIgdG8gYWRkaXRpb25hbCBzcGFjZSByZXF1ZXN0ZWQgYnkg
dGhlCisgICAgICogICAgICAgICAgICAgICB0ZXh0IHByb3ZpZGVyIGR1cmluZyB0aGUgdXRleHRf
b3BlbiBvcGVyYXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgdm9p
ZCAgICAgICAgICAqcEV4dHJhOworCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRl
ciB0byBzdHJpbmcgb3IgdGV4dC1jb250YWluaW4gb2JqZWN0IG9yIHNpbWlsYXIuCisgICAgICog
VGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSB0ZXh0IHRoYXQgdGhpcyBVVGV4dCBpcyB3cmFwcGlu
ZywgaW4gYSBmb3JtYXQKKyAgICAgKiAgdGhhdCBpcyBrbm93biB0byB0aGUgdGV4dCBwcm92aWRl
ciBmdW5jdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgY29uc3Qg
dm9pZCAgICpjb250ZXh0OworCisgICAgLyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tICovCisKKyAgICAvKioKKyAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFp
bGFibGUgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAgKiBOb3QgdXNlZCBieSBV
VGV4dCBjb21tb24gY29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBj
b25zdCB2b2lkICAgICAqcDsgCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRlciBm
aWVsZHMgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisgICAgICogTm90
IHVzZWQgYnkgVVRleHQgY29tbW9uIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICovCisgICAgY29uc3Qgdm9pZCAgICAgKnE7CisgICAgIC8qKgorICAgICAqIChwcm90ZWN0ZWQp
IFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgor
ICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgorICAgICAqIEBzdGFibGUgSUNV
IDMuNgorICAgICAgKi8KKyAgICBjb25zdCB2b2lkICAgICAqcjsKKworICAgIC8qKgorICAgICAg
KiAgUHJpdmF0ZSBmaWVsZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJh
bWV3b3JrCisgICAgICAqICAgICBpdHNlbGYuICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5
IHRoZSB0ZXh0IHByb3ZpZGVycy4KKyAgICAgICogQGludGVybmFsIElDVSAzLjQKKyAgICAgICov
CisgICAgdm9pZCAgICAgICAgICAgKnByaXZQOworCisKKyAgICAvKiAtLS0gMTYgYnl0ZSBhbGln
bm1lbnQgYm91bmRhcnktLS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAocHJvdGVjdGVk
KSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisg
ICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmssIG9yIGJ5IHRoZSBjbGllbnQg
KHVzZXIpIG9mIHRoZSBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICAqLwor
ICAgIGludDY0X3QgICAgICAgICBhOworCisgICAgLyoqCisgICAgICAqIChwcm90ZWN0ZWQpIElu
dGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAg
ICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZyYW1ld29yaywgb3IgYnkgdGhlIGNsaWVudCAodXNl
cikgb2YgdGhlIFVUZXh0LgorICAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgICovCisgICAg
aW50MzJfdCAgICAgICAgIGI7CisKKyAgICAvKioKKyAgICAgICogKHByb3RlY3RlZCkgSW50ZWdl
ciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgorICAgICAgKiBO
b3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3b3JrLCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBv
ZiB0aGUgVVRleHQuCisgICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQz
Ml90ICAgICAgICAgYzsKKworICAgIC8qICAtLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tLSAqLworCisKKyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9y
IGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAg
VGhpcyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAq
IEBpbnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGludDY0X3QgICAgICAgICBwcml2QTsK
KyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2Ug
YnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3Qg
dG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJ
Q1UgMy40CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QjsKKyAgICAvKioKKyAg
ICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0
IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hl
ZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QzsKK307CisKKworLyoqCisgKiAgQ29tbW9u
IGZ1bmN0aW9uIGZvciB1c2UgYnkgVGV4dCBQcm92aWRlciBpbXBsZW1lbnRhdGlvbnMgdG8gYWxs
b2NhdGUgYW5kL29yIGluaXRpYWxpemUKKyAqICBhIG5ldyBVVGV4dCBzdHJ1Y3QuICBUbyBiZSBj
YWxsZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMuCisg
KiAgSWYgdGhlIHN1cHBsaWVkIFVUZXh0IHBhcmFtZXRlciBpcyBudWxsLCBhIG5ldyBVVGV4dCBz
dHJ1Y3Qgd2lsbCBiZSBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisgKiAgSWYgdGhlIHN1cHBsaWVk
IFVUZXh0IGlzIGFscmVhZHkgb3BlbiwgdGhlIHByb3ZpZGVyJ3MgY2xvc2UgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQKKyAqICBzbyB0aGF0IHRoZSBzdHJ1Y3QgY2FuIGJlIHJldXNlZCBieSB0aGUg
b3BlbiB0aGF0IGlzIGluIHByb2dyZXNzLgorICoKKyAqIEBwYXJhbSB1dCAgIHBvaW50ZXIgdG8g
YSBVVGV4dCBzdHJ1Y3QgdG8gYmUgcmUtdXNlZCwgb3IgbnVsbCBpZiBhIG5ldyBVVGV4dAorICog
ICAgICAgICAgICAgc2hvdWxkIGJlIGFsbG9jYXRlZC4KKyAqIEBwYXJhbSBleHRyYVNwYWNlIFRo
ZSBhbW91bnQgb2YgYWRkaXRpb25hbCBzcGFjZSB0byBiZSBhbGxvY2F0ZWQgYXMgcGFydAorICog
ICAgICAgICAgICAgb2YgdGhpcyBVVGV4dCwgZm9yIHVzZSBieSB0eXBlcyBvZiBwcm92aWRlcnMg
dGhhdCByZXF1aXJlCisgKiAgICAgICAgICAgICBhZGRpdGlvbmFsIHN0b3JhZ2UuCisgKiBAcGFy
YW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gcG9pbnRlciB0
byB0aGUgVVRleHQsIGFsbG9jYXRlZCBpZiBuZWNlc3NhcnksIHdpdGggZXh0cmEgc3BhY2Ugc2V0
IHVwIGlmIHJlcXVlc3RlZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4
dCAqIFVfRVhQT1JUMgordXRleHRfc2V0dXAoVVRleHQgKnV0LCBpbnQzMl90IGV4dHJhU3BhY2Us
IFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorLyoq
CisgICogQGludGVybmFsCisgICogIFZhbHVlIHVzZWQgdG8gaGVscCBpZGVudGlmeSBjb3JyZWN0
bHkgaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0cy4KKyAgKiAgTm90ZTogIG11c3QgYmUgcHVibGlj
bHkgdmlzaWJsZSBzbyB0aGF0IFVURVhUX0lOSVRJQUxJWkVSIGNhbiBhY2Nlc3MgaXQuCisgICov
CitlbnVtIHsKKyAgICBVVEVYVF9NQUdJQyA9IDB4MzQ1YWQ4MmMKK307CisjZW5kaWYgIC8qIFVf
SElERV9JTlRFUk5BTF9BUEkgKi8KKworLyoqCisgKiBpbml0aWFsaXplciB0byBiZSB1c2VkIHdp
dGggbG9jYWwgKHN0YWNrKSBpbnN0YW5jZXMgb2YgYSBVVGV4dAorICogIHN0cnVjdC4gIFVUZXh0
IHN0cnVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgcGFzc2luZworICogIHRoZW0gdG8g
b25lIG9mIHRoZSB1dGV4dF9vcGVuIGZ1bmN0aW9ucy4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjYK
KyAqLworI2RlZmluZSBVVEVYVF9JTklUSUFMSVpFUiB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIFVURVhUX01BR0lDLCAgICAgICAg
ICAvKiBtYWdpYyAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAg
ICAgICAgICAgICAgICAgLyogZmxhZ3MgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAg
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHByb3ZpZGVyUHJvcHMgICAgICAgICovIFwK
KyAgICAgICAgICAgICAgICAgIHNpemVvZihVVGV4dCksICAgICAgICAvKiBzaXplT2ZTdHJ1Y3Qg
ICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyog
Y2h1bmtOYXRpdmVMaW1pdCAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAg
ICAgICAgICAgIC8qIGV4dHJhU2l6ZSAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAg
IDAsICAgICAgICAgICAgICAgICAgICAvKiBuYXRpdmVJbmRleGluZ0xpbWl0ICAqLyBcCisgICAg
ICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtOYXRpdmVTdGFydCAg
ICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGNodW5r
T2Zmc2V0ICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAvKiBjaHVua0xlbmd0aCAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxM
LCAgICAgICAgICAgICAgICAgLyogY2h1bmtDb250ZW50cyAgICAgICAgKi8gXAorICAgICAgICAg
ICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIHBGdW5jcyAgICAgICAgICAgICAgICov
IFwKKyAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwRXh0cmEgICAg
ICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAg
LyogY29udGV4dCAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgTlVMTCwgTlVM
TCwgTlVMTCwgICAgIC8qIHAsIHEsIHIgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAg
ICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwcml2UCAgICAgICAgICAgICAgICAqLyBcCisg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAgICAgICAgICAgICAgLyogYSwgYiwgYyAgICAgICAg
ICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgMCwgMCAgICAgICAgICAgICAgIC8qIHBy
aXZBLEIsQywgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIH0KKworCitVX0NERUNM
X0VORAorCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDIxNTU5NjY3NDg0Njgy
MTRjMDM2NThkMDNhNWQ3NzQ2ZmZlODA4YTQuLjZlY2RjZTZiZTdmZTg0ZTFmMGVhMjgyM2NiOGM5
MzVlYjlkNzIwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0
KFdURl9IRUFERVJTCiAgICAgdGV4dC9DU3RyaW5nLmgKICAgICB0ZXh0L0ludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uaAogICAgIHRleHQvTENoYXIuaAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmgKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5oCiAgICAgdGV4dC9TdHJpbmdDb21t
b24uaAogICAgIHRleHQvU3RyaW5nSGFzaC5oCkBAIC0xNDcsOSArMTQ4LDE1IEBAIHNldChXVEZf
SEVBREVSUwogICAgIHRleHQvU3RyaW5nVmlldy5oCiAgICAgdGV4dC9TeW1ib2xJbXBsLmgKICAg
ICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKyAgICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKyAg
ICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaAogICAgIHRleHQvVW5pcXVlZFN0
cmluZ0ltcGwuaAogICAgIHRleHQvV1RGU3RyaW5nLmgKIAorICAgIHRleHQvaWN1L1VUZXh0UHJv
dmlkZXIuaAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAorICAgIHRleHQvaWN1
L1VUZXh0UHJvdmlkZXJVVEYxNi5oCisKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCiAK
ICAgICB1bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgKQEAgLTIyMSw4ICsyMjgsMTMgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAogICAgIHRleHQvU3RyaW5nVmll
dy5jcHAKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAorICAgIHRleHQvVGV4dEJyZWFrSXRl
cmF0b3IuY3BwCiAgICAgdGV4dC9XVEZTdHJpbmcuY3BwCiAKKyAgICB0ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmNwcAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAgdGV4
dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAorCiAgICAgdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwCiAKICAgICB1bmljb2RlL1VURjguY3BwCkBAIC0yMzQsNiArMjQ2LDcgQEAgc2V0KFdU
Rl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V1RGX0RJUn0vd3RmIgogICAgICIke1dURl9E
SVJ9L3d0Zi9kdG9hIgogICAgICIke1dURl9ESVJ9L3d0Zi90ZXh0IgorICAgICIke1dURl9ESVJ9
L3d0Zi90ZXh0L2ljdSIKICAgICAiJHtXVEZfRElSfS93dGYvdGhyZWFkcyIKICAgICAiJHtXVEZf
RElSfS93dGYvdW5pY29kZSIKICAgICAiJHtUSElSRFBBUlRZX0RJUn0iCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDcxYTUyYWU1ZTFlMjdhNGM4ODk1NjU3Y2Q0ZTA1ZjM4YmM2YTBhOWUu
LmJhMTU0NzQ4NzAxOWIyMWMzN2NmOTZmOWUwOTM3MmI4ZGQxZGM4OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xLDYgKzEsOCBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAg
ICBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAogCisgICAgdGV4dC9lZmwv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKKwogICAgIGVmbC9EaXNwYXRjaFF1
ZXVlRWZsLmNwcAogICAgIGVmbC9NYWluVGhyZWFkRWZsLmNwcAogICAgIGVmbC9SdW5Mb29wRWZs
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyMGI5Yjk5M2E3YWE3ZjhjNTY1Y2Iy
ODMyNDZjY2JmZDViMDc1NDAyLi5mNjE5ZGQ1N2M3Nzg4ZGUyYzk1MzcyZDJiYWVhOTk4MGY3NmI1
N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOCw2ICs4LDggQEAgbGlzdChBUFBF
TkQgV1RGX1NPVVJDRVMKICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcAogICAgIGdsaWIvUnVu
TG9vcEdMaWIuY3BwCiAgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAK
KworICAgIHRleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCiApCiAK
IGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
Y2UzZGRiY2IwODFiZjczNzllNTM1N2QxN2JiOWJiYmRhZDBhOTNlOS4uNDkzYjc5OGQ2MzY2NTJm
MjMyZWEzZjk2ZDdjZjg5Zjg5MzIzYjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTE4LDYgKzE4LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJD
Ri5jcHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAgIHRleHQvbWFjL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KKwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAgIGNv
Y29hL1dvcmtRdWV1ZUNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAzYjNm
OThiYmNjZmQ5MDI5Njk0ZmRlMjUyNjExMjdhNjEyYmRjMzIzLi5hMGJkMTMyYzNlNGMxNzIzYjg5
MTVkMTBiYjk0MzQ0ZWZkZTAyOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMSw1
ICsxLDcgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0gICAgUExhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzV2luLmNwcAorICAgIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1dp
bi5jcHAKKworICAgIHRleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3Bw
CiAKICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmlu
Z0NGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAppbmRleCA2NzhmOGJmZDEyMGEzYTM2MTFiM2NjZThl
MWNlOThmZWM5YWFjMDJkLi45MWIzMWY5ZGRmOTAwYTY2Zjk3ODg4YjljM2YxMWZiYjU2NjEyNTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaW55TFJVQ2FjaGUuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIFZhbHVlVHlwZT4KIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewpAQCAtNzgsNCAr
NzgsNyBAQCBwcml2YXRlOgogCiB9CiAKK3VzaW5nIFdURjo6VGlueUxSVUNhY2hlOwordXNpbmcg
V1RGOjpUaW55TFJVQ2FjaGVQb2xpY3k7CisKICNlbmRpZiAvLyBUaW55TFJVQ2FjaGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDc2NjA3ZDJhOTNkNWY4YjEwNDQ3MGVkODdjNDRkOWNjZjA4OTMxOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAg
LTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCisjZGVmaW5lIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVV9oCisKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKyNpbmNsdWRlIDx1bmljb2Rl
L3VicmsuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNz
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJy
ZWFrSXRlcmF0b3JQb29sKTsKK3B1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7
IH0KKworICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQorICAg
IHsKKyAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQ
b29sPiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9v
bD47CisgICAgICAgIHJldHVybiAqKnBvb2w7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBt
YWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGxv
Y2FsZVdpdGhLZXl3b3JkOworICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmQobG9jYWxl
KTsKKyAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgiQGJyZWFrPSIpOwor
ICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKKyAg
ICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoImxvb3NlIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5v
cm1hbDoKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIm5vcm1h
bCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTRTdHJpY3Q6CisgICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRl
cmFsKCJzdHJpY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBsb2NhbGVXaXRoS2V5d29yZC50b1N0cmluZygpOworICAgIH0KKworICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVy
YXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZyBs
b2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7CisgICAgICAgIGlmIChtb2RlID09IExpbmVC
cmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJl
YWtLZXl3b3JkID0gbG9jYWxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUs
IG1vZGUpOworCisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IDA7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAobV9wb29sW2ldLmZpcnN0ID09IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29y
ZCkgeworICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbV9wb29sW2ldLnNlY29uZDsKKyAgICAg
ICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpdGVyYXRvcikgeworICAgICAg
ICAgICAgaXRlcmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFs
QnJlYWtLZXl3b3JkLCBtb2RlLCBpc0NKSyk7CisgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKCFt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworICAgICAgICBtX3ZlbmRlZEl0
ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCk7Cisg
ICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICB9CisKKyAgICB2b2lkIHB1dChUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IpCisgICAgeworICAgICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworCisgICAgICAgIGlmIChtX3Bv
b2wuc2l6ZSgpID09IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJh
dG9yKG1fcG9vbFswXS5zZWNvbmQpOworICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fcG9vbC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMu
dGFrZShpdGVyYXRvciksIGl0ZXJhdG9yKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OworCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRv
bWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5OworICAgIHR5cGVkZWYgVmVjdG9y
PEVudHJ5LCBjYXBhY2l0eT4gUG9vbDsKKyAgICBQb29sIG1fcG9vbDsKKyAgICBIYXNoTWFwPFRl
eHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKworICAg
IGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJh
dG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ODI0ZTY0MThm
NDI4MmIzZjlkMzUxZTU1MjBjNWRmY2MyYmEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDkyOSBAQAorLyoK
KyAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorCisj
aW5jbHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCisjaW5jbHVkZSAiVVRleHRQcm92
aWRlckxhdGluMS5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgorCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJldHRlciBuYW1lCisjZGVmaW5l
IEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkpCisKK25hbWVz
cGFjZSBXVEYgeworCisvLyBJdGVyYXRvciBpbml0aWFsaXphdGlvbgorCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkpCit7CisgICAg
VUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJr
X29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJl
YWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1
cyk7CisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCisjaWYgIVBMQVRGT1JNKElPUykKKworc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3Qg
Y2hhciogYnJlYWtSdWxlcykKK3sKKyAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKKyAgICBV
RXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RybGVuKGJyZWFrUnVsZXMpOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0g
U3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnJlYWtSdWxlcyksIGxl
bmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3BlblJ1
bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZv
cGVuU3RhdHVzKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1
cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjogJXMgKCVkKSIsIHVfZXJy
b3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9
CisKKyNlbmRpZgorCisKKy8vIEl0ZXJhdG9yIHRleHQgc2V0dGluZworCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcmF0
b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAg
ICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKKyAgICAgICAgdGV4dExvY2FsLnRleHQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAgICAgICAgdGV4dExvY2FsLnRleHQuZXh0cmFTaXplID0g
c2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOworICAgICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0cmEg
PSB0ZXh0TG9jYWwuYnVmZmVyOworCisgICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0aW4xVVRleHRQcm92aWRl
cigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCAmb3Bl
blN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9w
ZW5TdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVi
cmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciks
IHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3Rh
dHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRo
IHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKworICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9y
KSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksICZzZXRUZXh0U3RhdHVz
KTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAmaXRlcmF0b3I7Cit9CisKK3N0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICBpZiAoc3Ry
aW5nLmlzOEJpdCgpKSB7CisgICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7CisgICAg
ICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7CisgICAgICAgIHRleHRMb2Nh
bC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKKyAgICAgICAgdGV4
dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKKworICAgICAgICBVRXJyb3JD
b2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFVUZXh0KiB0ZXh0ID0gb3Bl
bkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgsICZvcGVuU3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
ciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdXRleHRf
Y2xvc2UodGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVVRleHQgdGV4dExvY2FsID0gVVRF
WFRfSU5JVElBTElaRVI7CisKKyAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0
UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQi
LCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAg
ICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJr
X3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0
ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1
cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBz
dGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CisgICAgfQorCisgICAgcmV0
dXJuICZpdGVyYXRvcjsKK30KKworCisvLyBTdGF0aWMgaXRlcmF0b3JzCisKK1RleHRCcmVha0l0
ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgaWYgKCFzdGF0aWNXb3JkQnJlYWtJdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9y
KCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciA9IGluaXRp
YWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKKyAgICBpZiAoIXN0YXRpY1NlbnRlbmNlQnJl
YWtJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4
dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Cit9CisK
K1RleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8gVGhpcyBydWxlIHNldCBpcyBiYXNl
ZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2YgSUNVIDQuMAorICAgIC8vIDxo
dHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3MvcmVsZWFzZS00
LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KKyAgICAvLyBUaGUgbWFqb3IgZGlmZmVy
ZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVkIGJlbG93OgorICAgIC8vICog
UmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gU3BhY2luZ01hcmt9XScgd2l0
aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9IC0gJEV4dGVuZF0nIGZvciBJ
Q1UgMy44IG9yIGVhcmxpZXI7CisgICAgLy8gKiBSZW1vdmVkIHJ1bGVzIHRoYXQgcHJldmVudCBh
IGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJhY3RlcnMgKEJ1ZyAyNDM0Mik7
CisgICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3Zpbmcg
YWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBleGNlcHQgVGFtaWwgKEJ1ZyAx
NTc5MCksIGFuZDsKKyAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBm
cm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2FyYSB2b2ljZWQgbWFy
a3MuCisgICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwgaW5kaWNhdG9yIHN5bWJvbHMu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9CisgICAgICAgICIkQ1IgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgorICAgICAgICAiJExGICAgICAgPSBb
XFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKKyAgICAgICAgIiRDb250cm9sID0g
W1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1dOyIKKyAgICAgICAgIiRWb2lj
ZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiIC8vIEphcGFuZXNlIGhhbGYtd2lkdGgga2F0YWth
bmEgdm9pY2VkIG1hcmtzCisgICAgICAgICIkRXh0ZW5kICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rl
cl9CcmVhayA9IEV4dGVuZH0gJFZvaWNlTWFya3MgLSBbXFx1MEUzMCBcXHUwRTMyIFxcdTBFNDUg
XFx1MEVCMCBcXHUwRUIyXV07IgorICAgICAgICAiJFNwYWNpbmdNYXJrID0gW1tcXHB7R2VuZXJh
bF9DYXRlZ29yeSA9IFNwYWNpbmcgTWFya31dIC0gJEV4dGVuZF07IgorICAgICAgICAiJEwgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMfV07IgorICAgICAgICAiJFYgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBWfV07IgorICAgICAgICAiJFQgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBUfV07IgorICAgICAgICAiJExWICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVn1dOyIKKyAgICAgICAgIiRMVlQg
ICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZUfV07IgorICAgICAgICAiJEhp
bjAgICAgPSBbXFx1MDkwNS1cXHUwOTM5XTsiIC8vIERldmFuYWdhcmkgTGV0dGVyIEEsLi4uLEhh
CisgICAgICAgICIkSGluViAgICA9IFxcdTA5NEQ7IiAvLyBEZXZhbmFnYXJpIFNpZ24gVmlyYW1h
CisgICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5MzldOyIgLy8gRGV2YW5hZ2FyaSBM
ZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkQmVuMCAgICA9IFtcXHUwOTg1LVxcdTA5QjldOyIg
Ly8gQmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRCZW5WICAgID0gXFx1MDlDRDsi
IC8vIEJlbmdhbGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1
MDlCOV07IiAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRQYW4wICAgID0g
W1xcdTBBMDUtXFx1MEEzOV07IiAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAg
IiRQYW5WICAgID0gXFx1MEE0RDsiIC8vIEd1cm11a2hpIFNpZ24gVmlyYW1hCisgICAgICAgICIk
UGFuMSAgICA9IFtcXHUwQTE1LVxcdTBBMzldOyIgLy8gR3VybXVraGkgTGV0dGVyIEthLC4uLixI
YQorICAgICAgICAiJEd1ajAgICAgPSBbXFx1MEE4NS1cXHUwQUI5XTsiIC8vIEd1amFyYXRpIExl
dHRlciBBLC4uLixIYQorICAgICAgICAiJEd1alYgICAgPSBcXHUwQUNEOyIgLy8gR3VqYXJhdGkg
U2lnbiBWaXJhbWEKKyAgICAgICAgIiRHdWoxICAgID0gW1xcdTBBOTUtXFx1MEFCOV07IiAvLyBH
dWphcmF0aSBMZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkT3JpMCAgICA9IFtcXHUwQjA1LVxc
dTBCMzldOyIgLy8gT3JpeWEgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkT3JpViAgICA9IFxc
dTBCNEQ7IiAvLyBPcml5YSBTaWduIFZpcmFtYQorICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIx
NS1cXHUwQjM5XTsiIC8vIE9yaXlhIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRUZWwwICAg
ID0gW1xcdTBDMDUtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCisgICAgICAg
ICIkVGVsViAgICA9IFxcdTBDNEQ7IiAvLyBUZWx1Z3UgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRU
ZWwxICAgID0gW1xcdTBDMTQtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEthLC4uLixIYQor
ICAgICAgICAiJEthbjAgICAgPSBbXFx1MEM4NS1cXHUwQ0I5XTsiIC8vIEthbm5hZGEgTGV0dGVy
IEEsLi4uLEhhCisgICAgICAgICIkS2FuViAgICA9IFxcdTBDQ0Q7IiAvLyBLYW5uYWRhIFNpZ24g
VmlyYW1hCisgICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1LVxcdTBDQjldOyIgLy8gS2FubmFk
YSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRNYWwwICAgID0gW1xcdTBEMDUtXFx1MEQzOV07
IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkTWFsViAgICA9IFxcdTBE
NEQ7IiAvLyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKKyAgICAgICAgIiRNYWwxICAgID0gW1xcdTBE
MTUtXFx1MEQzOV07IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkUkkg
ICAgICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRp
Y2F0b3JzCisgICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7IiAvLyBaZXJvIHdpZHRoIGpvaW5l
cgorICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgLy8gRW1vamktc3R5bGUgdmFyaWF0
aW9uIHNlbGVjdG9yCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkRW1v
amlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0Njkg
XFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBa
V0ogc2VxdWVuY2VzCisgICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBc
XHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAw
MUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxV
MDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0Nzgg
XFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0
ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAw
MUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxV
MDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThd
IDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKKyNlbHNlCisgICAg
ICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxV
MDAwMUY0OEJdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCisg
ICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFG
Mzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAw
MDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxc
VTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgx
LVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFG
NTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAw
MDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0
aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZW5kaWYKKyAgICAgICAgIiRFbW9qaU1v
ZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIgLy8gRml0enBhdHJpY2sgbW9kaWZpZXJz
CisgICAgICAgICIhIWNoYWluOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAg
ICAgIiEhUklOb0NoYWluOyIKKyNlbmRpZgorICAgICAgICAiISFmb3J3YXJkOyIKKyAgICAgICAg
IiRDUiAkTEY7IgorICAgICAgICAiJEwgKCRMIHwgJFYgfCAkTFYgfCAkTFZUKTsiCisgICAgICAg
ICIoJExWIHwgJFYpICgkViB8ICRUKTsiCisgICAgICAgICIoJExWVCB8ICRUKSAkVDsiCisjaWYg
QURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkUkkgJFJJICRFeHRlbmQqIC8gJFJJ
OyIKKyAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCo7IgorICAgICAgICAiW14kQ29udHJvbCAkQ1Ig
JExGXSAkRXh0ZW5kOyIKKyAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJr
OyIKKyNlbHNlCisgICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRFeHRlbmQ7IgorICAgICAg
ICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7IgorICAgICAgICAiJFJJICRSSSAv
ICRSSTsiCisgICAgICAgICIkUkkgJFJJOyIKKyNlbmRpZgorICAgICAgICAiJEhpbjAgJEhpblYg
JEhpbjE7IiAvLyBEZXZhbmFnYXJpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRCZW4wICRC
ZW5WICRCZW4xOyIgLy8gQmVuZ2FsaSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkUGFuMCAk
UGFuViAkUGFuMTsiIC8vIEd1cm11a2hpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRHdWow
ICRHdWpWICRHdWoxOyIgLy8gR3VqYXJhdGkgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE9y
aTAgJE9yaVYgJE9yaTE7IiAvLyBPcml5YSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkVGVs
MCAkVGVsViAkVGVsMTsiIC8vIFRlbHVndSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkS2Fu
MCAkS2FuViAkS2FuMTsiIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE1h
bDAgJE1hbFYgJE1hbDE7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAi
JFpXSiAkRW1vamlGb3JTZXFzOyIgLy8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNl
cworICAgICAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IiAvLyBEb24n
dCBicmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBz
ZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCisgICAgICAgICIhIXJldmVyc2U7Igor
ICAgICAgICAiJExGICRDUjsiCisgICAgICAgICIoJEwgfCAkViB8ICRMViB8ICRMVlQpICRMOyIK
KyAgICAgICAgIigkViB8ICRUKSAoJExWIHwgJFYpOyIKKyAgICAgICAgIiRUICgkTFZUIHwgJFQp
OyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiRFeHRlbmQqICRSSSAk
UkkgLyAkRXh0ZW5kKiAkUkkgJFJJOyIKKyAgICAgICAgIiRFeHRlbmQqICRSSSAkUkk7IgorICAg
ICAgICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENSICRMRl07IgorICAgICAgICAiJFNwYWNp
bmdNYXJrIFteJENvbnRyb2wgJENSICRMRl07IgorI2Vsc2UKKyAgICAgICAgIiRFeHRlbmQgICAg
ICBbXiRDb250cm9sICRDUiAkTEZdOyIKKyAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9s
ICRDUiAkTEZdOyIKKyAgICAgICAgIiRSSSAkUkkgLyAkUkkgJFJJOyIKKyAgICAgICAgIiRSSSAk
Ukk7IgorI2VuZGlmCisgICAgICAgICIkSGluMSAkSGluViAkSGluMDsiIC8vIERldmFuYWdhcmkg
VmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRCZW4xICRCZW5WICRCZW4wOyIgLy8gQmVuZ2Fs
aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFBhbjEgJFBhblYgJFBhbjA7IiAvLyBHdXJt
dWtoaSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEd1ajEgJEd1alYgJEd1ajA7IiAvLyBH
dWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE9yaTEgJE9yaVYgJE9yaTA7IiAv
LyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFRlbDEgJFRlbFYgJFRlbDA7
IiAvLyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRLYW4xICRLYW5WICRLYW4w
OyIgLy8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE1hbDEgJE1hbFYgJE1h
bDA7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRFbW9qaUZvclNl
cXMgJFpXSjsiIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKKyAgICAgICAg
IiRFbW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0
d2VlbiByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFu
ZCBGaXR6cGF0cmljayBtb2RpZmllcgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAg
ICAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICAgICAiJFJJICRSSSs7IgorICAgICAgICAiWyRF
bW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIhIXNhZmVfZm9y
d2FyZDsiCisgICAgICAgICIkUkkgJFJJKzsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1v
amlWYXIgJEVtb2ppTW9kc10rOyI7CisjZWxzZQorICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlN
b2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIg
JEVtb2ppTW9kc10rOyIKKyAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKKyAgICAgICAgIiEhc2Fm
ZV9mb3J3YXJkOyI7CisjZW5kaWYKKyAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRp
Y0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoa1J1
bGVzKTsKKyNlbHNlIC8vIFBMQVRGT1JNKElPUykKKyAgICAvLyBVc2UgdGhlIHNwZWNpYWwgVGhh
aSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBsb2NhbGVzCisgICAgc3RhdGljIFRl
eHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQorCisgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY0N1cnNv
ck1vdmVtZW50SXRlcmF0b3IsIHN0cmluZyk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRl
eHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQoreworICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hh
cmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CisgICAgaWYgKCFpdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4
dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4
dExlbmd0aCk7Cit9CisKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7
CisKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS5wdXQoaXRlcmF0b3Ip
OworfQorCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9sb2d1ZSA9CisgICAgIiEhY2hhaW47
IgorICAgICIhIUxCQ01Ob0NoYWluOyIKKyAgICAiISFsb29rQWhlYWRIYXJkQnJlYWs7IjsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNCZWZvcmUgPQorICAgIC8vIGV4cGxp
Y2l0bHkgZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lvbnMgcHJpb3IgdG8gNDkgZG9uJ3Qg
c3VwcG9ydCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6CisgICAgIiRD
SiA9IFsiCisjaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJT
SU9OX01JTk9SX05VTSA+PSA5KQorICAgICI6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNl
X1N0YXJ0ZXI6IgorI2Vsc2UKKyAgICAiXFx1MzA0MVxcdTMwNDNcXHUzMDQ1XFx1MzA0N1xcdTMw
NDlcXHUzMDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4RVxcdTMwOTVcXHUzMDk2XFx1MzBB
MVxcdTMwQTNcXHUzMEE1XFx1MzBBNyIKKyAgICAiXFx1MzBBOVxcdTMwQzNcXHUzMEUzXFx1MzBF
NVxcdTMwRTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZDIgorICAgICJcXHUzMUYwXFx1MzFG
MVxcdTMxRjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2XFx1MzFGN1xcdTMxRjhcXHUzMUY5
XFx1MzFGQVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVcXHUzMUZGIgorICAgICJcXHVGRjY3
XFx1RkY2OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNcXHVGRjZEXFx1RkY2RVxcdUZGNkZc
XHVGRjcwIgorI2VuZGlmCisgICAgIl07IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNz
aWdubWVudHNDdXN0b21Mb29zZUNKSyA9CisgICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNd
OyIKKyAgICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxcdUZGMDFcXHVGRjFGXTsiCisgICAg
IiRJRF9TVUIgPSAnJzsiCisgICAgIiRJTl9TVUIgPSBbXFx1MjAyNVxcdTIwMjZdOyIKKyAgICAi
JElTX1NVQiA9IFtcXHUwMDNBXFx1MDAzQl07IgorICAgICIkTlNfU1VCID0gW1xcdTIwM0NcXHUy
MDQ3XFx1MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMw
QTBcXHUzMEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYxQlxcdUZGNjVdOyIKKyAgICAiJFBP
X1NVQiA9IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMwXFx1MjAzMlxcdTIwMzNcXHUyMTAz
XFx1RkYwNVxcdUZGRTBdOyIKKyAgICAiJFBSX1NVQiA9IFtcXHUwMDI0XFx1MDBBM1xcdTAwQTVc
XHUyMEFDXFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07IgorICAgICIkSURfQUREID0gWyRD
SiAkQkFfU1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICROU19TVUIgJFBPX1NVQiAkUFJfU1VC
XTsiCisgICAgIiROU19BREQgPSAnJzsiOworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3Np
Z25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLID0KKyAgICAiJEJBX1NVQiA9ICcnOyIKKyAgICAiJEVY
X1NVQiA9ICcnOyIKKyAgICAiJElEX1NVQiA9ICcnOyIKKyAgICAiJElOX1NVQiA9IFtcXHUyMDI1
XFx1MjAyNl07IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMDVc
XHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07IgorICAgICIkUE9fU1VCID0gJyc7
IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0gWyRDSiAkSU5fU1VCICROU19T
VUJdOyIKKyAgICAiJE5TX0FERCA9ICcnOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLID0KKyAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAx
M107IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSURf
U1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMUNc
XHUzMEEwXTsiCisgICAgIiRQT19TVUIgPSAnJzsiCisgICAgIiRQUl9TVUIgPSAnJzsiCisgICAg
IiRJRF9BREQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07IgorICAgICIkTlNfQUREID0gJyc7IjsK
Kworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksg
PQorICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VC
ID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIk
TlNfU1VCID0gJyc7IgorICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7Igor
ICAgICIkSURfQUREID0gWyRDSl07IgorICAgICIkTlNfQUREID0gJyc7IjsKKworc3RhdGljIGNv
bnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgPQorICAgICIkQkFfU1VC
ID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIk
SU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gJyc7Igor
ICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0g
Jyc7IgorICAgICIkTlNfQUREID0gWyRDSl07IjsKKworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tU3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSwor
I2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyAgICAgICAgdWF4MTRBc3Np
Z25tZW50c0N1c3RvbU5vcm1hbENKSworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVm
YXVsdE5vbkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdE5vbkNKSworCitzdGF0
aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVyID0KKyAgICAiJEFJID0gWzpMaW5l
QnJlYWsgPSBBbWJpZ3VvdXM6XTsiCisgICAgIiRBTCA9IFs6TGluZUJyZWFrID0gQWxwaGFiZXRp
YzpdOyIKKyAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJlYWtfQWZ0ZXI6XSAtICRCQV9TVUJd
OyIKKyAgICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19CZWZvcmU6XTsiCisgICAgIiRCSyA9
IFs6TGluZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07IgorICAgICIkQjIgPSBbOkxpbmVCcmVh
ayA9IEJyZWFrX0JvdGg6XTsiCisgICAgIiRDQiA9IFs6TGluZUJyZWFrID0gQ29udGluZ2VudF9C
cmVhazpdOyIKKyAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QdW5jdHVhdGlvbjpdOyIK
KyAgICAiJENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdfTWFyazpdOyIKKyAgICAiJENQID0g
WzpMaW5lQnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIKKyAgICAiJENSID0gWzpMaW5lQnJl
YWsgPSBDYXJyaWFnZV9SZXR1cm46XTsiCisgICAgIiRFWCA9IFtbOkxpbmVCcmVhayA9IEV4Y2xh
bWF0aW9uOl0gLSAkRVhfU1VCXTsiCisgICAgIiRHTCA9IFs6TGluZUJyZWFrID0gR2x1ZTpdOyIK
KyNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlO
T1JfTlVNID49IDkpCisgICAgIiRITCA9IFs6TGluZUJyZWFrID0gSGVicmV3X0xldHRlcjpdOyIK
KyNlbHNlCisgICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpMZXR0ZXI6XV07IgorI2VuZGlmCisg
ICAgIiRIWSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07IgorICAgICIkSDIgPSBbOkxpbmVCcmVh
ayA9IEgyOl07IgorICAgICIkSDMgPSBbOkxpbmVCcmVhayA9IEgzOl07IgorICAgICIkSUQgPSBb
W1tbOkxpbmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pdICRJRF9BRERdIC0gJElEX1NVQl07
IgorICAgICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFyYWJsZTpdIC0gJElOX1NVQl07Igor
ICAgICIkSVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1lcmljOl0gLSAkSVNfU1VCXTsiCisg
ICAgIiRKTCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCisgICAgIiRKViA9IFs6TGluZUJyZWFrID0g
SlY6XTsiCisgICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6XTsiCisgICAgIiRMRiA9IFs6TGlu
ZUJyZWFrID0gTGluZV9GZWVkOl07IgorICAgICIkTkwgPSBbOkxpbmVCcmVhayA9IE5leHRfTGlu
ZTpdOyIKKyAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBOb25zdGFydGVyOl0gLSAkQ0pdICRO
U19BRERdIC0gJE5TX1NVQl07IgorICAgICIkTlUgPSBbOkxpbmVCcmVhayA9IE51bWVyaWM6XTsi
CisgICAgIiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5jdHVhdGlvbjpdOyIKKyAgICAiJFBP
ID0gW1s6TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0gLSAkUE9fU1VCXTsiCisgICAgIiRQ
UiA9IFtbOkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0gLSAkUFJfU1VCXTsiCisgICAgIiRR
VSA9IFs6TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgorICAgICIkUkkgPSBbXFxVMDAwMUYxRTYt
XFxVMDAwMUYxRkZdOyIKKyAgICAiJFNBID0gWzpMaW5lQnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6
XTsiCisgICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9nYXRlOl07IgorICAgICIkU1AgPSBb
OkxpbmVCcmVhayA9IFNwYWNlOl07IgorICAgICIkU1kgPSBbOkxpbmVCcmVhayA9IEJyZWFrX1N5
bWJvbHM6XTsiCisgICAgIiRXSiA9IFs6TGluZUJyZWFrID0gV29yZF9Kb2luZXI6XTsiCisgICAg
IiRYWCA9IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKKyAgICAiJFpXID0gWzpMaW5lQnJlYWsg
PSBaV1NwYWNlOl07IgorICAgICIkWldKID0gXFx1MjAwRDsiCisgICAgIiRFbW9qaVZhciA9IFxc
dUZFMEY7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkRW1vamlGb3JTZXFz
ID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0
OEIgXFxVMDAwMUY1RThdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI2Rjkg
XFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAw
MDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxc
VTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4
IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFG
NDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAw
MDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxc
VTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4
XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZWxzZQorICAg
ICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAw
MUY0OEJdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1MjcwQyBc
XFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAxRjND
QSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAx
RjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUw
MDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBc
XFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0
RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIgLy8g
RW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycworI2VuZGlmCisgICAgIiRFbW9q
aU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIKKyAgICAiJGRpY3Rpb25hcnkgPSBb
OkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKKyAgICAiJEFMUGx1cyA9IFskQUwgJEFJ
ICRTQSAkU0cgJFhYXTsiCisgICAgIiRBTGNtID0gJEFMUGx1cyAkQ00qOyIKKyAgICAiJEJBY20g
PSAkQkEgJENNKjsiCisgICAgIiRCQmNtID0gJEJCICRDTSo7IgorICAgICIkQjJjbSA9ICRCMiAk
Q00qOyIKKyAgICAiJENMY20gPSAkQ0wgJENNKjsiCisgICAgIiRDUGNtID0gJENQICRDTSo7Igor
ICAgICIkRVhjbSA9ICRFWCAkQ00qOyIKKyAgICAiJEdMY20gPSAkR0wgJENNKjsiCisgICAgIiRI
TGNtID0gJEhMICRDTSo7IgorICAgICIkSFljbSA9ICRIWSAkQ00qOyIKKyAgICAiJEgyY20gPSAk
SDIgJENNKjsiCisgICAgIiRIM2NtID0gJEgzICRDTSo7IgorICAgICIkSURjbSA9ICRJRCAkQ00q
OyIKKyAgICAiJElOY20gPSAkSU4gJENNKjsiCisgICAgIiRJU2NtID0gJElTICRDTSo7IgorICAg
ICIkSkxjbSA9ICRKTCAkQ00qOyIKKyAgICAiJEpWY20gPSAkSlYgJENNKjsiCisgICAgIiRKVGNt
ID0gJEpUICRDTSo7IgorICAgICIkTlNjbSA9ICROUyAkQ00qOyIKKyAgICAiJE5VY20gPSAkTlUg
JENNKjsiCisgICAgIiRPUGNtID0gJE9QICRDTSo7IgorICAgICIkUE9jbSA9ICRQTyAkQ00qOyIK
KyAgICAiJFBSY20gPSAkUFIgJENNKjsiCisgICAgIiRRVWNtID0gJFFVICRDTSo7IgorICAgICIk
UkljbSA9ICRRVSAkQ00qOyIKKyAgICAiJFNZY20gPSAkU1kgJENNKjsiCisgICAgIiRXSmNtID0g
JFdKICRDTSo7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0Rm9yd2FyZCA9CisgICAgIiEh
Zm9yd2FyZDsiCisgICAgIiRDQU5fQ00gPSBbXiRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07
IgorICAgICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKKyAgICAi
JEFMX0ZPTExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCisgICAgIiRBTF9G
T0xMT1dfQ00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kgJFdKICRHTCAkT1AgJFFVICRCQSAk
SFkgJE5TICRJTiAkTlUgJEFMUGx1c107IgorICAgICIkQUxfRk9MTE9XID0gWyRBTF9GT0xMT1df
Tk9DTSAkQUxfRk9MTE9XX0NNXTsiCisgICAgIiRMQjRCcmVha3MgPSBbJEJLICRDUiAkTEYgJE5M
XTsiCisgICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1IgJExGICROTF07IgorICAgICIkTEI4
QnJlYWtzID0gWyRMQjRCcmVha3MgJFpXXTsiCisgICAgIiRMQjhOb25CcmVha3MgPSBbWyRMQjRO
b25CcmVha3NdIC0gWyRaV11dOyIKKyAgICAiJExCMThOb25CcmVha3MgPSBbJExCOE5vbkJyZWFr
cyAtIFskU1BdXTsiCisgICAgIiRMQjE4QnJlYWtzID0gWyRMQjhCcmVha3MgJFNQXTsiCisgICAg
IiRMQjIwTm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0gJENCXTsiCisgICAgIiRBTFBsdXMg
JENNKzsiCisgICAgIiRCQSAkQ00rOyIKKyAgICAiJEJCICRDTSs7IgorICAgICIkQjIgJENNKzsi
CisgICAgIiRDTCAkQ00rOyIKKyAgICAiJENQICRDTSs7IgorICAgICIkRVggJENNKzsiCisgICAg
IiRHTCAkQ00rOyIKKyAgICAiJEhMICRDTSs7IgorICAgICIkSFkgJENNKzsiCisgICAgIiRIMiAk
Q00rOyIKKyAgICAiJEgzICRDTSs7IgorICAgICIkSUQgJENNKzsiCisgICAgIiRJTiAkQ00rOyIK
KyAgICAiJElTICRDTSs7IgorICAgICIkSkwgJENNKzsiCisgICAgIiRKViAkQ00rOyIKKyAgICAi
JEpUICRDTSs7IgorICAgICIkTlMgJENNKzsiCisgICAgIiROVSAkQ00rOyIKKyAgICAiJE9QICRD
TSs7IgorICAgICIkUE8gJENNKzsiCisgICAgIiRQUiAkQ00rOyIKKyAgICAiJFFVICRDTSs7Igor
ICAgICIkU1kgJENNKzsiCisgICAgIiRXSiAkQ00rOyIKKyAgICAiJENSICRMRiB7MTAwfTsiCisg
ICAgIiRMQjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07IgorICAgICIkQ0FOX0NNICRDTSog
JExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRDTSsgJExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRM
QjROb25CcmVha3MgWyRTUCAkWlddOyIKKyAgICAiJENBTl9DTSAkQ00qIFskU1AgJFpXXTsiCisg
ICAgIiRDTSsgWyRTUCAkWlddOyIKKyAgICAiJEVtb2ppRm9yU2VxcyAkRW1vamlWYXI/ICRFbW9q
aU1vZHM/ICRaV0ogJEVtb2ppRm9yU2VxczsiCisgICAgIiRDQU5fQ00gJENNKzsiCisgICAgIiRD
TSs7IgorICAgICIkQ0FOX0NNICRDTSogJFdKY207IgorICAgICIkTEI4Tm9uQnJlYWtzICRXSmNt
OyIKKyAgICAiJENNKyAkV0pjbTsiCisgICAgIiRXSmNtICRDQU5UX0NNOyIKKyAgICAiJFdKY20g
JENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENB
TlRfQ007IgorICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRTUCAkQkEgJEhZXV0gJENNKiAkR0xj
bTsiCisgICAgIiRDTSsgR0xjbTsiCisgICAgIiRMQjhOb25CcmVha3MgJENMOyIKKyAgICAiJENB
Tl9DTSAkQ00qICRDTDsiCisgICAgIiRDTSsgJENMOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkQ1A7
IgorICAgICIkQ0FOX0NNICRDTSogJENQOyIKKyAgICAiJENNKyAkQ1A7IgorICAgICIkTEI4Tm9u
QnJlYWtzICRFWDsiCisgICAgIiRDQU5fQ00gJENNKiAkRVg7IgorICAgICIkQ00rICRFWDsiCisg
ICAgIiRMQjhOb25CcmVha3MgJElTOyIKKyAgICAiJENBTl9DTSAkQ00qICRJUzsiCisgICAgIiRD
TSsgJElTOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkU1k7IgorICAgICIkQ0FOX0NNICRDTSogJFNZ
OyIKKyAgICAiJENNKyAkU1k7IgorICAgICIkT1BjbSAkU1AqICRDQU5fQ00gJENNKjsiCisgICAg
IiRPUGNtICRTUCogJENBTlRfQ007IgorICAgICIkT1BjbSAkU1ArICRDTSsgJEFMX0ZPTExPVz87
IgorICAgICIkUVVjbSAkU1AqICRPUGNtOyIKKyAgICAiKCRDTGNtIHwgJENQY20pICRTUCogJE5T
Y207IgorICAgICIkQjJjbSAkU1AqICRCMmNtOyIKKyAgICAiJExCMThOb25CcmVha3MgJENNKiAk
UVVjbTsiCisgICAgIiRDTSsgJFFVY207IgorICAgICIkUVVjbSAuPzsiCisgICAgIiRRVWNtICRM
QjE4Tm9uQnJlYWtzICRDTSo7IgorICAgICIkTEIyME5vbkJyZWFrcyAkQ00qICgkQkFjbSB8ICRI
WWNtIHwgJE5TY20pOyAiCisgICAgIiRCQmNtIFteJENCXTsiCisgICAgIiRCQmNtICRMQjIwTm9u
QnJlYWtzICRDTSo7IgorICAgICIkSExjbSAoJEhZY20gfCAkQkFjbSkgW14kQ0JdPzsiCisgICAg
IigkQUxjbSB8ICRITGNtKSAkSU5jbTsiCisgICAgIiRDTSsgJElOY207IgorICAgICIkSURjbSAk
SU5jbTsiCisgICAgIiRJTmNtICRJTmNtOyIKKyAgICAiJE5VY20gJElOY207IgorICAgICIkSURj
bSAkUE9jbTsiCisgICAgIiRBTGNtICROVWNtOyIKKyAgICAiJEhMY20gJE5VY207IgorICAgICIk
Q00rICROVWNtOyIKKyAgICAiJE5VY20gJEFMY207IgorICAgICIkTlVjbSAkSExjbTsiCisgICAg
IiRQUmNtICRJRGNtOyIKKyAgICAiJFBSY20gKCRBTGNtIHwgJEhMY20pOyIKKyAgICAiJFBPY20g
KCRBTGNtIHwgJEhMY20pOyIKKyAgICAiKCRQUmNtIHwgJFBPY20pPyAoJE9QY20gfCAkSFljbSk/
ICROVWNtICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENMY20gfCAkQ1BjbSk/ICgkUFJjbSB8
ICRQT2NtKT87IgorICAgICIkSkxjbSAoJEpMY20gfCAkSlZjbSB8ICRIMmNtIHwgJEgzY20pOyIK
KyAgICAiKCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNtKTsiCisgICAgIigkSlRjbSB8ICRI
M2NtKSAkSlRjbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KSAkSU5jbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAk
UE9jbTsiCisgICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KTsiCisgICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAkSExjbSk7IgorICAgICIkQ00rICgk
QUxjbSB8ICRITGNtKTsiCisgICAgIiRJU2NtICgkQUxjbSB8ICRITGNtKTsiCisgICAgIigkQUxj
bSB8ICRITGNtIHwgJE5VY20pICRPUGNtOyIKKyAgICAiJENNKyAkT1BjbTsiCisgICAgIiRDUGNt
ICgkQUxjbSB8ICRITGNtIHwgJE5VY20pOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJFJJY20gJFJJY207IgorI2VuZGlmCisgICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFy
PyAkRW1vamlNb2RzOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFJldmVyc2UgPQorICAg
ICIhIXJldmVyc2U7IgorICAgICIkQ00rICRBTFBsdXM7IgorICAgICIkQ00rICRCQTsiCisgICAg
IiRDTSsgJEJCOyIKKyAgICAiJENNKyAkQjI7IgorICAgICIkQ00rICRDTDsiCisgICAgIiRDTSsg
JENQOyIKKyAgICAiJENNKyAkRVg7IgorICAgICIkQ00rICRHTDsiCisgICAgIiRDTSsgJEhMOyIK
KyAgICAiJENNKyAkSFk7IgorICAgICIkQ00rICRIMjsiCisgICAgIiRDTSsgJEgzOyIKKyAgICAi
JENNKyAkSUQ7IgorICAgICIkQ00rICRJTjsiCisgICAgIiRDTSsgJElTOyIKKyAgICAiJENNKyAk
Skw7IgorICAgICIkQ00rICRKVjsiCisgICAgIiRDTSsgJEpUOyIKKyAgICAiJENNKyAkTlM7Igor
ICAgICIkQ00rICROVTsiCisgICAgIiRDTSsgJE9QOyIKKyAgICAiJENNKyAkUE87IgorICAgICIk
Q00rICRQUjsiCisgICAgIiRDTSsgJFFVOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJENNKyAkUkk7IgorI2VuZGlmCisgICAgIiRDTSsgJFNZOyIKKyAgICAiJENNKyAkV0o7
IgorICAgICIkQ00rOyIKKyAgICAiJEFMX0ZPTExPVyAkQ00rIC8gKFskQksgJENSICRMRiAkTkwg
JFpXIHtlb2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRDTSogKFteJE9QICRDTSAkU1BdIHwg
WyRBTCB7ZW9mfV0pKTsiCisgICAgIlskUFJdIC8gJENNKyBbJEJLICRDUiAkTEYgJE5MICRaVyAk
U1Age2VvZn1dOyIKKyAgICAiJExCNEJyZWFrcyBbJExCNE5vbkJyZWFrcy0kQ01dOyIKKyAgICAi
JExCNEJyZWFrcyAkQ00rICRDQU5fQ007IgorICAgICIkTEYgJENSOyIKKyAgICAiWyRTUCAkWldd
IFskTEI0Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJFNQICRaV10gJENNKyAkQ0FOX0NNOyIKKyAg
ICAiJEVtb2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRFbW9qaVZhcj8gJEVtb2ppRm9yU2Vx
czsiCisgICAgIiRDTSsgJENBTl9DTTsiCisgICAgIiRDTSogJFdKICRDTSogJENBTl9DTTsiCisg
ICAgIiRDTSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIkQ0FOVF9DTSAkQ00qICRX
SjsiCisgICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCisgICAgIiRDTSogJEdMICRDTSogWyRM
QjhOb25CcmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKKyAgICAiJENBTlRfQ00gJENNKiAkR0w7
IgorICAgICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgorICAgICIkQ0wgJENNKyAkQ0FOX0NNOyIK
KyAgICAiJENQICRDTSsgJENBTl9DTTsiCisgICAgIiRFWCAkQ00rICRDQU5fQ007IgorICAgICIk
SVMgJENNKyAkQ0FOX0NNOyIKKyAgICAiJFNZICRDTSsgJENBTl9DTTsiCisgICAgIiRDTCBbJExC
OE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJENQIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIk
RVggWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRJUyBbJExCOE5vbkJyZWFrcy0kQ01dOyIK
KyAgICAiJFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJENMICRDUCAkRVggJElTICRT
WV0gJENNKyAkU1ArICRDTSogJE9QOyAiCisgICAgIiRDTSogJENBTl9DTSAkU1AqICRDTSogJE9Q
OyIKKyAgICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCisgICAgIiRBTF9GT0xMT1c/ICRDTSsg
JFNQICRTUCogJENNKiAkT1A7IgorICAgICIkQUxfRk9MTE9XX05PQ00gJENNKyAkU1ArICRDTSog
JE9QOyIKKyAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsgJFNQKyAkQ00qICRPUDsiCisgICAg
IiRTWSAkQ00gJFNQKyAkT1A7IgorICAgICIkQ00qICRPUCAkU1AqICRDTSogJFFVOyIKKyAgICAi
JENNKiAkTlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAgICAiJENNKiAkQjIgJFNQKiAkQ00q
ICRCMjsiCisgICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsiCisgICAgIiRDTSogJFFVICRMQjE4
Tm9uQnJlYWtzOyIKKyAgICAiJENNKiAkQ0FOX0NNICRDTSogJFFVOyIKKyAgICAiJENBTlRfQ00g
JENNKiAkUVU7IgorICAgICIkQ00qICgkQkEgfCAkSFkgfCAkTlMpICRDTSogWyRMQjIwTm9uQnJl
YWtzLSRDTV07IgorICAgICIkQ00qIFskTEIyME5vbkJyZWFrcy0kQ01dICRDTSogJEJCOyIKKyAg
ICAiW14kQ0JdICRDTSogJEJCOyIKKyAgICAiW14kQ0JdICRDTSogKCRIWSB8ICRCQSkgJENNKiAk
SEw7IgorICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCisgICAgIiRDTSogJElO
ICRDTSogJElEOyIKKyAgICAiJENNKiAkSU4gJENNKiAkSU47IgorICAgICIkQ00qICRJTiAkQ00q
ICROVTsiCisgICAgIiRDTSogJFBPICRDTSogJElEOyIKKyAgICAiJENNKiAkTlUgJENNKiAoJEFM
UGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICROVTsiCisgICAg
IiRDTSogJElEICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUFI7
IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQTzsiCisgICAgIigkQ00qICgkUFIg
fCAkUE8pKT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAoJE5VIHwgJElTIHwgJFNZKSkqICRD
TSogJE5VICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQUiB8ICRQTykpPzsiCisgICAgIiRD
TSogKCRIMyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7IgorICAgICIkQ00qICgkSlQgfCAk
SlYpICRDTSogKCRIMiB8ICRKVik7IgorICAgICIkQ00qICRKVCAkQ00qICgkSDMgfCAkSlQpOyIK
KyAgICAiJENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCisgICAg
IiRDTSogJFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCk7IgorICAgICIkQ00q
ICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFM
UGx1cyB8ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMKSAkQ00qICRJUzsiCisgICAgIiRDTSogJE9QICRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUp
OyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkgJENNKiAkQ1A7IgorI2lmIEFERElU
SU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkQ00qICRSSSAkQ00qICRSSTsiCisjZW5kaWYKKyAg
ICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IjsKKworc3RhdGljIGNvbnN0
IGNoYXIqIHVheDE0U2FmZUZvcndhcmQgPQorICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgIlsk
Q00gJE9QICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAkU1AgJGRpY3Rpb25hcnldKyBbXiRD
TSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRkaWN0aW9uYXJ5XTsiCisgICAgIiRk
aWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFNhZmVS
ZXZlcnNlID0KKyAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICIkQ00rIFteJENNICRCSyAkQ1Ig
JExGICROTCAkWlcgJFNQXTsiCisgICAgIiRDTSsgJFNQIC8gLjsiCisgICAgIiRTUCsgJENNKiAk
T1A7IgorICAgICIkU1ArICRDTSogJFFVOyIKKyAgICAiJFNQKyAkQ00qICgkQ0wgfCAkQ1ApOyIK
KyAgICAiJFNQKyAkQ00qICRCMjsiCisgICAgIiRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7Igor
ICAgICIoJENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIKKyAgICAiKCRDTCB8ICRDUCkgJENN
KiAoJE5VIHwgJElTIHwgJFNZKTsiCisgICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisK
K3N0YXRpYyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMoTGluZUJyZWFrSXRlcmF0
b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgU3RyaW5nQnVpbGRlciBydWxlc0J1aWxk
ZXI7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFByb2xvZ3VlKTsKKyAgICBydWxlc0J1
aWxkZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUpOworICAgIHN3aXRjaCAobW9kZSkg
eworICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6CisgICAgICAgIHJ1bGVzQnVp
bGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyA6IHVh
eDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgorICAgICAgICBydWxlc0J1aWxk
ZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLIDogdWF4MTRB
c3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFw
cGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxDSksgOiB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5l
QnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJ1bGVz
QnVpbGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVyKTsKKyAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKHVheDE0Rm9yd2FyZCk7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFJldmVy
c2UpOworICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRTYWZlRm9yd2FyZCk7CisgICAgcnVs
ZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsKKyAgICByZXR1cm4gcnVsZXNCdWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisKKy8vIFJlY29nbml6ZSBCQ1A0NyBjb21wbGlhbnQgcHJpbWFy
eSBsYW5ndWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tvJworLy8gKGluIGFueSBjb21iaW5h
dGlvbiBvZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBzdWJ0YWdzLiBEb24ndAorLy8g
cmVjb2duaXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6aG8nLCAnanBuJywgb3IgJ2tvcicg
c2luY2UgQkNQNDcKKy8vIHJlcXVpcmVzIHVzZSBvZiBzaG9ydGVzdCBsYW5ndWFnZSB0YWcuCiti
b29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQoreworICAgIHNpemVf
dCBsZW5ndGggPSBsb2NhbGUubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGMxID0gbG9jYWxlWzBdOworICAgIGF1dG8gYzIgPSBs
b2NhbGVbMV07CisgICAgYXV0byBjMyA9IGxlbmd0aCA9PSAyID8gMCA6IGxvY2FsZVsyXTsKKyAg
ICBpZiAoIWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycgfHwgYzMgPT0gJ0AnKSB7CisgICAg
ICAgIGlmIChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQorICAgICAgICAgICAgcmV0dXJuIGMyID09
ICdoJyB8fCBjMiA9PSAnSCc7CisgICAgICAgIGlmIChjMSA9PSAnaicgfHwgYzEgPT0gJ0onKQor
ICAgICAgICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9PSAnQSc7CisgICAgICAgIGlmIChj
MSA9PSAnaycgfHwgYzEgPT0gJ0snKQorICAgICAgICAgICAgcmV0dXJuIGMyID09ICdvJyB8fCBj
MiA9PSAnTyc7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgVUJyZWFrSXRlcmF0
b3IqIHVicmtJdGVyOworICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBib29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNFbXB0eSgpOworICAgIGlmIChtb2Rl
ID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICB1YnJrSXRlciA9IHVicmtf
b3BlbihVQlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQo
KSA6IGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAmb3BlblN0YXR1cyk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFVQYXJzZUVycm9yIHBhcnNlU3RhdHVzOworICAgICAgICBhdXRv
IHJ1bGVzID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMobW9kZSwgaXNDSkspOworICAgICAg
ICB1YnJrSXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1ZpZXcocnVsZXMpLnVwY29udmVydGVk
Q2hhcmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0
YXR1cyk7CisgICAgfQorICAgIC8vIGxvY2FsZSBjb21lcyBmcm9tIGEgd2ViIHBhZ2UgYW5kIGl0
IGNhbiBiZSBpbnZhbGlkLCBsZWFkaW5nIElDVQorICAgIC8vIHRvIGZhaWwsIGluIHdoaWNoIGNh
c2Ugd2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICBpZiAoIWxvY2FsZUlz
RW1wdHkgJiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIG9wZW5TdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgY3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKKyAgICB9CisKKyAg
ICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIExPR19FUlJPUigidWJya19v
cGVuIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJ
dGVyYXRvcio+KHVicmtJdGVyKTsKK30KKwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IpCit7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gcmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKKyAgICBB
U1NFUlQodWJya0l0ZXIpOworICAgIHVicmtfY2xvc2UodWJya0l0ZXIpOworICAgIGl0ZXJhdG9y
ID0gbnVsbHB0cjsKK30KKworc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yOworCitzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3YXBO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBlY3Rl
ZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQoreworICAgIHJldHVybiBXVEY6OndlYWtD
b21wYXJlQW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciwgZXhwZWN0ZWQs
IG5ld1ZhbHVlKTsKK30KKworTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBtX2l0
ZXJhdG9yID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKKworICAgIGJvb2wgY3Jl
YXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7CisgICAgaWYgKCFjcmVhdGVkSXRlcmF0
b3IpCisgICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNU
RVIpOworICAgIGlmICghbV9pdGVyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pdGVy
YXRvciA9IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRvciwgc3RyaW5nKTsKK30KKworTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IoKQoreworICAgIGlmICghY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKDAsIG1faXRlcmF0b3IpKQorICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0
X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7Cit9CisKKworLy8gSXRlcmF0b3Ig
aW1wbGVtZW5hdGlvbi4KKworaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKK30KKworaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX2xhc3QocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9CisKK2ludCB0ZXh0QnJlYWtOZXh0
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19uZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitpbnQgdGV4
dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVy
biB1YnJrX3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOworfQorCitpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciwgaW50IHBvcykKK3sKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zKTsKK30KKworaW50IHRleHRCcmVh
a0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCit7CisgICAg
cmV0dXJuIHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihp
dGVyYXRvciksIHBvcyk7Cit9CisKK2ludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19jdXJyZW50KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitib29sIGlzVGV4dEJyZWFrKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0aW9uKQoreworICAgIHJldHVybiB1
YnJrX2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9y
KSwgcG9zaXRpb24pOworfQorCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMo
cmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7CisgICAgcmV0dXJu
IHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisKK3Vuc2lnbmVkIG51bUdyYXBoZW1l
Q2x1c3RlcnMoY29uc3QgU3RyaW5nJiBzKQoreworICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9
IHMubGVuZ3RoKCk7CisgICAgCisgICAgaWYgKCFzdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVy
biAwOworCisgICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVy
IGlzIENSIExGCisgICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCisgICAg
ICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yIGl0KHMpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7
CisKKyAgICB1bnNpZ25lZCBudW0gPSAwOworICAgIHdoaWxlICh0ZXh0QnJlYWtOZXh0KGl0KSAh
PSBUZXh0QnJlYWtEb25lKQorICAgICAgICArK251bTsKKyAgICByZXR1cm4gbnVtOworfQorCit1
bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcm
IHMsIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCit7CisgICAgdW5zaWduZWQgc3RyaW5n
TGVuZ3RoID0gcy5sZW5ndGgoKTsKKworICAgIGlmICghc3RyaW5nTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1
c3RlciBpcyBDUiBMRgorICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQor
ICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJz
KTsKKworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7CisgICAgaWYg
KCFpdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVD
bHVzdGVycyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR3JhcGhlbWVDbHVz
dGVyczsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0QnJlYWtOZXh0KGl0KSA9PSBUZXh0QnJlYWtE
b25lKQorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKKyAgICB9CisgICAgcmV0dXJu
IHRleHRCcmVha0N1cnJlbnQoaXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTQ1MzQ2OGZiOGNjMjNk
NjNmYTJjM2EzNDg1MTYwNGI2NmI1ODAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9yX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0
b3JfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVGV4dEJyZWFr
SXRlcmF0b3I7CisKKy8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkg
dW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNx
dWlyZUxpbmVCcmVha0l0ZXJhdG9yLgorCitlbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCisgICAgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTRMb29zZSwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKKyAgICBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKK307CisKKy8vIFRoaXMgaXMgc2ltaWxh
ciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9zdCBjYXNlcywgYnV0IGlzIHN1Ympl
Y3QgdG8KKy8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBPbmUgbm90YWJsZSBleGFtcGxlIHdo
ZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVudAorLy8gZnJvbSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0
b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBidWcgMjQzNDIuCisvLyBVc2UgdGhp
cyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KK1dURl9F
WFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiB3b3Jk
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJ
dGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOworCitXVEZfRVhQT1JU
X1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29u
dGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUs
IGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7CitUZXh0QnJlYWtJdGVyYXRvciogb3BlbkxpbmVC
cmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVh
a0l0ZXJhdG9yKiYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0ZpcnN0KFRl
eHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0xhc3Qo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrTmV4
dChUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtQ
cmV2aW91cyhUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0
QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50
IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvcios
IGludCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFr
SXRlcmF0b3IqKTsKKworY29uc3QgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisKK2NsYXNz
IExhenlMaW5lQnJlYWtJdGVyYXRvciB7CitwdWJsaWM6CisgICAgTGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCisgICAgICAgICwgbV9jYWNoZWRQ
cmlvckNvbnRleHQobnVsbHB0cikKKyAgICAgICAgLCBtX21vZGUoTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTQpCisgICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKKyAgICAg
ICAgLCBtX2lzQ0pLKGZhbHNlKQorICAgIHsKKyAgICAgICAgcmVzZXRQcmlvckNvbnRleHQoKTsK
KyAgICB9CisKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKKyAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCisgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQorICAgICAgICAsIG1faXRlcmF0
b3IobnVsbHB0cikKKyAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQorICAg
ICAgICAsIG1fbW9kZShtb2RlKQorICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3Ro
KDApCisgICAgeworICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOworICAgICAgICBtX2lzQ0pL
ID0gaXNDSktMb2NhbGUobG9jYWxlKTsKKyAgICB9CisKKyAgICB+TGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgIH0KKworICAgIFN0cmluZyBzdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIGJvb2wgaXNMb29zZUNKS01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNExvb3NlOyB9CisKKyAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQp
ID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgp
OworICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07CisgICAgfQorCisgICAgVUNoYXIg
c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNT
RVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJh
dG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICByZXR1cm4gbV9w
cmlvckNvbnRleHRbMF07CisgICAgfQorCisgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIg
bGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3Jf
dW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIG1fcHJpb3JDb250ZXh0
WzBdID0gc2Vjb25kVG9MYXN0OworICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7Cisg
ICAgfQorCisgICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQoVUNoYXIgbGFzdCkKKyAgICB7Cisg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09
IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwor
ICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JDb250ZXh0WzFdOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7CisgICAgfQorCisgICAgdm9pZCByZXNldFByaW9yQ29u
dGV4dCgpCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1f
cHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2Nv
bnRleHRfbGVuZ3RoKTsKKyAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCA9IDA7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNv
bnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9s
ZW5ndGgpOworICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMV0pIHsKKyAgICAgICAgICAgICsr
cHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzBdKQor
ICAgICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgfQorCisgICAgLy8gT2J0YWluIHRleHQg
YnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0
ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKKyAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHBy
ZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFu
ZCB1c2luZworICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVt
cHR5LgorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNv
bnRleHRDYXBhY2l0eSk7CisgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlv
ckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBw
cmlvckNvbnRleHRMZW5ndGhdIDogMDsKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKG1fc3RyaW5nLCBt
X2xvY2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsIG1fbW9kZSwgbV9pc0NK
Syk7CisgICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dDsKKyAg
ICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gcHJpb3JDb250ZXh0TGVuZ3Ro
OworICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAhPSBtX2NhY2hlZFByaW9yQ29udGV4
dCB8fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgpIHsK
KyAgICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKG1fc3RyaW5nLCBtX2xv
Y2FsZSwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JDb250ZXh0
TGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKKyAgICB9CisK
KyAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVh
a0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsKKyAgICAg
ICAgbV9sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIG1faXRlcmF0b3IgPSBudWxscHRyOworICAg
ICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fbW9kZSA9IG1v
ZGU7CisgICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOworICAgICAgICBtX2Nh
Y2hlZFByaW9yQ29udGV4dExlbmd0aCA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9IDI7CisgICAgU3RyaW5nIG1f
c3RyaW5nOworICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKKyAgICBUZXh0QnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvcjsKKyAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQ7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKKyAgICB1bnNpZ25lZCBtX2NhY2hlZFBy
aW9yQ29udGV4dExlbmd0aDsKKyAgICBVQ2hhciBtX3ByaW9yQ29udGV4dFtwcmlvckNvbnRleHRD
YXBhY2l0eV07CisgICAgYm9vbCBtX2lzQ0pLOworfTsKKworLy8gSXRlcmF0ZXMgb3ZlciAiZXh0
ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCisvLyBOb3Rl
IHRoYXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBiZSBsZXNzIHNvcGhpc3RpY2F0ZWQg
LSBlLmcuIElDVSBwcmlvciB0bworLy8gdmVyc2lvbiA0LjAgb25seSBzdXBwb3J0cyAibGVnYWN5
IGdyYXBoZW1lIGNsdXN0ZXJzIi4KKy8vIFVzZSB0aGlzIGZvciBnZW5lcmFsIHRleHQgcHJvY2Vz
c2luZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KKworY2xhc3MgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcik7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCk7CisKKyAgICBvcGVyYXRv
ciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9CisKK3By
aXZhdGU6CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3I7Cit9OworCisvLyBDb3Vu
dHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4gQSBzdXJyb2dhdGUgcGFpciBvciBh
IHNlcXVlbmNlCisvLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hhcmFjdGVyIGFuZCBmb2xsb3dpbmcg
Y29tYmluaW5nIGNoYXJhY3RlcnMgaXMKKy8vIGNvdW50ZWQgYXMgMSBncmFwaGVtZSBjbHVzdGVy
LgorV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3Qg
U3RyaW5nJik7CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxs
IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworLy8gdGhlIHNwZWNpZmllZCBncmFwaGVtZSBjbHVz
dGVyIGxlbmd0aC4KK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCk7CisKK30KKwordXNp
bmcgV1RGOjpMaW5lQnJlYWtJdGVyYXRvck1vZGU7Cit1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0OwordXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7Cit1c2luZyBX
VEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OlRleHRCcmVh
a0RvbmU7Cit1c2luZyBXVEY6OlRleHRCcmVha0l0ZXJhdG9yOworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBhMzAxYzg4M2FjNWE3NDEyNWM3MzZmOGJmM2Q5M2MzZjVmNDc0ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVV9oCisKKy8vIEZJ
WE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9jYWxlcyBmb3IgSUNVLCBub3QganVzdCBmb3Ig
dGV4dCBicmVha2luZywKKy8vIHRoaXMgZmlsZSBhbmQgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRp
b24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCk7CisKK30K
KwordXNpbmcgV1RGOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQ7Cit1c2luZyBXVEY6OmN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRDsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwNTY4NjlmMTQ1ZGQ3NjgxZGZlYmI2ODg4OTViYzE5NTUxZTEzYmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVRWZsLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFs
cCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9G
VVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIq
IGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lz
dGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRUZXh0
QnJlYWtMb2NhbGVJRCgpCit7CisgICAgcmV0dXJuICJlbl91cyI7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VH
dGsuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVlNWEwNWZhNDkxOTVmYjMwYmY2OWRlZDU2MmQ1NDNi
OGI2MTAxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvZ3RrL1RleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKQor
eworICAgIC8vIEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICIi
OworfQorCitjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKQoreworICAgIC8v
IEZJWE1FOiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUuCisgICAgcmV0dXJuICJlbl91cyI7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzM4OGZkYmY3Y2E0OWJhNjU5ODk0Mzc3ZjJiMWM1NmFkYWQwZGVjYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCkBAIC0wLDAg
KzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRl
eHRQcm92aWRlci5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHN0cmluZy5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gUmVsb2NhdGUgcG9pbnRlciBmcm9tIHNvdXJjZSBp
bnRvIGRlc3RpbmF0aW9uIGFzIHJlcXVpcmVkLgorc3RhdGljIGlubGluZSB2b2lkIGZpeFBvaW50
ZXIoY29uc3QgVVRleHQqIHNvdXJjZSwgVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiYg
cG9pbnRlcikKK3sKKyAgICBpZiAocG9pbnRlciA+PSBzb3VyY2UtPnBFeHRyYSAmJiBwb2ludGVy
IDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHNvdXJjZS0+cEV4dHJhKSArIHNvdXJjZS0+ZXh0cmFTaXpl
KSB7CisgICAgICAgIC8vIFBvaW50ZXIgcmVmZXJlbmNlcyBzb3VyY2UgZXh0cmEgYnVmZmVyLgor
ICAgICAgICBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGRlc3RpbmF0aW9uLT5wRXh0cmEp
ICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihwb2ludGVyKSAtIHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihzb3VyY2UtPnBFeHRyYSkpOworICAgIH0gZWxzZSBpZiAocG9pbnRlciA+PSBzb3Vy
Y2UgJiYgcG9pbnRlciA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkgKyBz
b3VyY2UtPnNpemVPZlN0cnVjdCkgeworICAgICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291
cmNlIHRleHQgc3RydWN0dXJlLCBidXQgbm90IHNvdXJjZSBleHRyYSBidWZmZXIuCisgICAgICAg
IHBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihkZXN0aW5hdGlvbikgKyAoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KHBvaW50ZXIpIC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oc291cmNlKSk7CisgICAgfQorfQorCitVVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRl
c3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBz
dGF0dXMpCit7CisgICAgQVNTRVJUX1VOVVNFRChkZWVwLCAhZGVlcCk7CisgICAgaWYgKFVfRkFJ
TFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaW50MzJfdCBleHRy
YVNpemUgPSBzb3VyY2UtPmV4dHJhU2l6ZTsKKyAgICBkZXN0aW5hdGlvbiA9IHV0ZXh0X3NldHVw
KGRlc3RpbmF0aW9uLCBleHRyYVNpemUsIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRSgqc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAgIHZvaWQqIGV4dHJhTmV3ID0g
ZGVzdGluYXRpb24tPnBFeHRyYTsKKyAgICBpbnQzMl90IGZsYWdzID0gZGVzdGluYXRpb24tPmZs
YWdzOworICAgIGludCBzaXplVG9Db3B5ID0gc3RkOjptaW4oc291cmNlLT5zaXplT2ZTdHJ1Y3Qs
IGRlc3RpbmF0aW9uLT5zaXplT2ZTdHJ1Y3QpOworICAgIG1lbWNweShkZXN0aW5hdGlvbiwgc291
cmNlLCBzaXplVG9Db3B5KTsKKyAgICBkZXN0aW5hdGlvbi0+cEV4dHJhID0gZXh0cmFOZXc7Cisg
ICAgZGVzdGluYXRpb24tPmZsYWdzID0gZmxhZ3M7CisgICAgbWVtY3B5KGRlc3RpbmF0aW9uLT5w
RXh0cmEsIHNvdXJjZS0+cEV4dHJhLCBleHRyYVNpemUpOworICAgIGZpeFBvaW50ZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPmNvbnRleHQpOworICAgIGZpeFBvaW50ZXIoc291
cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnApOworICAgIGZpeFBvaW50ZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb24tPnEpOworICAgIEFTU0VSVCghZGVzdGluYXRpb24t
PnIpOworICAgIGNvbnN0IHZvaWQqIGNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCB2
b2lkKj4oZGVzdGluYXRpb24tPmNodW5rQ29udGVudHMpOworICAgIGZpeFBvaW50ZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgY2h1bmtDb250ZW50cyk7CisgICAgZGVzdGluYXRpb24tPmNodW5rQ29u
dGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KGNodW5rQ29udGVudHMpOworICAgIHJl
dHVybiBkZXN0aW5hdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYwYWY5OTcyMzkwZGQwMWJjMjNl
YjAyZjZhY2Y5MmM1NDg5MzQ3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXIuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVVRleHRQcm92aWRlcl9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJfaAorCisjaW5jbHVk
ZSA8dW5pY29kZS91dGV4dC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworZW51bSBjbGFzcyBVVGV4
dFByb3ZpZGVyQ29udGV4dCB7CisgICAgTm9Db250ZXh0LAorICAgIFByaW9yQ29udGV4dCwKKyAg
ICBQcmltYXJ5Q29udGV4dAorfTsKKworaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHVUZXh0
UHJvdmlkZXJDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+YiB8fCBuYXRpdmVJbmRleCA+IHRleHQt
PmIpCisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQ7
CisgICAgaWYgKG5hdGl2ZUluZGV4ID09IHRleHQtPmIpCisgICAgICAgIHJldHVybiBmb3J3YXJk
ID8gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0IDogVVRleHRQcm92aWRlckNv
bnRleHQ6OlByaW9yQ29udGV4dDsKKyAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6OlBy
aW9yQ29udGV4dDsKK30KKworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0
UHJvdmlkZXIoVVRleHQqIHRleHQsIGNvbnN0IFVUZXh0RnVuY3MqIGZ1bmNzLCBjb25zdCB2b2lk
KiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50
IHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICB0ZXh0LT5wRnVuY3MgPSBmdW5jczsKKyAgICB0
ZXh0LT5wcm92aWRlclByb3BlcnRpZXMgPSAxIDw8IFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVO
S1M7CisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAgICB0ZXh0LT5wID0gc3RyaW5nOwor
ICAgIHRleHQtPmEgPSBsZW5ndGg7CisgICAgdGV4dC0+cSA9IHByaW9yQ29udGV4dDsKKyAgICB0
ZXh0LT5iID0gcHJpb3JDb250ZXh0TGVuZ3RoOworfQorCisvLyBTaGFyZWQgaW1wbGVtZW50YXRp
b24gZm9yIHRoZSBVVGV4dENsb25lIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK1VUZXh0KiB1
VGV4dENsb25lSW1wbChVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVC
b29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cyk7CisKKworLy8gSGVscGVycyBmb3IgdGhlIFVU
ZXh0QWNjZXNzIGZ1bmN0aW9uIG9uIFVUZXh0RnVuY3MuCisKK2lubGluZSBpbnQ2NF90IHVUZXh0
QWNjZXNzUGluSW5kZXgoaW50NjRfdCYgaW5kZXgsIGludDY0X3QgbGltaXQpCit7CisgICAgaWYg
KGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGVsc2UgaWYgKGluZGV4ID4gbGlt
aXQpCisgICAgICAgIGluZGV4ID0gbGltaXQ7CisgICAgcmV0dXJuIGluZGV4OworfQorCitpbmxp
bmUgYm9vbCB1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UoVVRleHQqIHRleHQsIGludDY0
X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkLCBVQm9v
bCYgaXNBY2Nlc3NpYmxlKQoreworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGlmIChuYXRp
dmVJbmRleCA+PSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICYmIG5hdGl2ZUluZGV4IDwgdGV4dC0+
Y2h1bmtOYXRpdmVMaW1pdCkgeworICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJ
bmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgICAgICAgICAvLyBFbnN1cmUgY2h1
bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMy
X3QgcmFuZ2UuCisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpOworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZz
ZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG9mZnNldCkgOiAwOworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChuYXRpdmVJbmRl
eCA+PSBuYXRpdmVMZW5ndGggJiYgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBuYXRpdmVMZW5n
dGgpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7
CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID4g
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8PSB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQg
aXMgd2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4K
KyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zm
c2V0KSA6IDA7CisgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5hdGl2ZUluZGV4IDw9IDAgJiYg
IXRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IEZBTFNFOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEw
ZTFlODY0YjI5NzE0ODFlMzA5YzQzNTRlNDMxMDYxYjQ1YzdlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAKQEAgLTAsMCAr
MSwzOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVRl
eHRQcm92aWRlckxhdGluMS5oIgorCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIExhdGlu
MSBwcm92aWRlcgorCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ2xvbmUoVVRleHQqLCBjb25z
dCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGlu
MU5hdGl2ZUxlbmd0aChVVGV4dCopOworc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVU
ZXh0KiwgaW50NjRfdCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFFeHRyYWN0
KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7
CitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0
Kik7CitzdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMU1hcE5hdGl2ZUluZGV4VG9VVEYxNihjb25z
dCBVVGV4dCosIGludDY0X3QpOworc3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4dCop
OworCitzdGF0aWMgY29uc3Qgc3RydWN0IFVUZXh0RnVuY3MgdVRleHRMYXRpbjFGdW5jcyA9IHsK
KyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgdVRl
eHRMYXRpbjFDbG9uZSwKKyAgICB1VGV4dExhdGluMU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dExh
dGluMUFjY2VzcywKKyAgICB1VGV4dExhdGluMUV4dHJhY3QsCisgICAgbnVsbHB0ciwKKyAgICBu
dWxscHRyLAorICAgIHVUZXh0TGF0aW4xTWFwT2Zmc2V0VG9OYXRpdmUsCisgICAgdVRleHRMYXRp
bjFNYXBOYXRpdmVJbmRleFRvVVRGMTYsCisgICAgdVRleHRMYXRpbjFDbG9zZSwKKyAgICBudWxs
cHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIFVUZXh0KiB1VGV4
dExhdGluMUNsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJv
b2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwg
IWRlZXApOworCisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBVVGV4dCogcmVzdWx0ID0gdXRleHRfc2V0dXAoZGVzdGluYXRpb24sIHNpemVvZihV
Q2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSwgc3RhdHVzKTsKKyAgICBpZiAo
VV9GQUlMVVJFKCpzdGF0dXMpKQorICAgICAgICByZXR1cm4gZGVzdGluYXRpb247CisgICAgCisg
ICAgcmVzdWx0LT5wcm92aWRlclByb3BlcnRpZXMgPSBzb3VyY2UtPnByb3ZpZGVyUHJvcGVydGll
czsKKyAgICAKKyAgICAvLyBQb2ludCBhdCB0aGUgc2FtZSBwb3NpdGlvbiwgYnV0IHdpdGggYW4g
ZW1wdHkgYnVmZmVyLgorICAgIHJlc3VsdC0+Y2h1bmtOYXRpdmVTdGFydCA9IHNvdXJjZS0+Y2h1
bmtOYXRpdmVTdGFydDsKKyAgICByZXN1bHQtPmNodW5rTmF0aXZlTGltaXQgPSBzb3VyY2UtPmNo
dW5rTmF0aXZlU3RhcnQ7CisgICAgcmVzdWx0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oc291cmNlLT5jaHVua05hdGl2ZVN0YXJ0KTsKKyAgICByZXN1bHQtPmNo
dW5rT2Zmc2V0ID0gMDsKKyAgICByZXN1bHQtPmNvbnRleHQgPSBzb3VyY2UtPmNvbnRleHQ7Cisg
ICAgcmVzdWx0LT5hID0gc291cmNlLT5hOworICAgIHJlc3VsdC0+cEZ1bmNzID0gJnVUZXh0TGF0
aW4xRnVuY3M7CisgICAgcmVzdWx0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKilyZXN1bHQtPnBF
eHRyYTsKKyAgICBtZW1zZXQoY29uc3RfY2FzdDxVQ2hhcio+KHJlc3VsdC0+Y2h1bmtDb250ZW50
cyksIDAsIHNpemVvZihVQ2hhcikgKiBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSk7CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU5hdGl2
ZUxlbmd0aChVVGV4dCogdVRleHQpCit7CisgICAgcmV0dXJuIHVUZXh0LT5hOworfQorCitzdGF0
aWMgVUJvb2wgdVRleHRMYXRpbjFBY2Nlc3MoVVRleHQqIHVUZXh0LCBpbnQ2NF90IGluZGV4LCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIGludDY0X3QgbGVuZ3RoID0gdVRleHQtPmE7CisKKyAgICBp
ZiAoZm9yd2FyZCkgeworICAgICAgICBpZiAoaW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCAmJiBpbmRleCA+PSB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCkgeworICAgICAgICAgICAgLy8g
QWxyZWFkeSBpbnNpZGUgdGhlIGJ1ZmZlci4gU2V0IHRoZSBuZXcgb2Zmc2V0LgorICAgICAgICAg
ICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoaW5kZXggPj0gbGVuZ3RoICYmIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID09IGxlbmd0aCkgeworICAgICAgICAgICAgLy8gT2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwg
YnV0IHdlIGNhbid0IGdldCBpdC4KKyAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOworICAg
ICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGluZGV4IDw9IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ICYmIGluZGV4ID4gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgaW5zaWRlIHRoZSBidWZm
ZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KKyAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwor
ICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpbmRleCAm
JiAhdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgYXQg
dGhlIGJlZ2lubmluZzsgY2FuJ3QgZ28gYW55IGZhcnRoZXIuCisgICAgICAgICAgICB1VGV4dC0+
Y2h1bmtPZmZzZXQgPSAwOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIHVUZXh0LT5jaHVua05hdGl2
ZVN0YXJ0ID0gaW5kZXg7CisgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdVRleHQt
PmNodW5rTmF0aXZlU3RhcnQgKyBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eTsKKyAgICAg
ICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQorICAgICAgICAgICAgdVRl
eHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7CisKKyAgICAgICAgdVRleHQtPmNodW5rT2Zm
c2V0ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9
IGluZGV4OworICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBsZW5ndGgpCisg
ICAgICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IGxlbmd0aDsKKworICAgICAgICB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gVVRleHRX
aXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7CisgICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVT
dGFydCA8IDApCisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IDA7CisKKyAg
ICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW5kZXggLSB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgfQorICAgIHVUZXh0LT5jaHVua0xlbmd0aCA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpOworCisgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGNvbnN0X2Nhc3Q8
VUNoYXIqPih1VGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4o
dVRleHQtPmNvbnRleHQpICsgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPih1VGV4dC0+Y2h1bmtMZW5ndGgpKTsKKworICAgIHVUZXh0LT5uYXRpdmVJbmRleGlu
Z0xpbWl0ID0gdVRleHQtPmNodW5rTGVuZ3RoOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3N0
YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCogdVRleHQsIGludDY0X3Qgc3Rh
cnQsIGludDY0X3QgbGltaXQsIFVDaGFyKiBkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwgVUVy
cm9yQ29kZSogc3RhdHVzKQoreworICAgIGludDY0X3QgbGVuZ3RoID0gdVRleHQtPmE7CisgICAg
aWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZGVz
dENhcGFjaXR5IDwgMCB8fCAoIWRlc3QgJiYgZGVzdENhcGFjaXR5ID4gMCkpIHsKKyAgICAgICAg
KnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+IGxpbWl0IHx8IChsaW1pdCAtIHN0
YXJ0KSA+IElOVDMyX01BWCkgeworICAgICAgICAqc3RhdHVzID0gVV9JTkRFWF9PVVRPRkJPVU5E
U19FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHN0YXJ0ID4gbGVu
Z3RoKQorICAgICAgICBzdGFydCA9IGxlbmd0aDsKKyAgICBpZiAobGltaXQgPiBsZW5ndGgpCisg
ICAgICAgIGxpbWl0ID0gbGVuZ3RoOworCisgICAgbGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAg
ICAKKyAgICBpZiAoIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZGVzdENh
cGFjaXR5ID4gMCAmJiAhZGVzdCkgeworICAgICAgICBpbnQzMl90IHRyaW1tZWRMZW5ndGggPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOworICAgICAgICBpZiAodHJpbW1lZExlbmd0aCA+
IGRlc3RDYXBhY2l0eSkKKyAgICAgICAgICAgIHRyaW1tZWRMZW5ndGggPSBkZXN0Q2FwYWNpdHk7
CisKKyAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGRlc3QsIHN0YXRpY19jYXN0PGNvbnN0
IExDaGFyKj4odVRleHQtPmNvbnRleHQpICsgc3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
cmltbWVkTGVuZ3RoKSk7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCA8IGRlc3RDYXBhY2l0eSkg
eworICAgICAgICBkZXN0W2xlbmd0aF0gPSAwOworICAgICAgICBpZiAoKnN0YXR1cyA9PSBVX1NU
UklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HKQorICAgICAgICAgICAgKnN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PSBkZXN0Q2FwYWNpdHkpCisgICAgICAg
ICpzdGF0dXMgPSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HOworICAgIGVsc2UKKyAg
ICAgICAgKnN0YXR1cyA9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOworCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0
aW4xTWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQqIHVUZXh0KQoreworICAgIHJldHVybiB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCArIHVUZXh0LT5jaHVua09mZnNldDsKK30KKworc3RhdGlj
IGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3QgVVRleHQqIHVU
ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4KQoreworICAgIEFTU0VSVF9VTlVTRUQodVRleHQsIHVU
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID49IG5hdGl2ZUluZGV4KTsKKyAgICBBU1NFUlRfVU5VU0VE
KHVUZXh0LCBuYXRpdmVJbmRleCA8IHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0KTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4obmF0aXZlSW5kZXgpOworfQorCitzdGF0aWMgdm9pZCB1
VGV4dExhdGluMUNsb3NlKFVUZXh0KiB1VGV4dCkKK3sKKyAgICB1VGV4dC0+Y29udGV4dCA9IG51
bGxwdHI7Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZm
ZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBV
RXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgeworICAg
ICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVm
ZmVyLT50ZXh0LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdGV4dC0+Y29udGV4dCA9IHN0cmluZzsKKyAg
ICB0ZXh0LT5hID0gbGVuZ3RoOworICAgIHRleHQtPnBGdW5jcyA9ICZ1VGV4dExhdGluMUZ1bmNz
OworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSAoVUNoYXIqKXRleHQtPnBFeHRyYTsKKyAgICBt
ZW1zZXQoY29uc3RfY2FzdDxVQ2hhcio+KHRleHQtPmNodW5rQ29udGVudHMpLCAwLCBzaXplb2Yo
VUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOworCisgICAgcmV0dXJuIHRl
eHQ7Cit9CisKKworLy8gTGF0aW4xQ29udGV4dEF3YXJlIHByb3ZpZGVyCisKK3N0YXRpYyBVVGV4
dCogdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZShVVGV4dCosIGNvbnN0IFVUZXh0KiwgVUJv
b2wsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJl
TmF0aXZlTGVuZ3RoKFVUZXh0Kik7CitzdGF0aWMgVUJvb2wgdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBVQm9vbCk7CitzdGF0aWMgaW50MzJfdCB1VGV4dExh
dGluMUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hhcios
IGludDMyX3QsIFVFcnJvckNvZGUqKTsKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ29udGV4dEF3
YXJlQ2xvc2UoVVRleHQqKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRM
YXRpbjFDb250ZXh0QXdhcmVGdW5jcyA9IHsKKyAgICBzaXplb2YoVVRleHRGdW5jcyksCisgICAg
MCwKKyAgICAwLAorICAgIDAsCisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9uZSwKKyAg
ICB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dExhdGluMUNv
bnRleHRBd2FyZUFjY2VzcywKKyAgICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QsCisg
ICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAg
ICB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0
ciwKKyAgICBudWxscHRyCit9OworCitzdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0
IHRleHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29udGV4dChjb25zdCBVVGV4dCogdGV4
dCkKK3sKKyAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMpCisgICAgICAgIHJldHVybiBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0OworICAgIHJldHVybiB0ZXh0LT5jaHVua0NvbnRl
bnRzID09IHRleHQtPnBFeHRyYSA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4
dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lk
IHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dChVVGV4dCogdGV4dCwg
aW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQp
Cit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKKyAg
ICBpZiAoZm9yd2FyZCkgeworICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPj0gdGV4dC0+YiAm
JiBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCk7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZl
U3RhcnQgPSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5h
dGl2ZUluZGV4ICsgdGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgaWYg
KHRleHQtPmNodW5rTmF0aXZlTGltaXQgPiBuYXRpdmVMZW5ndGgpCisgICAgICAgICAgICB0ZXh0
LT5jaHVua05hdGl2ZUxpbWl0ID0gbmF0aXZlTGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChuYXRpdmVJbmRleCA+IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVu
Z3RoKTsKKyAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUluZGV4OworICAg
ICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5leHRyYVNp
emUgLyBzaXplb2YoVUNoYXIpOworICAgICAgICBpZiAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA8
IHRleHQtPmIpCisgICAgICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gdGV4dC0+YjsK
KyAgICB9CisgICAgaW50NjRfdCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwg
ZGVmaW5lZCBpZiBjb21wdXRlZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgIEFT
U0VSVChsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAg
dGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAgIHRleHQtPm5h
dGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICB0ZXh0LT5jaHVua09m
ZnNldCA9IGZvcndhcmQgPyAwIDogdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgU3RyaW5nSW1wbDo6
Y29weUNoYXJzKGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgTENoYXIqPih0ZXh0LT5wKSArICh0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0IC0g
dGV4dC0+YiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXh0LT5jaHVua0xlbmd0aCkpOworfQor
CitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4
dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRl
eHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cSk7CisgICAgdGV4dC0+Y2h1bmtDb250ZW50cyA9
IHN0YXRpY19jYXN0PGNvbnN0IFVDaGFyKj4odGV4dC0+cEV4dHJhKTsKKyAgICB0ZXh0TGF0aW4x
Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2
ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdh
cmVNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGlu
dDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5k
ZXggPCB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNF
RChuYXRpdmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5h
dGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBm
b3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRp
dmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNo
dW5rTmF0aXZlTGltaXQgPSB0ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+
YjsKKyAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Cisg
ICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7
CisgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQg
b2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJU
KG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0
LT5jaHVua09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNo
dW5rTGVuZ3RoKTsKK30KKworc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRj
aFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90
IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5r
Q29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEpOworICAgIHRl
eHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwor
ICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZl
SW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9CisKK3N0YXRpYyBVVGV4dCogdVRleHRM
YXRpbjFDb250ZXh0QXdhcmVDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBz
b3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICByZXR1cm4gdVRl
eHRDbG9uZUltcGwoZGVzdGluYXRpb24sIHNvdXJjZSwgZGVlcCwgc3RhdHVzKTsKK30KKworc3Rh
dGljIGludDY0X3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgoVVRleHQqIHRl
eHQpCit7CisgICAgcmV0dXJuIHRleHQtPmEgKyB0ZXh0LT5iOworfQorCitzdGF0aWMgVUJvb2wg
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZl
SW5kZXgsIFVCb29sIGZvcndhcmQpCit7CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dExhdGluMUNv
bnRleHRBd2FyZU5hdGl2ZUxlbmd0aCh0ZXh0KTsKKyAgICBVQm9vbCBpc0FjY2Vzc2libGU7Cisg
ICAgaWYgKHVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwg
bmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0FjY2Vzc2libGUpKQorICAgICAgICByZXR1cm4gaXNB
Y2Nlc3NpYmxlOworICAgIG5hdGl2ZUluZGV4ID0gdVRleHRBY2Nlc3NQaW5JbmRleChuYXRpdmVJ
bmRleCwgbmF0aXZlTGVuZ3RoKTsKKyAgICBVVGV4dFByb3ZpZGVyQ29udGV4dCBjdXJyZW50Q29u
dGV4dCA9IHRleHRMYXRpbjFDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29udGV4dCh0ZXh0KTsKKyAg
ICBVVGV4dFByb3ZpZGVyQ29udGV4dCBuZXdDb250ZXh0ID0gdVRleHRQcm92aWRlckNvbnRleHQo
dGV4dCwgbmF0aXZlSW5kZXgsIGZvcndhcmQpOworICAgIEFTU0VSVChuZXdDb250ZXh0ICE9IFVU
ZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQpOworICAgIGlmIChuZXdDb250ZXh0ID09IGN1
cnJlbnRDb250ZXh0KSB7CisgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBVVGV4dFByb3Zp
ZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCisgICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4
dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0
aCwgZm9yd2FyZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRleHRMYXRpbjFDb250ZXh0
QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwg
Zm9yd2FyZCk7CisgICAgfSBlbHNlIGlmIChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250
ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRj
aFRvUHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2Fy
ZCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChuZXdDb250ZXh0ID09IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmlvckNvbnRleHQpOworICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
U3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9y
d2FyZCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4
dExhdGluMUNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBpbnQ2NF90LCBpbnQ2NF90LCBVQ2hh
ciosIGludDMyX3QsIFVFcnJvckNvZGUqIGVycm9yQ29kZSkKK3sKKyAgICAvLyBJbiB0aGUgcHJl
c2VudCBjb250ZXh0LCB0aGlzIHRleHQgcHJvdmlkZXIgaXMgdXNlZCBvbmx5IHdpdGggSUNVIGZ1
bmN0aW9ucworICAgIC8vIHRoYXQgZG8gbm90IHBlcmZvcm0gYW4gZXh0cmFjdCBvcGVyYXRpb24u
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgKmVycm9yQ29kZSA9IFVfVU5TVVBQT1JU
RURfRVJST1I7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ29u
dGV4dEF3YXJlQ2xvc2UoVVRleHQqIHRleHQpCit7CisgICAgdGV4dC0+Y29udGV4dCA9IG51bGxw
dHI7Cit9CisKK1VUZXh0KiBvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4
dFdpdGhCdWZmZXIqIHV0V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3Ro
LCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgeworICAgICAg
ICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgVVRleHQqIHRleHQgPSB1dGV4dF9zZXR1cCgmdXRXaXRoQnVmZmVyLT50ZXh0
LCBzaXplb2YodXRXaXRoQnVmZmVyLT5idWZmZXIpLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxV
UkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIodGV4dCwg
JnRleHRMYXRpbjFDb250ZXh0QXdhcmVGdW5jcywgc3RyaW5nLCBsZW5ndGgsIHByaW9yQ29udGV4
dCwgcHJpb3JDb250ZXh0TGVuZ3RoKTsKKyAgICByZXR1cm4gdGV4dDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyTGF0aW4xLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4x
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjE3YjM0ZDU2NjUzY2E0ZDdhOGNhNDE0ZTE0NzkwM2UwY2E3MjgwMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJM
YXRpbjEuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVVGV4dFByb3Zp
ZGVyTGF0aW4xX2gKKyNkZWZpbmUgVVRleHRQcm92aWRlckxhdGluMV9oCisKKyNpbmNsdWRlIDx1
bmljb2RlL3V0ZXh0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK2NvbnN0IGludCBVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eSA9IDE2Owor
CitzdHJ1Y3QgVVRleHRXaXRoQnVmZmVyIHsKKyAgICBVVGV4dCB0ZXh0OworICAgIFVDaGFyIGJ1
ZmZlcltVVGV4dFdpdGhCdWZmZXJJbmxpbmVDYXBhY2l0eV07Cit9OworCitVVGV4dCogb3Blbkxh
dGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExD
aGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKK1VUZXh0
KiBvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dFdpdGhCdWZmZXIqIHV0
V2l0aEJ1ZmZlciwgY29uc3QgTENoYXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBV
Q2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBz
dGF0dXMpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVUZXh0UHJvdmlkZXJM
YXRpbjFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
clVURjE2LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTFmYzJlYWI5YTQ1N2YxNzc0OWY3MjNmNTIwN2YzODFkZjI5ZmFhZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJV
VEYxNi5jcHAKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCisKKyNpbmNsdWRlICJVVGV4dFBy
b3ZpZGVyLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8g
VVRGMTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29u
dGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7
CitzdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0
Kik7CitzdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCosIGlu
dDY0X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRy
YWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2Rl
Kik7CitzdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKKwor
c3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNz
ID0geworICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAg
ICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZU5hdGl2ZUxlbmd0aCwKKyAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzLAorICAgIHVU
ZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwK
KyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNs
b3NlLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyCit9OworCitzdGF0
aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1
cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQoreworICAgIGlmICghdGV4dC0+Y2h1bmtD
b250ZW50cykKKyAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7
CisgICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNv
bnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1h
cnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2
ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50
cyA9PSB0ZXh0LT5wKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRp
dmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKKyAgICBBU1NFUlRf
VU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5h
dGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9
IHRleHQtPmI7CisgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKKyAg
ICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlm
IGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgQVNTRVJUKGxlbmd0
aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVu
a0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8g
c3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhp
bmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZl
SW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBvZmZz
ZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFu
Z2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2
b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRl
eHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3
YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KHRleHQtPnApOworICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJ
blByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OworfQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRl
eHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3Ro
LCBVQm9vbCBmb3J3YXJkKQoreworICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRl
eHQtPnEpOworICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0
aXZlSW5kZXggPD0gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZv
cndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2
ZUxlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5k
ZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0
ZXh0LT5iOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5uYXRp
dmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgaW50NjRfdCBvZmZzZXQg
PSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNo
dW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50
MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCisgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0
ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKK30KKwor
c3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnApOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOworICAgIHRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKK30KKworc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRl
eHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JD
b2RlKiBzdGF0dXMpCit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGRlZXAsIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVU
RjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQoreworICAgIHJldHVybiB0
ZXh0LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdh
cmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQp
Cit7CisgICAgaWYgKCF0ZXh0LT5jb250ZXh0KQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAg
aW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3Ro
KHRleHQpOworICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKKyAgICBpZiAodVRleHRBY2Nlc3NJbkNo
dW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQs
IGlzQWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7CisgICAgbmF0aXZl
SW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwor
ICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2Q29udGV4
dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQg
bmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3
YXJkKTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9D
b250ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgeworICAgICAg
ICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250
ZXh0KQorICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRl
eHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0
ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICB9IGVsc2UgaWYg
KG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQorICAg
ICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5h
dGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIGVsc2UgeworICAgICAgICBB
U1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsK
KyAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwg
bmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgfQorICAgIHJldHVybiBU
UlVFOworfQorCitzdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChV
VGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJy
b3JDb2RlKQoreworICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92
aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCisgICAgLy8gdGhhdCBkbyBub3Qg
cGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKKyAgICByZXR1cm4gMDsKK30K
Kworc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQor
eworICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOworfQorCitVVGV4dCogb3BlblVURjE2Q29u
dGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250
ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgaWYgKFVfRkFJTFVSRSgqc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkg
eworICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7
CisgICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgeworICAgICAgICBBU1NFUlQoIXRleHQpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRl
eHRQcm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVu
Z3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRleHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyVVRGMTYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2MyYzJjOGU2YzVmYWRhNzViNWQ1MWY5NmJi
OGFjZTBhNzA0YWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3Uv
VVRleHRQcm92aWRlclVURjE2LmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgVVRleHRQcm92aWRlclVURjE2X2gKKyNkZWZpbmUgVVRleHRQcm92aWRlclVURjE2X2gKKwor
I2luY2x1ZGUgPHVuaWNvZGUvdXRleHQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1VUZXh0KiBv
cGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRl
eHRMZW5ndGgsIFVFcnJvckNvZGUqKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAv
LyBVVGV4dFByb3ZpZGVyVVRGMTZfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9t
YWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVm
NWRhYTY0Mjg4ODIxZTIwZjI2MjhjNjg1NWVlOGU4OGEzODkyYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvbWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMu
bW0KQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RhdGljIGNvbnN0IGludCBtYXhMb2Nh
bGVTdHJpbmdMZW5ndGggPSAzMjsKKworc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UoKQoreworICAgIFJldGFpblB0cjxDRlByb3Bl
cnR5TGlzdFJlZj4gbG9jYWxlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weVZhbHVlKENGU1RS
KCJBcHBsZVRleHRCcmVha0xvY2FsZSIpLAorICAgICAgICBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxp
Y2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3Qp
KTsKKyAgICBpZiAoIWxvY2FsZSB8fCBDRkdldFR5cGVJRChsb2NhbGUuZ2V0KCkpICE9IENGU3Ry
aW5nR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4obG9jYWxlLmdldCgpKTsKK30KKworc3RhdGljIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkKK3sKKyAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzQXJyYXkgPSBhZG9wdENGKENGTG9jYWxlQ29weVByZWZlcnJl
ZExhbmd1YWdlcygpKTsKKyAgICBpZiAoIWxhbmd1YWdlc0FycmF5KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBpZiAoIUNGQXJyYXlHZXRDb3VudChsYW5ndWFnZXNBcnJheS5nZXQoKSkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXNBcnJheS5nZXQoKSwgMCkpOwor
fQorCitzdGF0aWMgdm9pZCBnZXRMb2NhbGUoQ0ZTdHJpbmdSZWYgbG9jYWxlLCBjaGFyIGxvY2Fs
ZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQoreworICAgIC8vIEVtcHR5IHN0
cmluZyBtZWFucyAicm9vdCBsb2NhbGUiLCBhbmQgdGhhdCBpcyB3aGF0IHdlIHVzZSBpZiB3ZSBj
YW4ndCBnZXQgYSBwcmVmZXJlbmNlLgorICAgIGxvY2FsZVN0cmluZ0J1ZmZlclswXSA9IDA7Cisg
ICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybjsKKyAgICBDRlN0cmluZ0dldENTdHJpbmco
bG9jYWxlLCBsb2NhbGVTdHJpbmdCdWZmZXIsIG1heExvY2FsZVN0cmluZ0xlbmd0aCwga0NGU3Ry
aW5nRW5jb2RpbmdBU0NJSSk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFNlYXJjaExvY2FsZShjaGFy
IGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQoreworICAgIGdldExv
Y2FsZSh0b3BMYW5ndWFnZVByZWZlcmVuY2UoKS5nZXQoKSwgbG9jYWxlU3RyaW5nQnVmZmVyKTsK
K30KKworY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICBzdGF0aWMg
Y2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXTsKKyAgICBzdGF0
aWMgYm9vbCBnb3RTZWFyY2hMb2NhbGUgPSBmYWxzZTsKKyAgICBpZiAoIWdvdFNlYXJjaExvY2Fs
ZSkgeworICAgICAgICBnZXRTZWFyY2hMb2NhbGUobG9jYWxlU3RyaW5nQnVmZmVyKTsKKyAgICAg
ICAgZ290U2VhcmNoTG9jYWxlID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGxvY2FsZVN0cmlu
Z0J1ZmZlcjsKK30KKworc3RhdGljIHZvaWQgZ2V0VGV4dEJyZWFrTG9jYWxlKGNoYXIgbG9jYWxl
U3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF0pCit7CisgICAgLy8gSWYgdGhlcmUg
aXMgbm8gdGV4dCBicmVhayBsb2NhbGUsIHVzZSB0aGUgdG9wIGxhbmd1YWdlIHByZWZlcmVuY2Uu
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGUgPSB0ZXh0QnJlYWtMb2NhbGVQcmVm
ZXJlbmNlKCk7CisgICAgaWYgKGxvY2FsZSkgeworICAgICAgICBpZiAoUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjYW5vbmljYWxMb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2Fs
TGFuZ3VhZ2VJZGVudGlmaWVyRnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2NhbGUu
Z2V0KCkpKSkKKyAgICAgICAgICAgIGxvY2FsZSA9IGNhbm9uaWNhbExvY2FsZTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbG9jYWxlID0gdG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCk7CisgICAgZ2V0TG9j
YWxlKGxvY2FsZS5nZXQoKSwgbG9jYWxlU3RyaW5nQnVmZmVyKTsKK30KKworY29uc3QgY2hhciog
Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKK3sKKyAgICBzdGF0aWMgY2hhciBsb2NhbGVTdHJp
bmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXTsKKyAgICBzdGF0aWMgYm9vbCBnb3RUZXh0
QnJlYWtMb2NhbGUgPSBmYWxzZTsKKyAgICBpZiAoIWdvdFRleHRCcmVha0xvY2FsZSkgeworICAg
ICAgICBnZXRUZXh0QnJlYWtMb2NhbGUobG9jYWxlU3RyaW5nQnVmZmVyKTsKKyAgICAgICAgZ290
VGV4dEJyZWFrTG9jYWxlID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGxvY2FsZVN0cmluZ0J1
ZmZlcjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC93aW4vVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L3dpbi9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDE3ZTE3MDVl
ZjU0YjkzOTIxNGRhMTg0ODBkYjdhMzJjMzJjOTI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0
IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCB1
c2Ugc3lzdGVtIGxvY2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJl
bnRUZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgLy8gVXNpbmcgZW5fVVNfUE9TSVggbm93IHNv
IHdvcmQgc2VsZWN0aW9uIGluIGFkZHJlc3MgZmllbGQgd29ya3MgYXMgZXhwZWN0ZWQgYXMgYmVm
b3JlIChkb3VibGUtY2xpY2tpbmcKKyAgICAvLyBpbiBhIFVSTCBzZWxlY3RzIGEgd29yZCBkZWxp
bWl0ZWQgYnkgcGVyaW9kcyByYXRoZXIgdGhhbiBzZWxlY3RpbmcgdGhlIGVudGlyZSBVUkwpLgor
ICAgIC8vIEhvd2V2ZXIsIHRoaXMgaXMgbm90IGVudGlyZWx5IGNvcnJlY3QgLSB3ZSBzaG91bGQg
aG9ub3IgdGhlIHN5c3RlbSBsb2NhbGUgaW4gdGhlIG5vcm1hbCBjYXNlLgorICAgIC8vIEZJWE1F
OiA8cmRhcjovL3Byb2JsZW0vNjc4NjcwMz4gU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlIGZvciB0
ZXh0IGJyZWFraW5nCisgICAgcmV0dXJuICJlbl9VU19QT1NJWCI7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggOTA0Mzc3ZmNlYmRkNTZlNjBlNjYyZGU1Mjc0MDYxNTY2NTQyODc2YS4u
ZTc4YjA0MmIxMDQwMWUxZjRlZTNhMmFiMWEwNTJjMjE4YzNhMTFlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIzNzAsNyArMjM3MCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRl
ZFN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAotICAgIHBs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWMuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCiAgICAgcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC0yMzgzLDEwICsyMzgyLDYgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3Bw
CiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC9p
Y3UvVVRleHRQcm92aWRlci5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVy
TGF0aW4xLmNwcAotICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAK
LQogICAgIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZUFy
cmF5LmNwcAogICAgIHBsdWdpbnMvRE9NUGx1Z2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCAzZmU2MDM3OGMyNmNmMDhlNDVmMzczZWQ1MzM4N2RlZjc4NDU2Y2EzLi41MTQ1MDRl
NmVjMjVhYTVlNDNiOTkzOThkNWUzNWNlZWVhNzY2YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMjEyLDggKzIxMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJ
Q1UuY3BwCiAKLSAgICBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVRWZsLmNwcAotCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFu
dC5jcHAKIAogICAgIHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBjMjI0MDViNzRlMTVlN2I3NWY3NGFjODBm
ODE1N2M3NzNhOWM5ZWMwLi42NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgyLDggKzE4Miw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVj
a2VyRW5jaGFudC5jcHAKIAotICAgIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1VHdGsuY3BwCi0KICAgICBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlv
bkxpYkh5cGhlbi5jcHAKIAogICAgIHBsYXRmb3JtL3VuaXgvTG9nZ2luZ1VuaXguY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDM5ODk2Zjk4NDM1MjYxMmE5ZWVkNDliMjQwMTE0YjRj
MWQ4NDk1OTguLjlmNmY0OTZiNmNjNGVmNmU0Yjc0ZDg0YWMwYWE5ZGVhNTVhMDIzN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01NjYsNyArNTY2LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KICAgICBw
bGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmllcy5tbQotICAgIHBsYXRmb3JtL3RleHQvbWFj
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KICAgICBwbGF0Zm9ybS90ZXh0L21h
Yy9UZXh0Q29kZWNNYWMuY3BwCiAKICAgICByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggY2NiMWE1NzFlOWE2ZGU1NmFjZDA1NGE5MzM2NTM5
ZDA4ZTYwZjNmZi4uOGQ3OTBmYTcwOTFmYjYxMmYxNTE4OTU2OWM1N2Q5NmE5NWNjZDVkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwOSw4ICsxMDksNiBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAK
IAotICAgIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4u
Y3BwCi0KICAgICBwbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS93aW4vQml0
bWFwSW5mby5jcHAKICAgICBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGZiYTU3Zjg0OTliMTZkYjBlMDY4ZmQ5ZDc1M2ViOTE1MjJjOWViODQuLmMxMWJjNDdlNWNh
ZDYzMGEzNjU3Y2RlMWFkOWY3Yjc2YTBhNTVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MTgsMTEgKzE1MTgsMTEgQEAK
IAkJMzdGNTdBQkExQTUwNzI2RjAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNB
OUUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwICovOyB9
OwogCQkzN0Y1N0FCQjFBNTA3MjczMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFD
QTlGMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwICovOyB9
OwogCQkzN0Y1N0FCQzFBNTA3Mjc3MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgx
Q0FBMDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgKi87
IH07CisJCTM3RjU3QUJDMUE1MDcyODQwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OTgxQUJDNDEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3Bw
ICovOyB9OwogCQkzN0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNB
QTExMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNwcCAqLzsgfTsKIAkJMzdG
NTdBQkUxQTUwNzI3RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQUEyMTMxODIyRUMw
MEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgKi87IH07CiAJCTM3RjU3QUJGMUE1
MDcyODEwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBMzEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwICovOyB9OwogCQkzN0Y1N0FD
MDFBNTA3Mjg0MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBQTQxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKLQkJMzdG
NTdBQkMxQTUwNzI4NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFBQkM0MTMx
ODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgKi87IH07CiAJ
CTM3RjU3QUMxMUE1MDcyODcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg1NzA5MjE1
Q0M1MzJEMDA2MzU1Q0QgLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwICovOyB9OwogCQkz
N0Y1N0FDMjFBNTA3MjhCMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBNTEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi87IH07CiAJCTM3RjU3QUMzMUE1
MDcyOEYwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQwOUM5ODIxMTZEMERE
RDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi87IH07CkBA
IC0xNjkzLDEwICsxNjkzLDggQEAKIAkJNDM5MDQ2REQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTE1hdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwICov
OyB9OwogCQk0MzkwNDZERTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0ExMkRB
MjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguaCAqLzsgfTsKIAkJNDM5MDQ2REYxMkRB
MjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQjEyREEyNUUxN0JBRjgw
QTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCAqLzsgfTsKLQkJNDM5MTc2REYxMkRB
MjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTE3NkNCMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxT
dHlsZS5jcHAgKi87IH07CiAJCTQzOTA0NkRGMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3Bw
ICovOyB9OwogCQk0MzkwNDZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzkwNDZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi87
IH07Ci0JCTQzOTE3NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0MxMkRBMjVFMTdC
QUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi87IH07CiAJCTQzOTA0NkUwMTJEQTI1RTgwMEFGODBB
MiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhN
TE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkUxMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxSb290LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOTA0NkNEMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLzsg
fTsKIAkJNDM5MDQ2RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNFMTJEQTI1
RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmggKi87IH07CkBAIC0xNzEwLDYgKzE3MDgs
OCBAQAogCQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENjEyREEyNUU4
MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkVCMTJEQTI1RTgwMEFG
ODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0
aE1MVG9rZW4uY3BwICovOyB9OwogCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVy
TWF0aE1MVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oICovOyB9
OworCQk0MzkxNzZERjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0IxMkRBMjVFMTdC
QUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLzsgfTsKKwkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4
MEEyIC8qIE1hdGhNTFN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLzsg
fTsKIAkJNDM5RDMzNDMxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDAxM0E2OTEx
QzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oICovOyB9OwogCQk0MzlEMzM0NDEzQTY5MTFD
MDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBT
VkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovOyB9OwogCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBG
NEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JG
YWN0b3J5LmggKi87IH07CkBAIC0yODE0LDEyICsyODE0LDYgQEAKIAkJN0M3M0ZCMTExOTFFRjZG
NDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBK
U1VzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi87IH07CiAJCTdDNzNGQjEyMTkxRUY2RjQwMDdERTA2
MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmggKi87IH07CiAJCTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJN
ZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3M0ZCMTcxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNl
ck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDNzRENDMzMTg4
MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAv
KiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLzsgfTsKLQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmggKi87IH07Ci0JCTdDNzRENDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLzsgfTsKLQkJ
N0M3NEQ0MzgxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1
NyAvKiBVVGV4dFByb3ZpZGVyLmggKi87IH07Ci0JCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAv
KiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5jcHAgKi87IH07Ci0JCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsK
IAkJN0M3OTQxRTQxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFF
MjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsK
IAkJN0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUz
MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi87IH07CiAJ
CTdDODNERTg2MUQwNENDNUQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNG
MyAvKiBTcHJpbmdTb2x2ZXIuaCAqLzsgfTsKQEAgLTQyNzUsNyArNDI2OSw2IEBACiAJCUE1QTJB
RjBCMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3Mjkg
LyogUGFnZURlYnVnZ2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3Mjkg
LyogUGFnZURlYnVnZ2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICov
OyB9OwogCQlBNUE3QUE0MzEzMkYwRUNDMDBEM0EzQzIgLyogV2ViQXV0b2NhcGl0YWxpemUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTdBQTQyMTMy
RjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaCAqLzsgfTsKIAkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLzsgfTsKIAkJQTVB
RkIzNTAxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0
ZXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsKQEAgLTUxMTAsNyArNTEwMyw2IEBACiAJCUIyQUZG
QzgwMEQwMEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDNzgwRDAwQTVDMTAwMzAwNzRE
IC8qIEZvbnRDYXNjYWRlQ29jb2EubW0gKi87IH07CiAJCUIyQUZGQzgzMEQwMEE1QzEwMDMwMDc0
RCAvKiBHbHlwaFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjJBRkZDN0IwRDAwQTVDMTAwMzAwNzREIC8qIEdseXBoUGFnZU1hYy5jcHAg
Ki87IH07CiAJCUIyQUZGQzk3MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzhDMEQw
MEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSAqLzsgfTsKLQkJQjJBRkZDOTgwRDAw
QTVERjAwMzAwNzREIC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RDBEMDBBNURG
MDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLzsgfTsKIAkJ
QjJBRkZDOTkwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RTBEMDBBNURGMDAzMDA3
NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLzsgfTsKIAkJQjJBRkZDOUEwRDAwQTVERjAwMzAwNzRE
IC8qIFRleHRDb2RlY01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjJBRkZDOEYwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5oICovOyB9
OwogCQlCMkIxRjcxNjBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQjFGNzE0
MEQwMENBQTgwMDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovOyB9OwpAQCAt
NTEyMiw4ICs1MTE0LDYgQEAKIAkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMkMzRDlGRTBEMDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLzsgfTsK
IAkJQjJDM0RBMkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0Q5RkYwRDAwNkMxRDAw
RUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUIyQzNEQTM0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91
bmRhcmllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjJDM0RBMDQwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjJDM0RBMzYwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwNjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFr
SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlCMkMzREEzODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJD
M0RBMDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREEz
OTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQzNEQTA5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0
Q29kZWMuY3BwICovOyB9OwogCQlCMkMzREEzQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEw
QTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjJDM0RBM0IwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY0lDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMkMzREEwQjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjSUNVLmNwcCAqLzsgfTsK
QEAgLTU4MDcsNyArNTc5Nyw2IEBACiAJCUJDRDBGQzRGMERCRDcyMEIwMEIyRjYzMCAvKiBET01S
R0JDb2xvckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0QwRkM0RTBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5o
ICovOyB9OwogCQlCQ0Q0MUFCQjBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDQxQUJBMEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0
b20uY3BwICovOyB9OwogCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0
U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92
aWRlci5oICovOyB9OwotCQlCQ0Q4QTVGMDE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRl
cmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNEOEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsK
IAkJQkNEOUMyNjIwQzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjVFMEMxN0FB
NjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi87IH07CiAJCUJDRDlDMjYzMEMx
N0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIg
LyogSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwICovOyB9OwogCQlCQ0Q5QzI2NDBDMTdBQTY3MDA1
QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRDlDMjYwMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20u
Y3BwICovOyB9OwpAQCAtODY5MSw2ICs4NjgwLDcgQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgz
RjBGIC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1h
cmt1cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRV
bmRvSW5zZXJ0aW9uTWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OTdCRTNEOTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4MUFCQzQxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjk4MUNBOUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RTEzMTgyMkVDMDBEMTJGMkEgLyog
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4
MUNBOUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODY5OSw3ICs4Njg5LDYgQEAKIAkJMjk4MUNBQTIxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8qIEFj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjk4
MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vz
c2liaWxpdHlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdl
U3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJMjk4MUNBQTYx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5ODFDQUE3MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTAzNiw4ICs5MDI1LDggQEAKIAkJ
MzFGQjFBNkIxMjBBNUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXZpY2VNb3Rpb25FdmVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIw
ODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMxNEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMxRkY2N0RFMTk3QjU3MzkzQzQ2QUE3IC8qIFJlbmRl
ck1hdGhNTFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1h
dGhNTFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMUZGNjdERTE5N0I1
NzM5M0M0NkE3RiAvKiBSZW5kZXJNYXRoTUxQYWRkZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MUGFkZGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90
aWZpY2F0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb24uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyog
Tm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0M5OTEwMTc5QTc0MDAz
QjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBw
YXRoID0gTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MzExLDEwICs5MzAwLDggQEAKIAkJNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTE1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVyTWF0aE1MTWF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNB
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTE1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDM5MDQ2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxPcGVy
YXRvckRpY3Rpb25hcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzkxNzZD
QjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzkwNDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDQzEyREEyNUUx
N0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3R5bGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRl
ck1hdGhNTE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ck1hdGhNTE9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNE
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MzkwNDZDRTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1M
Um9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxSb290
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzI4LDYgKzkzMTUsOCBAQAogCQk0
MzkwNDZENjEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhPcGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZEODEyREEyNUU4MDBBRjgw
QTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyTWF0aE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM5
MTc2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFN0eWxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRl
ZFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA1NTcsMTIgKzEwNTQ2LDYgQEAKIAkJN0M3
M0ZCMEYxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8q
IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NzNGQjE3MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0M3NEQ0MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGlu
MS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDMyMTg4MjNBOTMwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVUZXh0UHJvdmlkZXJMYXRpbjEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJN0M3NEQ0MzUxODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3
IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3Qzc0RDQzQTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0
YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29y
ZVNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4M0RFODUx
RDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTcHJpbmdTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyMDc1LDcgKzEyMDU4LDYgQEAKIAkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VE
ZWJ1Z2dhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VE
ZWJ1Z2dhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMEExODI5
NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1QTdBQTQyMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvY2FwaXRhbGl6ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFr
SXRlcmF0b3JQb29sSUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFG
QjM0RDExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleUV2ZW50Q29jb2EuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTA4LDcgKzEzMDkwLDYgQEAKIAkJQjJBRkZDODYwRDAw
QTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGluZ3MudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSAibWFjLWVuY29kaW5ncy50eHQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFG
RkM4NzBEMDBBNURGMDAzMDA3NEQgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IHBhdGggPSAibWFrZS1jaGFyc2V0LXRhYmxlLnBsIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRC
b3VuZGFyaWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
eHRCb3VuZGFyaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkFGRkM4RDBE
MDBBNURGMDAzMDA3NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4RTBE
MDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWNNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCMkFGRkM4RjBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjJCMUY3MTQwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVu
dHNIaXRSdWxlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9p
bnRlckV2ZW50c0hpdFJ1bGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
MTIwLDggKzEzMTAxLDYgQEAKIAkJQjJDM0Q5RkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VnbWVu
dGVkU3RyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0Q5RkYwRDAw
NkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VnbWVudGVkU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJvdW5kYXJpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjJDM0RBMDYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0QnJlYWtJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkMzREEwODBEMDA2QzFEMDBF
RjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENv
ZGVjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwQTBEMDA2QzFEMDBFRjZG
MjYgLyogVGV4dENvZGVjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
Q29kZWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBMEIwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRDb2RlY0lDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dENvZGVjSUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzODMxLDcgKzEzODEwLDYgQEAKIAkJQkNEMEZDNEUwREJENzIwQjAwQjJGNjMwIC8qIERPTVJH
QkNvbG9ySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUkdC
Q29sb3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q0MUFCQTBD
MDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4
ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkNEOEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0
ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCcmVh
a0l0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNEOUMyNUUwQzE3
QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRDlDMjVGMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1h
cEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYW1l
ZE5vZGVNYXBDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q5QzI2
MDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTg0MjUsMTkgKzE4NDAzLDYgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAv
KiBpY3UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTdD
NzRENDM1MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLywKLQkJCQk3Qzc0
RDQzNjE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovLAotCQkJCTdDNzRENDMx
MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLywKLQkJCQk3Qzc0
RDQzMjE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovLAotCQkJCTdD
NzRENDM5MTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovLAotCQkJ
CTdDNzRENDNBMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLywKLQkJ
CSk7Ci0JCQlwYXRoID0gaWN1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJ
N0U0REUxMEIxOThCMTA4MTAwNTFDQjAyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIyMzM1LDcgKzIyMzAwLDYgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8q
IGNmICovLAotCQkJCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBpY3UgKi8sCiAJCQkJQTUx
NkU4QjIxMzZFMDRDMDAwNzZDM0MwIC8qIGlvcyAqLywKIAkJCQlCMkMzRDlGOTBEMDA2QzFEMDBF
RjZGMjYgLyogbWFjICovLAogCQkJCUIyQzNEOUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29u
dGV4dC5jcHAgKi8sCkBAIC0yMjM0Nyw3ICsyMjMxMSw2IEBACiAJCQkJNDUzRUI2MzUxNTlDNTcw
NDAwMDAxQkI3IC8qIERhdGVUaW1lRm9ybWF0LmggKi8sCiAJCQkJQ0VDQ0ZDM0ExNDE5NzNENTAw
MkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNlcy5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQz
QzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAotCQkJCUE1QUJCNzg2MTNCOTA0QkMwMEYx
OTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywKIAkJCQk4OUI1RUE5RjExRTgw
MDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJODlCNUVBQTAxMUU4MDAzRDAw
RjIzNjdFIC8qIExpbmVFbmRpbmcuaCAqLywKIAkJCQk3NjMzQTcyNDEzRDhCMzNBMDA4NTAxQjYg
LyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggKi8sCkBAIC0yMjM2Myw5ICsyMjMyNiw2IEBACiAJ
CQkJOTdDMDc4NEYxMTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLywKIAkJCQkzNzJD
MDBDMzEyOTYxMUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwICovLAogCQkJCUIyQzNE
QTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovLAotCQkJCUJDRDhBNUVG
MTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCi0JCQkJQjJDM0RB
MDYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggKi8sCi0JCQkJQjJDM0RB
MDgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywK
IAkJCQlBNzE1MUJENzEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCAqLywK
IAkJCQlBNzdEMDAxMTEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggKi8sCiAJCQkJ
QjJDM0RBMDkwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlYy5jcHAgKi8sCkBAIC0yMjQwOSw3
ICsyMjM2OSw2IEBACiAJCQkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGlu
Z3MudHh0ICovLAogCQkJCUIyQUZGQzg3MEQwMEE1REYwMDMwMDc0RCAvKiBtYWtlLWNoYXJzZXQt
dGFibGUucGwgKi8sCiAJCQkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFy
aWVzLm1tICovLAotCQkJCUIyQUZGQzhEMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVTWFjLm1tICovLAogCQkJCUIyQUZGQzhFMEQwMEE1REYwMDMwMDc0RCAv
KiBUZXh0Q29kZWNNYWMuY3BwICovLAogCQkJCUIyQUZGQzhGMEQwMEE1REYwMDMwMDc0RCAvKiBU
ZXh0Q29kZWNNYWMuaCAqLywKIAkJCSk7CkBAIC0yNzQwMCw3ICsyNzM1OSw2IEBACiAJCQkJQkNG
RjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0NzMwRDkxMTI0OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4
RTAwMEM3QjkyIC8qIExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUI1RUFB
MjExRTgwMDNEMDBGMjM2N0UgLyogTGluZUVuZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZF
RkFCMkExODM4MERBMDAwNTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODYyMiw4ICsyODU4MCw2IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8q
IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYx
ODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkMzREEzNDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICov
LAotCQkJCUIyQzNEQTM2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQjJDM0RBMzgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYw
MDVBMEY2NCAvKiBUZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RDAw
MTIxMzNCMEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdEQkY4REUxMjc2OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yODc2Niw5ICsyODcyMiw2IEBACiAJCQkJQkM4QkYxNTExMDU4MTNCRjAwQTQw
QTA3IC8qIFVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCRjE1QTEwNTgx
NDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNERjMxN0MxMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3IC8qIFVU
ZXh0UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDNzRENDNDMTg4MjQwMDQw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQUZC
RjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFM0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NUExNTQyODEyNzk1MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzIxODMsOCArMzIxMzYsNiBAQAogCQkJCTBGNTREQ0U1MTg4MTA1MUQwMDNFRURC
QiAvKiBUZXh0QXV0b1NpemluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzJDMDBDNDEyOTYx
MUYxMDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJB
RkZDOTcwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyQUZGQzk4MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEQkY4REQxMjc2
OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkMzREEzOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTNCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNJQ1UuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMjMwMyw5ICszMjI1NCw2IEBACiAJCQkJN0NFNjgzNDQxOTIxNDNBODAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M3M0ZCMDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1l
c3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERjMxN0IxMUY4RDY4MzAwM0M1QkY4IC8q
IFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNzRE
NDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIw
IC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFM0JCRjA3MTE2MkRBMTEw
MEI5NDA5QSAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQw
MEQwQjBDMCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCBkNTMzYzM3MGNlNjc1ZmZhNTg2NGM2NDY2YTg0
MTQ3M2JmNDFlMTY3Li5iMmQ3ZGFlNzI5NWQwYTI0ODA4ZDAwZGQzNGJiNDMzNTAyYjkzMzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5j
bHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgog
I2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJh
dG9yLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGI2OTUyZTJiODZmMTljZWM2NmRj
YmFmY2U5NjYyMWI2ZDUxMTk5YjkuLmYxODY1NDk2N2RkZTU3NzU2ZTVkMzU5Nzg3M2Q1MmI5MmFj
NDc3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
U2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJ
dGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5j
bHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAppbmRleCBjYjc0YWY5NjMwZGI0ZTI1ODg1MDZlNzU3MjZlZDNhMDBmZTExY2Y2Li4w
N2FhYjYxNmNiNjdmOTZmODdlZmYxYzQ2N2ZkYmRmOTUzMDYxNDdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiU2lt
cGxlTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgog
I2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3Iu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgog
I2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgpAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNpZiAhVUNPTkZJR19OT19DT0xMQVRJT04K
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCiAjaW5jbHVkZSA8dW5p
Y29kZS91c2VhcmNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggZWQ2YTY4YTFhYTY2NDYwMGE5
NjNjNjkyZTJjYjg4YzAzODUzZTRiZS4uZTBkYzQwNTVlYWVkZjhiMzg4YjM0ZWIyYmU4MjZiMWQ0
NTJmNmQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMzcs
NyArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJUZXh0
LmgiCiAjaW5jbHVkZSAiVGV4dEJvdW5kYXJpZXMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVy
YXRvci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1
ZGUgImh0bWxlZGl0aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAppbmRleCAwMjNhYzMzOTBmMmJkYTJiNzUzZjdhYmI4MzA2OTM5YTRkMzZmMDUyLi4zNGI0Y2Nj
YWVkN2I5ZjM1OGE5NzM2ODllM2IwNzZhYjU3YWU1N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlICJTY29wZWRF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiU2VhcmNoSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5j
bHVkZSAiVG91Y2hFdmVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggZjkyMTA4YWNhNmYxZDhhM2Q5Y2VkYWNkYjBiODA4MmRkZjM4MmM4ZC4u
Y2YyYThhODg3MDYxOGQwMGUzZjU2ZWUxMmEyYmI3NmNmZjRjNTJhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNh
YWY0MTQ1ZWQxOGNkZDA3YzViNDk4N2ZlNzc3OTBjNDAzMjYwMTkuLjg5MWI2YmJmYTljYTYzYmM1
NWQxMzBjZmJiZjA5NTEyOTg4YzA4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0
SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSAi
VGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgogI2luY2x1ZGUgIlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1lSW5wdXRUeXBl
LmgiCiAjaW5jbHVkZSAiVVJMSW5wdXRUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAKaW5kZXggYWQxZDRlMzQ4MDA2OWY3YWEwZDE3NDFkMTFiMzhkMDc0
ODQ0YzI0ZC4uMjY2ODgxMzkxOGRmNmUxZGU3ZDU5Mzg3MzY4YTEyOGMzYjE5MmQ4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNTEsNyArNTEsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlRleHRCcmVh
a0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNp
bmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5
cGUuY3BwCmluZGV4IGI1NGU5YjJlN2Q5ZDEyOGIxY2M5NTMzNjE0ZDhmMDRhNzc1Y2U2ODguLmY2
ZjAyNzZkMThkODY4MDQwZGJmYjYyNTg4MmI3MDhjMzM2NThlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0SW5wdXRUeXBlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5jbHVkZSAiVGV4
dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAKaW5kZXggZmU1ZWJmZWFmZjY4Y2Q3MTU3YTU1NTFmNDUxZjU5MTVl
MTcwMTUwZi4uNWIxODk0ZTkxMmU4NGZjNzk3M2U4OTQxZWZmNDg0MDZlNDg1YmIzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTI5LDkgKzI5
LDkgQEAKIAogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5h
bWVzLmg+CiAKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBjZWRlZDczMGY0NTdmYWRmMGU4MjIw
NDgyZTJkZGU3Mjg3MmY4ZDQ2Li5hZmE4ZTEyZDgxYmQ4NWJkOTYzZjhkY2IyYzhiZWM1NDc5NzRj
MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdU
cnVuY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmlu
Z1RydW5jYXRvci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0
b3IuaCIKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1
ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29s
b3JDRy5jcHAKaW5kZXggYjNkZGQ4YzNkZjgwNzhkZGNjNzdhYjYzZDQ0MjE4YTYyNmJjYTQxOC4u
NmQ4OGM4OGRkNGFhNmQyZDBhYzM0ZDMxNGFmNmRmMmJhZTI3ZDU5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTQwLDYgKzQwLDIw
IEBACiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3Rh
dGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImKTsKK30KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPD4KK1JldGFpblB0cjxDR0NvbG9yUmVmPiBUaW55TFJVQ2FjaGVQ
b2xpY3k8V2ViQ29yZTo6Q29sb3IsIFJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZhbHVl
Rm9yS2V5KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gYWRvcHRD
RihXZWJDb3JlOjpsZWFrQ0dDb2xvcihjb2xvcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
KworbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIENHQ29s
b3JSZWYgY3JlYXRlQ0dDb2xvcldpdGhEZXZpY2VSR0JBKENHQ29sb3JSZWYgc291cmNlQ29sb3Ip
CkBAIC0xMDgsMTIgKzEyMiw2IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJl
ZigpLCBjb21wb25lbnRzKTsKIH0KIAotdGVtcGxhdGU8PgotUmV0YWluUHRyPENHQ29sb3JSZWY+
IFRpbnlMUlVDYWNoZVBvbGljeTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRl
VmFsdWVGb3JLZXkoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIHJldHVybiBhZG9wdENGKGxl
YWtDR0NvbG9yKGNvbG9yKSk7Ci19Ci0KIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiB7CiAgICAgc3dpdGNoIChjb2xvci5yZ2IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcAppbmRleCBmZjBiZjgxOTc1MDgxN2NiZTJjN2JmY2JlYjgxZmI0MWE5MWE3
YTgzLi4xNzc3OTllYWFjN2MxZjdiMjI2ZDhlZDBlNGFjZDA3MDA0Yjg5ODhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNj
YWRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
Ci0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0
QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNmNTBhNWQ2NTg2NWEzNDFiZmVjZjM3Y2I1Y2Jk
Yzk2NmYzODE4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9o
Ci0jZGVmaW5lIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCi0KLSNpbmNsdWRlICJUZXh0QnJl
YWtJdGVyYXRvci5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIK
LSNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBMaW5lQnJlYWtJdGVyYXRvclBvb2wgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKExpbmVCcmVha0l0ZXJhdG9yUG9vbCk7Ci1wdWJsaWM6Ci0gICAgTGlu
ZUJyZWFrSXRlcmF0b3JQb29sKCkgeyB9Ci0KLSAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQ
b29sJiBzaGFyZWRQb29sKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNp
ZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD4qIHBvb2wgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZp
YzxMaW5lQnJlYWtJdGVyYXRvclBvb2w+OwotICAgICAgICByZXR1cm4gKipwb29sOwotICAgIH0K
LQotICAgIHN0YXRpYyBTdHJpbmcgbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQoY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQotICAgIHsKLSAg
ICAgICAgU3RyaW5nQnVpbGRlciBsb2NhbGVXaXRoS2V5d29yZDsKLSAgICAgICAgbG9jYWxlV2l0
aEtleXdvcmQuYXBwZW5kKGxvY2FsZSk7Ci0gICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVu
ZExpdGVyYWwoIkBicmVhaz0iKTsKLSAgICAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgICAgIGNh
c2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0TG9vc2U6Ci0gICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRM
aXRlcmFsKCJsb29zZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGluZUJy
ZWFrSXRlcmF0b3JNb2RlVUFYMTROb3JtYWw6Ci0gICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29y
ZC5hcHBlbmRMaXRlcmFsKCJub3JtYWwiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0U3RyaWN0OgotICAgICAgICAgICAgbG9jYWxl
V2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgic3RyaWN0Iik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gbG9jYWxlV2l0aEtleXdvcmQudG9TdHJpbmcoKTsK
LSAgICB9Ci0KLSAgICBUZXh0QnJlYWtJdGVyYXRvciogdGFrZShjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCi0gICAgewot
ICAgICAgICBBdG9taWNTdHJpbmcgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkOwotICAg
ICAgICBpZiAobW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgICAg
IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCA9IGxvY2FsZTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbWFrZUxvY2FsZVdp
dGhCcmVha0tleXdvcmQobG9jYWxlLCBtb2RlKTsKLQotICAgICAgICBUZXh0QnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IgPSAwOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG1fcG9vbFtpXS5maXJzdCA9PSBsb2NhbGVX
aXRoT3B0aW9uYWxCcmVha0tleXdvcmQpIHsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1f
cG9vbFtpXS5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgbV9wb29sLnJlbW92ZShpKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghaXRlcmF0b3IpIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yID0gb3BlbkxpbmVCcmVha0l0ZXJh
dG9yKGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCwgbW9kZSwgaXNDSkspOwotICAgICAg
ICAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
fQotCi0gICAgICAgIEFTU0VSVCghbV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3Ip
KTsKLSAgICAgICAgbV92ZW5kZWRJdGVyYXRvcnMuc2V0KGl0ZXJhdG9yLCBsb2NhbGVXaXRoT3B0
aW9uYWxCcmVha0tleXdvcmQpOwotICAgICAgICByZXR1cm4gaXRlcmF0b3I7Ci0gICAgfQotCi0g
ICAgdm9pZCBwdXQoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotICAgIHsKLSAgICAgICAg
QVNTRVJUX0FSRyhpdGVyYXRvciwgbV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3Ip
KTsKLQotICAgICAgICBpZiAobV9wb29sLnNpemUoKSA9PSBjYXBhY2l0eSkgewotICAgICAgICAg
ICAgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihtX3Bvb2xbMF0uc2Vjb25kKTsKLSAgICAgICAgICAg
IG1fcG9vbC5yZW1vdmUoMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3Bvb2wuYXBwZW5kKEVu
dHJ5KG1fdmVuZGVkSXRlcmF0b3JzLnRha2UoaXRlcmF0b3IpLCBpdGVyYXRvcikpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNhcGFjaXR5ID0gNDsKLQotICAg
IHR5cGVkZWYgc3RkOjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJyZWFrSXRlcmF0b3IqPiBFbnRy
eTsKLSAgICB0eXBlZGVmIFZlY3RvcjxFbnRyeSwgY2FwYWNpdHk+IFBvb2w7Ci0gICAgUG9vbCBt
X3Bvb2w7Ci0gICAgSGFzaE1hcDxUZXh0QnJlYWtJdGVyYXRvciosIEF0b21pY1N0cmluZz4gbV92
ZW5kZWRJdGVyYXRvcnM7Ci0KLSAgICBmcmllbmQgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJl
YWtJdGVyYXRvclBvb2w+OjpvcGVyYXRvciBMaW5lQnJlYWtJdGVyYXRvclBvb2wqKCk7Ci19Owot
Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Qm91bmRhcmllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3Vu
ZGFyaWVzLmNwcAppbmRleCBkZmNmOWEzNDYyZDViMWIyODRkMTk1OThhZmUwMzJiM2U0Y2RjZTFi
Li40N2QyNDQ3NWFjMDk4OTRlMDM4ODUxYTQ4YmI5YzA1ZWRkZWYzN2MyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAK
LSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYTY2
Y2UwYjdlZDE0N2FlN2M2YjNkN2I5NzA5ODIzZTdmZTMyNWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MjkgKzAsMCBAQAotLyoK
LSAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgotCi0j
aW5jbHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92
aWRlckxhdGluMS5oIgotI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgotI2luY2x1ZGUg
PG11dGV4PgotI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgotCi0vLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJldHRlciBuYW1lCi0jZGVmaW5l
IEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkpCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotLy8gSXRlcmF0b3IgaW5pdGlhbGl6YXRpb24KLQotc3RhdGljIFRl
eHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3IoVUJyZWFrSXRlcmF0b3JUeXBlIHR5
cGUsIGNvbnN0IGNoYXIqIGxvY2FsZSA9IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpKQotewot
ICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IgPSByZWludGVycHJldF9jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4o
dWJya19vcGVuKHR5cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMpKTsKLSAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3BlbiBh
IGJyZWFrIGl0ZXJhdG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9wZW5T
dGF0dXMpOwotICAgIHJldHVybiBpdGVyYXRvcjsKLX0KLQotI2lmICFQTEFURk9STShJT1MpCi0K
LXN0YXRpYyBUZXh0QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGNv
bnN0IGNoYXIqIGJyZWFrUnVsZXMpCi17Ci0gICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7Ci0g
ICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0cmxlbihicmVha1J1bGVzKTsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVy
cyA9IFN0cmluZ1ZpZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJyZWFrUnVsZXMp
LCBsZW5ndGgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIFRleHRCcmVha0l0ZXJhdG9y
KiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrX29w
ZW5SdWxlcyh1cGNvbnZlcnRlZENoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgJnBhcnNlU3RhdHVz
LCAmb3BlblN0YXR1cykpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5T
dGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1
X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9y
OwotfQotCi0jZW5kaWYKLQotCi0vLyBJdGVyYXRvciB0ZXh0IHNldHRpbmcKLQotc3RhdGljIFRl
eHRCcmVha0l0ZXJhdG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0
ZXJhdG9yLCBTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7
Ci0gICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7Ci0gICAgICAgIHRleHRMb2NhbC50
ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7Ci0gICAgICAgIHRleHRMb2NhbC50ZXh0LmV4dHJhU2l6
ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKLSAgICAgICAgdGV4dExvY2FsLnRleHQucEV4
dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKLQotICAgICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFVUZXh0KiB0ZXh0ID0gb3BlbkxhdGluMVVUZXh0UHJv
dmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwg
Jm9wZW5TdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAg
ICAgICAgICBMT0dfRVJST1IoInVUZXh0T3BlbkxhdGluMSBmYWlsZWQgd2l0aCBzdGF0dXMgJWQi
LCBvcGVuU3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0K
LSAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAg
ICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0
b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4
dFN0YXR1cykpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQg
d2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAg
ICAgICB1YnJrX3NldFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVy
YXRvciksIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0
YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gJml0ZXJhdG9yOwotfQotCi1z
dGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihU
ZXh0QnJlYWtJdGVyYXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBVQ2hh
ciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAgaWYg
KHN0cmluZy5pczhCaXQoKSkgewotICAgICAgICBVVGV4dFdpdGhCdWZmZXIgdGV4dExvY2FsOwot
ICAgICAgICB0ZXh0TG9jYWwudGV4dCA9IFVURVhUX0lOSVRJQUxJWkVSOwotICAgICAgICB0ZXh0
TG9jYWwudGV4dC5leHRyYVNpemUgPSBzaXplb2YodGV4dExvY2FsLmJ1ZmZlcik7Ci0gICAgICAg
IHRleHRMb2NhbC50ZXh0LnBFeHRyYSA9IHRleHRMb2NhbC5idWZmZXI7Ci0KLSAgICAgICAgVUVy
cm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVVGV4dCogdGV4dCA9
IG9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKCZ0ZXh0TG9jYWwsIHN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0
TGVuZ3RoLCAmb3BlblN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykp
IHsKLSAgICAgICAgICAgIExPR19FUlJPUigib3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJv
dmlkZXIgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9j
YXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwot
ICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1
cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIHV0
ZXh0X2Nsb3NlKHRleHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVUZXh0IHRleHRMb2NhbCA9
IFVURVhUX0lOSVRJQUxJWkVSOwotCi0gICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVf
WkVST19FUlJPUjsKLSAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuVVRGMTZDb250ZXh0QXdhcmVV
VGV4dFByb3ZpZGVyKCZ0ZXh0TG9jYWwsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxl
bmd0aCgpLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOwot
ICAgICAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJS
T1IoIm9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIgZmFpbGVkIHdpdGggc3RhdHVz
ICVkIiwgb3BlblN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0g
ICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAg
dWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9y
KSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRT
dGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdp
dGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgfQotCi0gICAgICAgIHV0ZXh0X2Nsb3NlKHRleHQpOwotICAgIH0KLQotICAg
IHJldHVybiAmaXRlcmF0b3I7Ci19Ci0KLQotLy8gU3RhdGljIGl0ZXJhdG9ycwotCi1UZXh0QnJl
YWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAg
c3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciA9IGluaXRp
YWxpemVJdGVyYXRvcihVQlJLX1dPUkQpOwotICAgIGlmICghc3RhdGljV29yZEJyZWFrSXRlcmF0
b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHNldFRleHRGb3JJdGVy
YXRvcigqc3RhdGljV29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Ci19Ci0KLVRleHRCcmVha0l0
ZXJhdG9yKiBzZW50ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAg
c3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IgPSBp
bml0aWFsaXplSXRlcmF0b3IoVUJSS19TRU5URU5DRSk7Ci0gICAgaWYgKCFzdGF0aWNTZW50ZW5j
ZUJyZWFrSXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHNl
dFRleHRGb3JJdGVyYXRvcigqc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yLCBzdHJpbmcpOwot
fQotCi1UZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKLXsKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMg
YmFzZWQgb24gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1bGVzIG9mIElDVSA0LjAKLSAgICAv
LyA8aHR0cDovL3NvdXJjZS5pY3UtcHJvamVjdC5vcmcvcmVwb3MvaWN1L2ljdS90YWdzL3JlbGVh
c2UtNC0wL3NvdXJjZS9kYXRhL2Jya2l0ci9jaGFyLnR4dD4uCi0gICAgLy8gVGhlIG1ham9yIGRp
ZmZlcmVuY2VzIGZyb20gdGhlIG9yaWdpbmFsIG9uZXMgYXJlIGxpc3RlZCBiZWxvdzoKLSAgICAv
LyAqIFJlcGxhY2VkICdbXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFNwYWNpbmdNYXJrfV0n
IHdpdGggJ1tccHtHZW5lcmFsX0NhdGVnb3J5ID0gU3BhY2luZyBNYXJrfSAtICRFeHRlbmRdJyBm
b3IgSUNVIDMuOCBvciBlYXJsaWVyOwotICAgIC8vICogUmVtb3ZlZCBydWxlcyB0aGF0IHByZXZl
bnQgYSBjdXJzb3IgZnJvbSBtb3ZpbmcgYWZ0ZXIgcHJlcGVuZCBjaGFyYWN0ZXJzIChCdWcgMjQz
NDIpOwotICAgIC8vICogQWRkZWQgcnVsZXMgdGhhdCBwcmV2ZW50IGEgY3Vyc29yIGZyb20gbW92
aW5nIGFmdGVyIHZpcmFtYSBzaWducyBvZiBJbmRpYyBsYW5ndWFnZXMgZXhjZXB0IFRhbWlsIChC
dWcgMTU3OTApLCBhbmQ7Ci0gICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJz
b3IgZnJvbSBtb3ZpbmcgYmVmb3JlIEphcGFuZXNlIGhhbGYtd2lkdGgga2F0YWthcmEgdm9pY2Vk
IG1hcmtzLgotICAgIC8vICogQWRkZWQgcnVsZXMgZm9yIHJlZ2lvbmFsIGluZGljYXRvciBzeW1i
b2xzLgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrUnVsZXMgPQotICAgICAgICAiJENSICAgICAg
PSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBDUn1dOyIKLSAgICAgICAgIiRMRiAgICAg
ID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTEZ9XTsiCi0gICAgICAgICIkQ29udHJv
bCA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENvbnRyb2x9XTsiCi0gICAgICAgICIk
Vm9pY2VNYXJrcyA9IFtcXHVGRjlFXFx1RkY5Rl07IiAgLy8gSmFwYW5lc2UgaGFsZi13aWR0aCBr
YXRha2FuYSB2b2ljZWQgbWFya3MKLSAgICAgICAgIiRFeHRlbmQgID0gW1xccHtHcmFwaGVtZV9D
bHVzdGVyX0JyZWFrID0gRXh0ZW5kfSAkVm9pY2VNYXJrcyAtIFtcXHUwRTMwIFxcdTBFMzIgXFx1
MEU0NSBcXHUwRUIwIFxcdTBFQjJdXTsiCi0gICAgICAgICIkU3BhY2luZ01hcmsgPSBbW1xccHtH
ZW5lcmFsX0NhdGVnb3J5ID0gU3BhY2luZyBNYXJrfV0gLSAkRXh0ZW5kXTsiCi0gICAgICAgICIk
TCAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IEx9XTsiCi0gICAgICAgICIk
ViAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFZ9XTsiCi0gICAgICAgICIk
VCAgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFR9XTsiCi0gICAgICAgICIk
TFYgICAgICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWfV07IgotICAgICAgICAi
JExWVCAgICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVlR9XTsiCi0gICAgICAg
ICIkSGluMCAgICA9IFtcXHUwOTA1LVxcdTA5MzldOyIgICAgLy8gRGV2YW5hZ2FyaSBMZXR0ZXIg
QSwuLi4sSGEKLSAgICAgICAgIiRIaW5WICAgID0gXFx1MDk0RDsiICAgICAgICAgICAgICAvLyBE
ZXZhbmFnYXJpIFNpZ24gVmlyYW1hCi0gICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5
MzldOyIgICAgLy8gRGV2YW5hZ2FyaSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkQmVuMCAg
ICA9IFtcXHUwOTg1LVxcdTA5QjldOyIgICAgLy8gQmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKLSAg
ICAgICAgIiRCZW5WICAgID0gXFx1MDlDRDsiICAgICAgICAgICAgICAvLyBCZW5nYWxpIFNpZ24g
VmlyYW1hCi0gICAgICAgICIkQmVuMSAgICA9IFtcXHUwOTk1LVxcdTA5QjldOyIgICAgLy8gQmVu
Z2FsaSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkUGFuMCAgICA9IFtcXHUwQTA1LVxcdTBB
MzldOyIgICAgLy8gR3VybXVraGkgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkUGFuViAgICA9
IFxcdTBBNEQ7IiAgICAgICAgICAgICAgLy8gR3VybXVraGkgU2lnbiBWaXJhbWEKLSAgICAgICAg
IiRQYW4xICAgID0gW1xcdTBBMTUtXFx1MEEzOV07IiAgICAvLyBHdXJtdWtoaSBMZXR0ZXIgS2Es
Li4uLEhhCi0gICAgICAgICIkR3VqMCAgICA9IFtcXHUwQTg1LVxcdTBBQjldOyIgICAgLy8gR3Vq
YXJhdGkgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkR3VqViAgICA9IFxcdTBBQ0Q7IiAgICAg
ICAgICAgICAgLy8gR3VqYXJhdGkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRHdWoxICAgID0gW1xc
dTBBOTUtXFx1MEFCOV07IiAgICAvLyBHdWphcmF0aSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAg
ICIkT3JpMCAgICA9IFtcXHUwQjA1LVxcdTBCMzldOyIgICAgLy8gT3JpeWEgTGV0dGVyIEEsLi4u
LEhhCi0gICAgICAgICIkT3JpViAgICA9IFxcdTBCNEQ7IiAgICAgICAgICAgICAgLy8gT3JpeWEg
U2lnbiBWaXJhbWEKLSAgICAgICAgIiRPcmkxICAgID0gW1xcdTBCMTUtXFx1MEIzOV07IiAgICAv
LyBPcml5YSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkVGVsMCAgICA9IFtcXHUwQzA1LVxc
dTBDMzldOyIgICAgLy8gVGVsdWd1IExldHRlciBBLC4uLixIYQotICAgICAgICAiJFRlbFYgICAg
PSBcXHUwQzREOyIgICAgICAgICAgICAgIC8vIFRlbHVndSBTaWduIFZpcmFtYQotICAgICAgICAi
JFRlbDEgICAgPSBbXFx1MEMxNC1cXHUwQzM5XTsiICAgIC8vIFRlbHVndSBMZXR0ZXIgS2EsLi4u
LEhhCi0gICAgICAgICIkS2FuMCAgICA9IFtcXHUwQzg1LVxcdTBDQjldOyIgICAgLy8gS2FubmFk
YSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRLYW5WICAgID0gXFx1MENDRDsiICAgICAgICAg
ICAgICAvLyBLYW5uYWRhIFNpZ24gVmlyYW1hCi0gICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1
LVxcdTBDQjldOyIgICAgLy8gS2FubmFkYSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRNYWww
ICAgID0gW1xcdTBEMDUtXFx1MEQzOV07IiAgICAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhh
Ci0gICAgICAgICIkTWFsViAgICA9IFxcdTBENEQ7IiAgICAgICAgICAgICAgLy8gTWFsYXlhbGFt
IFNpZ24gVmlyYW1hCi0gICAgICAgICIkTWFsMSAgICA9IFtcXHUwRDE1LVxcdTBEMzldOyIgICAg
Ly8gTWFsYXlhbGFtIExldHRlciBBLC4uLixIYQotICAgICAgICAiJFJJICAgICAgPSBbXFxVMDAw
MUYxRTYtXFxVMDAwMUYxRkZdOyIgLy8gRW1vamkgcmVnaW9uYWwgaW5kaWNhdG9ycwotICAgICAg
ICAiJFpXSiAgICAgPSBcXHUyMDBEOyIgICAgICAgICAgICAgICAvLyBaZXJvIHdpZHRoIGpvaW5l
cgotICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgICAgICAgICAgICAvLyBFbW9qaS1z
dHlsZSB2YXJpYXRpb24gc2VsZWN0b3IKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAg
ICAgICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ0MSBcXFUwMDAxRjQ2Ni1c
XFUwMDAxRjQ2OSBcXFUwMDAxRjQ4QiBcXFUwMDAxRjVFOF07IiAvLyBFbW9qaSB0aGF0IHBhcnRp
Y2lwYXRlIGluIFpXSiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYx
RCBcXHUyNkY5IFxcdTI3MEEtXFx1MjcwRCBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAx
RjNDNCBcXFUwMDAxRjNDQSBcXFUwMDAxRjNDQiBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUw
MDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1c
XFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4
NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU3NSBcXFUwMDAxRjU5MCBcXFUwMDAx
RjU5NSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUw
MDAxRjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMCBc
XFUwMDAxRjkxOF0gOyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycwot
I2Vsc2UKLSAgICAgICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ2Ni1cXFUw
MDAxRjQ2OSBcXFUwMDAxRjQ4Ql07IiAvLyBFbW9qaSB0aGF0IHBhcnRpY2lwYXRlIGluIFpXSiBz
ZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNzBBLVxcdTI3
MEMgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQzcgXFxVMDAw
MUYzQ0EgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxV
MDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0Mg
XFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0
QUEgXFxVMDAwMUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAw
MUY2NEYgXFxVMDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzBdIDsi
IC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKLSNlbmRpZgotICAgICAg
ICAiJEVtb2ppTW9kcyA9IFtcXFUwMDAxRjNGQi1cXFUwMDAxRjNGRl07IiAvLyBGaXR6cGF0cmlj
ayBtb2RpZmllcnMKLSAgICAgICAgIiEhY2hhaW47IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQ
UE9SVAotICAgICAgICAiISFSSU5vQ2hhaW47IgotI2VuZGlmCi0gICAgICAgICIhIWZvcndhcmQ7
IgotICAgICAgICAiJENSICRMRjsiCi0gICAgICAgICIkTCAoJEwgfCAkViB8ICRMViB8ICRMVlQp
OyIKLSAgICAgICAgIigkTFYgfCAkVikgKCRWIHwgJFQpOyIKLSAgICAgICAgIigkTFZUIHwgJFQp
ICRUOyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAgICAgIiRSSSAkUkkgJEV4
dGVuZCogLyAkUkk7IgotICAgICAgICAiJFJJICRSSSAkRXh0ZW5kKjsiCi0gICAgICAgICJbXiRD
b250cm9sICRDUiAkTEZdICRFeHRlbmQ7IgotICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAk
U3BhY2luZ01hcms7IgotI2Vsc2UKLSAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJEV4dGVu
ZDsiCi0gICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRTcGFjaW5nTWFyazsiCi0gICAgICAg
ICIkUkkgJFJJIC8gJFJJOyIKLSAgICAgICAgIiRSSSAkUkk7IgotI2VuZGlmCi0gICAgICAgICIk
SGluMCAkSGluViAkSGluMTsiICAgICAgICAgICAgICAgLy8gRGV2YW5hZ2FyaSBWaXJhbWEgKGZv
cndhcmQpCi0gICAgICAgICIkQmVuMCAkQmVuViAkQmVuMTsiICAgICAgICAgICAgICAgLy8gQmVu
Z2FsaSBWaXJhbWEgKGZvcndhcmQpCi0gICAgICAgICIkUGFuMCAkUGFuViAkUGFuMTsiICAgICAg
ICAgICAgICAgLy8gR3VybXVraGkgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJEd1ajAgJEd1
alYgJEd1ajE7IiAgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZpcmFtYSAoZm9yd2FyZCkKLSAg
ICAgICAgIiRPcmkwICRPcmlWICRPcmkxOyIgICAgICAgICAgICAgICAvLyBPcml5YSBWaXJhbWEg
KGZvcndhcmQpCi0gICAgICAgICIkVGVsMCAkVGVsViAkVGVsMTsiICAgICAgICAgICAgICAgLy8g
VGVsdWd1IFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRLYW4wICRLYW5WICRLYW4xOyIgICAg
ICAgICAgICAgICAvLyBLYW5uYWRhIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRNYWwwICRN
YWxWICRNYWwxOyIgICAgICAgICAgICAgICAvLyBNYWxheWFsYW0gVmlyYW1hIChmb3J3YXJkKQot
ICAgICAgICAiJFpXSiAkRW1vamlGb3JTZXFzOyIgICAgICAgICAgICAgIC8vIERvbid0IGJyZWFr
IGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFy
PyAkRW1vamlNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2VlbiByZWxldmFudCBlbW9qaSAocG9z
c2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBGaXR6cGF0cmljayBtb2RpZmllcgot
ICAgICAgICAiISFyZXZlcnNlOyIKLSAgICAgICAgIiRMRiAkQ1I7IgotICAgICAgICAiKCRMIHwg
JFYgfCAkTFYgfCAkTFZUKSAkTDsiCi0gICAgICAgICIoJFYgfCAkVCkgKCRMViB8ICRWKTsiCi0g
ICAgICAgICIkVCAoJExWVCB8ICRUKTsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0g
ICAgICAgICIkRXh0ZW5kKiAkUkkgJFJJIC8gJEV4dGVuZCogJFJJICRSSTsiCi0gICAgICAgICIk
RXh0ZW5kKiAkUkkgJFJJOyIKLSAgICAgICAgIiRFeHRlbmQgICAgICBbXiRDb250cm9sICRDUiAk
TEZdOyIKLSAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9sICRDUiAkTEZdOyIKLSNlbHNl
Ci0gICAgICAgICIkRXh0ZW5kICAgICAgW14kQ29udHJvbCAkQ1IgJExGXTsiCi0gICAgICAgICIk
U3BhY2luZ01hcmsgW14kQ29udHJvbCAkQ1IgJExGXTsiCi0gICAgICAgICIkUkkgJFJJIC8gJFJJ
ICRSSTsiCi0gICAgICAgICIkUkkgJFJJOyIKLSNlbmRpZgotICAgICAgICAiJEhpbjEgJEhpblYg
JEhpbjA7IiAgICAgICAgICAgICAgIC8vIERldmFuYWdhcmkgVmlyYW1hIChiYWNrd2FyZCkKLSAg
ICAgICAgIiRCZW4xICRCZW5WICRCZW4wOyIgICAgICAgICAgICAgICAvLyBCZW5nYWxpIFZpcmFt
YSAoYmFja3dhcmQpCi0gICAgICAgICIkUGFuMSAkUGFuViAkUGFuMDsiICAgICAgICAgICAgICAg
Ly8gR3VybXVraGkgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRHdWoxICRHdWpWICRHdWow
OyIgICAgICAgICAgICAgICAvLyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAi
JE9yaTEgJE9yaVYgJE9yaTA7IiAgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZpcmFtYSAoYmFj
a3dhcmQpCi0gICAgICAgICIkVGVsMSAkVGVsViAkVGVsMDsiICAgICAgICAgICAgICAgLy8gVGVs
dWd1IFZpcmFtYSAoYmFja3dhcmQpCi0gICAgICAgICIkS2FuMSAkS2FuViAkS2FuMDsiICAgICAg
ICAgICAgICAgLy8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJE1hbDEgJE1h
bFYgJE1hbDA7IiAgICAgICAgICAgICAgIC8vIE1hbGF5YWxhbSBWaXJhbWEgKGJhY2t3YXJkKQot
ICAgICAgICAiJEVtb2ppRm9yU2VxcyAkWldKOyIgICAgICAgICAgICAgIC8vIERvbid0IGJyZWFr
IGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaU1vZHMgJEVtb2ppVmFyPyAk
RW1vamlGb3JNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2VlbiByZWxldmFudCBlbW9qaSAocG9z
c2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBGaXR6cGF0cmljayBtb2RpZmllcgot
I2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICAgICAiISFzYWZlX3JldmVyc2U7Igot
ICAgICAgICAiJFJJICRSSSs7IgotICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlNb2RzXSsgJEVt
b2ppRm9yTW9kczsiCi0gICAgICAgICIhIXNhZmVfZm9yd2FyZDsiCi0gICAgICAgICIkUkkgJFJJ
KzsiCi0gICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIgJEVtb2ppTW9kc10rOyI7Ci0j
ZWxzZQotICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCi0g
ICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIgJEVtb2ppTW9kc10rOyIKLSAgICAgICAg
IiEhc2FmZV9yZXZlcnNlOyIKLSAgICAgICAgIiEhc2FmZV9mb3J3YXJkOyI7Ci0jZW5kaWYKLSAg
ICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3Ig
PSBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoa1J1bGVzKTsKLSNlbHNlIC8vIFBMQVRGT1JN
KElPUykKLSAgICAvLyBVc2UgdGhlIHNwZWNpYWwgVGhhaSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0
b3IgZm9yIGFsbCBsb2NhbGVzCi0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWND
dXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVS
LCAidGgiKTsKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCi0gICAgaWYgKCFzdGF0aWNDdXJz
b3JNb3ZlbWVudEl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVy
biBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IsIHN0cmlu
Zyk7Ci19Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3Ry
aW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hhciog
cHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgsIExpbmVCcmVha0l0ZXJh
dG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQotewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRha2UobG9jYWxlLCBt
b2RlLCBpc0NKSyk7Ci0gICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKCppdGVyYXRvciwg
c3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci19Ci0KLXZvaWQgcmVs
ZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAg
ICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7Ci0KLSAgICBMaW5lQnJlYWtJdGVyYXRv
clBvb2w6OnNoYXJlZFBvb2woKS5wdXQoaXRlcmF0b3IpOwotfQotCi1zdGF0aWMgY29uc3QgY2hh
ciogdWF4MTRQcm9sb2d1ZSA9Ci0gICAgIiEhY2hhaW47IgotICAgICIhIUxCQ01Ob0NoYWluOyIK
LSAgICAiISFsb29rQWhlYWRIYXJkQnJlYWs7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0
QXNzaWdubWVudHNCZWZvcmUgPQotICAgIC8vIGV4cGxpY2l0bHkgZW51bWVyYXRlICRDSiBzaW5j
ZSBJQ1UgdmVyc2lvbnMgcHJpb3IgdG8gNDkgZG9uJ3Qgc3VwcG9ydCA6TGluZUJyZWFrPUNvbmRp
dGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6Ci0gICAgIiRDSiA9IFsiCi0jaWYgKFVfSUNVX1ZFUlNJ
T05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJTSU9OX01JTk9SX05VTSA+PSA5KQotICAg
ICI6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6IgotI2Vsc2UKLSAgICAi
XFx1MzA0MVxcdTMwNDNcXHUzMDQ1XFx1MzA0N1xcdTMwNDlcXHUzMDYzXFx1MzA4M1xcdTMwODVc
XHUzMDg3XFx1MzA4RVxcdTMwOTVcXHUzMDk2XFx1MzBBMVxcdTMwQTNcXHUzMEE1XFx1MzBBNyIK
LSAgICAiXFx1MzBBOVxcdTMwQzNcXHUzMEUzXFx1MzBFNVxcdTMwRTdcXHUzMEVFXFx1MzBGNVxc
dTMwRjZcXHUzMEZDIgotICAgICJcXHUzMUYwXFx1MzFGMVxcdTMxRjJcXHUzMUYzXFx1MzFGNFxc
dTMxRjVcXHUzMUY2XFx1MzFGN1xcdTMxRjhcXHUzMUY5XFx1MzFGQVxcdTMxRkJcXHUzMUZDXFx1
MzFGRFxcdTMxRkVcXHUzMUZGIgotICAgICJcXHVGRjY3XFx1RkY2OFxcdUZGNjlcXHVGRjZBXFx1
RkY2QlxcdUZGNkNcXHVGRjZEXFx1RkY2RVxcdUZGNkZcXHVGRjcwIgotI2VuZGlmCi0gICAgIl07
IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Mb29zZUNKSyA9
Ci0gICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNdOyIKLSAgICAiJEVYX1NVQiA9IFtcXHUw
MDIxXFx1MDAzRlxcdUZGMDFcXHVGRjFGXTsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJ
Tl9TVUIgPSBbXFx1MjAyNVxcdTIwMjZdOyIKLSAgICAiJElTX1NVQiA9IFtcXHUwMDNBXFx1MDAz
Ql07IgotICAgICIkTlNfU1VCID0gW1xcdTIwM0NcXHUyMDQ3XFx1MjA0OFxcdTIwNDlcXHUzMDA1
XFx1MzAxQ1xcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMwQTBcXHUzMEZCXFx1MzBGRFxcdTMwRkVc
XHVGRjFBXFx1RkYxQlxcdUZGNjVdOyIKLSAgICAiJFBPX1NVQiA9IFtcXHUwMDI1XFx1MDBBMlxc
dTAwQjBcXHUyMDMwXFx1MjAzMlxcdTIwMzNcXHUyMTAzXFx1RkYwNVxcdUZGRTBdOyIKLSAgICAi
JFBSX1NVQiA9IFtcXHUwMDI0XFx1MDBBM1xcdTAwQTVcXHUyMEFDXFx1MjExNlxcdUZGMDRcXHVG
RkUxXFx1RkZFNV07IgotICAgICIkSURfQUREID0gWyRDSiAkQkFfU1VCICRFWF9TVUIgJElOX1NV
QiAkSVNfU1VCICROU19TVUIgJFBPX1NVQiAkUFJfU1VCXTsiCi0gICAgIiROU19BREQgPSAnJzsi
OwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pL
ID0KLSAgICAiJEJBX1NVQiA9ICcnOyIKLSAgICAiJEVYX1NVQiA9ICcnOyIKLSAgICAiJElEX1NV
QiA9ICcnOyIKLSAgICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1MjAyNl07IgotICAgICIkSVNfU1VC
ID0gJyc7IgotICAgICIkTlNfU1VCID0gW1xcdTMwMDVcXHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUz
MEZEXFx1MzBGRV07IgotICAgICIkUE9fU1VCID0gJyc7IgotICAgICIkUFJfU1VCID0gJyc7Igot
ICAgICIkSURfQUREID0gWyRDSiAkSU5fU1VCICROU19TVUJdOyIKLSAgICAiJE5TX0FERCA9ICcn
OyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pL
ID0KLSAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAxM107IgotICAgICIkRVhfU1VCID0gJyc7
IgotICAgICIkSU5fU1VCID0gJyc7IgotICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSVNfU1VC
ID0gJyc7IgotICAgICIkTlNfU1VCID0gW1xcdTMwMUNcXHUzMEEwXTsiCi0gICAgIiRQT19TVUIg
PSAnJzsiCi0gICAgIiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSBbJENKICRCQV9TVUIg
JE5TX1NVQl07IgotICAgICIkTlNfQUREID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVh
eDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksgPQotICAgICIkQkFfU1VCID0gJyc7Igot
ICAgICIkRVhfU1VCID0gJyc7IgotICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSU5fU1VCID0g
Jyc7IgotICAgICIkSVNfU1VCID0gJyc7IgotICAgICIkTlNfU1VCID0gJyc7IgotICAgICIkUE9f
U1VCID0gJyc7IgotICAgICIkUFJfU1VCID0gJyc7IgotICAgICIkSURfQUREID0gWyRDSl07Igot
ICAgICIkTlNfQUREID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVu
dHNDdXN0b21TdHJpY3RDSksgPQotICAgICIkQkFfU1VCID0gJyc7IgotICAgICIkRVhfU1VCID0g
Jyc7IgotICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSU5fU1VCID0gJyc7IgotICAgICIkSVNf
U1VCID0gJyc7IgotICAgICIkTlNfU1VCID0gJyc7IgotICAgICIkUE9fU1VCID0gJyc7IgotICAg
ICIkUFJfU1VCID0gJyc7IgotICAgICIkSURfQUREID0gJyc7IgotICAgICIkTlNfQUREID0gWyRD
Sl07IjsKLQotI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLICAgICAg
dWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSwotI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tRGVmYXVsdENKSyAgICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbENKSwot
I2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdE5vbkNKSyAgICAgdWF4MTRBc3Np
Z25tZW50c0N1c3RvbVN0cmljdE5vbkNKSwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3Np
Z25tZW50c0FmdGVyID0KLSAgICAiJEFJID0gWzpMaW5lQnJlYWsgPSBBbWJpZ3VvdXM6XTsiCi0g
ICAgIiRBTCA9IFs6TGluZUJyZWFrID0gQWxwaGFiZXRpYzpdOyIKLSAgICAiJEJBID0gW1s6TGlu
ZUJyZWFrID0gQnJlYWtfQWZ0ZXI6XSAtICRCQV9TVUJdOyIKLSAgICAiJEJCID0gWzpMaW5lQnJl
YWsgPSBCcmVha19CZWZvcmU6XTsiCi0gICAgIiRCSyA9IFs6TGluZUJyZWFrID0gTWFuZGF0b3J5
X0JyZWFrOl07IgotICAgICIkQjIgPSBbOkxpbmVCcmVhayA9IEJyZWFrX0JvdGg6XTsiCi0gICAg
IiRDQiA9IFs6TGluZUJyZWFrID0gQ29udGluZ2VudF9CcmVhazpdOyIKLSAgICAiJENMID0gWzpM
aW5lQnJlYWsgPSBDbG9zZV9QdW5jdHVhdGlvbjpdOyIKLSAgICAiJENNID0gWzpMaW5lQnJlYWsg
PSBDb21iaW5pbmdfTWFyazpdOyIKLSAgICAiJENQID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QYXJl
bnRoZXNpczpdOyIKLSAgICAiJENSID0gWzpMaW5lQnJlYWsgPSBDYXJyaWFnZV9SZXR1cm46XTsi
Ci0gICAgIiRFWCA9IFtbOkxpbmVCcmVhayA9IEV4Y2xhbWF0aW9uOl0gLSAkRVhfU1VCXTsiCi0g
ICAgIiRHTCA9IFs6TGluZUJyZWFrID0gR2x1ZTpdOyIKLSNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpP
Ul9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVNID49IDkpCi0gICAgIiRITCA9
IFs6TGluZUJyZWFrID0gSGVicmV3X0xldHRlcjpdOyIKLSNlbHNlCi0gICAgIiRITCA9IFtbOkhl
YnJldzpdICYgWzpMZXR0ZXI6XV07IgotI2VuZGlmCi0gICAgIiRIWSA9IFs6TGluZUJyZWFrID0g
SHlwaGVuOl07IgotICAgICIkSDIgPSBbOkxpbmVCcmVhayA9IEgyOl07IgotICAgICIkSDMgPSBb
OkxpbmVCcmVhayA9IEgzOl07IgotICAgICIkSUQgPSBbW1tbOkxpbmVCcmVhayA9IElkZW9ncmFw
aGljOl0gLSAkQ0pdICRJRF9BRERdIC0gJElEX1NVQl07IgotICAgICIkSU4gPSBbWzpMaW5lQnJl
YWsgPSBJbnNlcGFyYWJsZTpdIC0gJElOX1NVQl07IgotICAgICIkSVMgPSBbWzpMaW5lQnJlYWsg
PSBJbmZpeF9OdW1lcmljOl0gLSAkSVNfU1VCXTsiCi0gICAgIiRKTCA9IFs6TGluZUJyZWFrID0g
Skw6XTsiCi0gICAgIiRKViA9IFs6TGluZUJyZWFrID0gSlY6XTsiCi0gICAgIiRKVCA9IFs6TGlu
ZUJyZWFrID0gSlQ6XTsiCi0gICAgIiRMRiA9IFs6TGluZUJyZWFrID0gTGluZV9GZWVkOl07Igot
ICAgICIkTkwgPSBbOkxpbmVCcmVhayA9IE5leHRfTGluZTpdOyIKLSAgICAiJE5TID0gW1tbWzpM
aW5lQnJlYWsgPSBOb25zdGFydGVyOl0gLSAkQ0pdICROU19BRERdIC0gJE5TX1NVQl07IgotICAg
ICIkTlUgPSBbOkxpbmVCcmVhayA9IE51bWVyaWM6XTsiCi0gICAgIiRPUCA9IFs6TGluZUJyZWFr
ID0gT3Blbl9QdW5jdHVhdGlvbjpdOyIKLSAgICAiJFBPID0gW1s6TGluZUJyZWFrID0gUG9zdGZp
eF9OdW1lcmljOl0gLSAkUE9fU1VCXTsiCi0gICAgIiRQUiA9IFtbOkxpbmVCcmVhayA9IFByZWZp
eF9OdW1lcmljOl0gLSAkUFJfU1VCXTsiCi0gICAgIiRRVSA9IFs6TGluZUJyZWFrID0gUXVvdGF0
aW9uOl07IgotICAgICIkUkkgPSBbXFxVMDAwMUYxRTYtXFxVMDAwMUYxRkZdOyIKLSAgICAiJFNB
ID0gWzpMaW5lQnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6XTsiCi0gICAgIiRTRyA9IFs6TGluZUJy
ZWFrID0gU3Vycm9nYXRlOl07IgotICAgICIkU1AgPSBbOkxpbmVCcmVhayA9IFNwYWNlOl07Igot
ICAgICIkU1kgPSBbOkxpbmVCcmVhayA9IEJyZWFrX1N5bWJvbHM6XTsiCi0gICAgIiRXSiA9IFs6
TGluZUJyZWFrID0gV29yZF9Kb2luZXI6XTsiCi0gICAgIiRYWCA9IFs6TGluZUJyZWFrID0gVW5r
bm93bjpdOyIKLSAgICAiJFpXID0gWzpMaW5lQnJlYWsgPSBaV1NwYWNlOl07IgotICAgICIkWldK
ID0gXFx1MjAwRDsiCi0gICAgIiRFbW9qaVZhciA9IFxcdUZFMEY7IgotI2lmIEFERElUSU9OQUxf
RU1PSklfU1VQUE9SVAotICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEg
XFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIKLSAgICAi
JEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI2RjkgXFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFG
Mzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAw
MDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxc
VTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgx
LVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFG
NTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAw
MDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxc
VTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4XSA7IiAvLyBFbW9qaSB0aGF0IHRha2Ug
Rml0enBhdHJpY2sgbW9kaWZpZXJzCi0jZWxzZQotICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3
NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEJdOyIKLSAgICAiJEVtb2ppRm9y
TW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1MjcwQyBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1c
XFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAxRjNDQSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0
MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAx
RjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUw
MDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1c
XFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZC
NC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRy
aWNrIG1vZGlmaWVycwotI2VuZGlmCi0gICAgIiRFbW9qaU1vZHMgPSBbXFxVMDAwMUYzRkItXFxV
MDAwMUYzRkZdOyIKLSAgICAiJGRpY3Rpb25hcnkgPSBbOkxpbmVCcmVhayA9IENvbXBsZXhfQ29u
dGV4dDpdOyIKLSAgICAiJEFMUGx1cyA9IFskQUwgJEFJICRTQSAkU0cgJFhYXTsiCi0gICAgIiRB
TGNtID0gJEFMUGx1cyAkQ00qOyIKLSAgICAiJEJBY20gPSAkQkEgJENNKjsiCi0gICAgIiRCQmNt
ID0gJEJCICRDTSo7IgotICAgICIkQjJjbSA9ICRCMiAkQ00qOyIKLSAgICAiJENMY20gPSAkQ0wg
JENNKjsiCi0gICAgIiRDUGNtID0gJENQICRDTSo7IgotICAgICIkRVhjbSA9ICRFWCAkQ00qOyIK
LSAgICAiJEdMY20gPSAkR0wgJENNKjsiCi0gICAgIiRITGNtID0gJEhMICRDTSo7IgotICAgICIk
SFljbSA9ICRIWSAkQ00qOyIKLSAgICAiJEgyY20gPSAkSDIgJENNKjsiCi0gICAgIiRIM2NtID0g
JEgzICRDTSo7IgotICAgICIkSURjbSA9ICRJRCAkQ00qOyIKLSAgICAiJElOY20gPSAkSU4gJENN
KjsiCi0gICAgIiRJU2NtID0gJElTICRDTSo7IgotICAgICIkSkxjbSA9ICRKTCAkQ00qOyIKLSAg
ICAiJEpWY20gPSAkSlYgJENNKjsiCi0gICAgIiRKVGNtID0gJEpUICRDTSo7IgotICAgICIkTlNj
bSA9ICROUyAkQ00qOyIKLSAgICAiJE5VY20gPSAkTlUgJENNKjsiCi0gICAgIiRPUGNtID0gJE9Q
ICRDTSo7IgotICAgICIkUE9jbSA9ICRQTyAkQ00qOyIKLSAgICAiJFBSY20gPSAkUFIgJENNKjsi
Ci0gICAgIiRRVWNtID0gJFFVICRDTSo7IgotICAgICIkUkljbSA9ICRRVSAkQ00qOyIKLSAgICAi
JFNZY20gPSAkU1kgJENNKjsiCi0gICAgIiRXSmNtID0gJFdKICRDTSo7IjsKLQotc3RhdGljIGNv
bnN0IGNoYXIqIHVheDE0Rm9yd2FyZCA9Ci0gICAgIiEhZm9yd2FyZDsiCi0gICAgIiRDQU5fQ00g
PSBbXiRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07IgotICAgICIkQ0FOVF9DTSA9IFskU1Ag
JEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKLSAgICAiJEFMX0ZPTExPV19OT0NNID0gWyRCSyAk
Q1IgJExGICROTCAkWlcgJFNQXTsiCi0gICAgIiRBTF9GT0xMT1dfQ00gPSBbJENMICRDUCAkRVgg
JEhMICRJUyAkU1kgJFdKICRHTCAkT1AgJFFVICRCQSAkSFkgJE5TICRJTiAkTlUgJEFMUGx1c107
IgotICAgICIkQUxfRk9MTE9XID0gWyRBTF9GT0xMT1dfTk9DTSAkQUxfRk9MTE9XX0NNXTsiCi0g
ICAgIiRMQjRCcmVha3MgPSBbJEJLICRDUiAkTEYgJE5MXTsiCi0gICAgIiRMQjROb25CcmVha3Mg
PSBbXiRCSyAkQ1IgJExGICROTF07IgotICAgICIkTEI4QnJlYWtzID0gWyRMQjRCcmVha3MgJFpX
XTsiCi0gICAgIiRMQjhOb25CcmVha3MgPSBbWyRMQjROb25CcmVha3NdIC0gWyRaV11dOyIKLSAg
ICAiJExCMThOb25CcmVha3MgPSBbJExCOE5vbkJyZWFrcyAtIFskU1BdXTsiCi0gICAgIiRMQjE4
QnJlYWtzID0gWyRMQjhCcmVha3MgJFNQXTsiCi0gICAgIiRMQjIwTm9uQnJlYWtzID0gWyRMQjE4
Tm9uQnJlYWtzIC0gJENCXTsiCi0gICAgIiRBTFBsdXMgJENNKzsiCi0gICAgIiRCQSAkQ00rOyIK
LSAgICAiJEJCICRDTSs7IgotICAgICIkQjIgJENNKzsiCi0gICAgIiRDTCAkQ00rOyIKLSAgICAi
JENQICRDTSs7IgotICAgICIkRVggJENNKzsiCi0gICAgIiRHTCAkQ00rOyIKLSAgICAiJEhMICRD
TSs7IgotICAgICIkSFkgJENNKzsiCi0gICAgIiRIMiAkQ00rOyIKLSAgICAiJEgzICRDTSs7Igot
ICAgICIkSUQgJENNKzsiCi0gICAgIiRJTiAkQ00rOyIKLSAgICAiJElTICRDTSs7IgotICAgICIk
SkwgJENNKzsiCi0gICAgIiRKViAkQ00rOyIKLSAgICAiJEpUICRDTSs7IgotICAgICIkTlMgJENN
KzsiCi0gICAgIiROVSAkQ00rOyIKLSAgICAiJE9QICRDTSs7IgotICAgICIkUE8gJENNKzsiCi0g
ICAgIiRQUiAkQ00rOyIKLSAgICAiJFFVICRDTSs7IgotICAgICIkU1kgJENNKzsiCi0gICAgIiRX
SiAkQ00rOyIKLSAgICAiJENSICRMRiB7MTAwfTsiCi0gICAgIiRMQjROb25CcmVha3M/ICRMQjRC
cmVha3MgezEwMH07IgotICAgICIkQ0FOX0NNICRDTSogJExCNEJyZWFrcyB7MTAwfTsiCi0gICAg
IiRDTSsgJExCNEJyZWFrcyB7MTAwfTsiCi0gICAgIiRMQjROb25CcmVha3MgWyRTUCAkWlddOyIK
LSAgICAiJENBTl9DTSAkQ00qIFskU1AgJFpXXTsiCi0gICAgIiRDTSsgWyRTUCAkWlddOyIKLSAg
ICAiJEVtb2ppRm9yU2VxcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM/ICRaV0ogJEVtb2ppRm9yU2Vx
czsiCi0gICAgIiRDQU5fQ00gJENNKzsiCi0gICAgIiRDTSs7IgotICAgICIkQ0FOX0NNICRDTSog
JFdKY207IgotICAgICIkTEI4Tm9uQnJlYWtzICRXSmNtOyIKLSAgICAiJENNKyAkV0pjbTsiCi0g
ICAgIiRXSmNtICRDQU5UX0NNOyIKLSAgICAiJFdKY20gJENBTl9DTSAkQ00qOyIKLSAgICAiJEdM
Y20gJENBTl9DTSAkQ00qOyIKLSAgICAiJEdMY20gJENBTlRfQ007IgotICAgICJbWyRMQjhOb25C
cmVha3NdIC0gWyRTUCAkQkEgJEhZXV0gJENNKiAkR0xjbTsiCi0gICAgIiRDTSsgR0xjbTsiCi0g
ICAgIiRMQjhOb25CcmVha3MgJENMOyIKLSAgICAiJENBTl9DTSAkQ00qICRDTDsiCi0gICAgIiRD
TSsgJENMOyIKLSAgICAiJExCOE5vbkJyZWFrcyAkQ1A7IgotICAgICIkQ0FOX0NNICRDTSogJENQ
OyIKLSAgICAiJENNKyAkQ1A7IgotICAgICIkTEI4Tm9uQnJlYWtzICRFWDsiCi0gICAgIiRDQU5f
Q00gJENNKiAkRVg7IgotICAgICIkQ00rICRFWDsiCi0gICAgIiRMQjhOb25CcmVha3MgJElTOyIK
LSAgICAiJENBTl9DTSAkQ00qICRJUzsiCi0gICAgIiRDTSsgJElTOyIKLSAgICAiJExCOE5vbkJy
ZWFrcyAkU1k7IgotICAgICIkQ0FOX0NNICRDTSogJFNZOyIKLSAgICAiJENNKyAkU1k7IgotICAg
ICIkT1BjbSAkU1AqICRDQU5fQ00gJENNKjsiCi0gICAgIiRPUGNtICRTUCogJENBTlRfQ007Igot
ICAgICIkT1BjbSAkU1ArICRDTSsgJEFMX0ZPTExPVz87IgotICAgICIkUVVjbSAkU1AqICRPUGNt
OyIKLSAgICAiKCRDTGNtIHwgJENQY20pICRTUCogJE5TY207IgotICAgICIkQjJjbSAkU1AqICRC
MmNtOyIKLSAgICAiJExCMThOb25CcmVha3MgJENNKiAkUVVjbTsiCi0gICAgIiRDTSsgJFFVY207
IgotICAgICIkUVVjbSAuPzsiCi0gICAgIiRRVWNtICRMQjE4Tm9uQnJlYWtzICRDTSo7IgotICAg
ICIkTEIyME5vbkJyZWFrcyAkQ00qICgkQkFjbSB8ICRIWWNtIHwgJE5TY20pOyAiCi0gICAgIiRC
QmNtIFteJENCXTsiCi0gICAgIiRCQmNtICRMQjIwTm9uQnJlYWtzICRDTSo7IgotICAgICIkSExj
bSAoJEhZY20gfCAkQkFjbSkgW14kQ0JdPzsiCi0gICAgIigkQUxjbSB8ICRITGNtKSAkSU5jbTsi
Ci0gICAgIiRDTSsgJElOY207IgotICAgICIkSURjbSAkSU5jbTsiCi0gICAgIiRJTmNtICRJTmNt
OyIKLSAgICAiJE5VY20gJElOY207IgotICAgICIkSURjbSAkUE9jbTsiCi0gICAgIiRBTGNtICRO
VWNtOyIKLSAgICAiJEhMY20gJE5VY207IgotICAgICIkQ00rICROVWNtOyIKLSAgICAiJE5VY20g
JEFMY207IgotICAgICIkTlVjbSAkSExjbTsiCi0gICAgIiRQUmNtICRJRGNtOyIKLSAgICAiJFBS
Y20gKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiJFBPY20gKCRBTGNtIHwgJEhMY20pOyIKLSAgICAi
KCRQUmNtIHwgJFBPY20pPyAoJE9QY20gfCAkSFljbSk/ICROVWNtICgkTlVjbSB8ICRTWWNtIHwg
JElTY20pKiAoJENMY20gfCAkQ1BjbSk/ICgkUFJjbSB8ICRQT2NtKT87IgotICAgICIkSkxjbSAo
JEpMY20gfCAkSlZjbSB8ICRIMmNtIHwgJEgzY20pOyIKLSAgICAiKCRKVmNtIHwgJEgyY20pICgk
SlZjbSB8ICRKVGNtKTsiCi0gICAgIigkSlRjbSB8ICRIM2NtKSAkSlRjbTsiCi0gICAgIigkSkxj
bSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAkSU5jbTsiCi0gICAgIigkSkxjbSB8
ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAkUE9jbTsiCi0gICAgIiRQUmNtICgkSkxj
bSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKTsiCi0gICAgIigkQUxjbSB8ICRITGNt
KSAoJEFMY20gfCAkSExjbSk7IgotICAgICIkQ00rICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIiRJ
U2NtICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIigkQUxjbSB8ICRITGNtIHwgJE5VY20pICRPUGNt
OyIKLSAgICAiJENNKyAkT1BjbTsiCi0gICAgIiRDUGNtICgkQUxjbSB8ICRITGNtIHwgJE5VY20p
OyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAiJFJJY20gJFJJY207IgotI2Vu
ZGlmCi0gICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFyPyAkRW1vamlNb2RzOyI7Ci0KLXN0YXRp
YyBjb25zdCBjaGFyKiB1YXgxNFJldmVyc2UgPQotICAgICIhIXJldmVyc2U7IgotICAgICIkQ00r
ICRBTFBsdXM7IgotICAgICIkQ00rICRCQTsiCi0gICAgIiRDTSsgJEJCOyIKLSAgICAiJENNKyAk
QjI7IgotICAgICIkQ00rICRDTDsiCi0gICAgIiRDTSsgJENQOyIKLSAgICAiJENNKyAkRVg7Igot
ICAgICIkQ00rICRHTDsiCi0gICAgIiRDTSsgJEhMOyIKLSAgICAiJENNKyAkSFk7IgotICAgICIk
Q00rICRIMjsiCi0gICAgIiRDTSsgJEgzOyIKLSAgICAiJENNKyAkSUQ7IgotICAgICIkQ00rICRJ
TjsiCi0gICAgIiRDTSsgJElTOyIKLSAgICAiJENNKyAkSkw7IgotICAgICIkQ00rICRKVjsiCi0g
ICAgIiRDTSsgJEpUOyIKLSAgICAiJENNKyAkTlM7IgotICAgICIkQ00rICROVTsiCi0gICAgIiRD
TSsgJE9QOyIKLSAgICAiJENNKyAkUE87IgotICAgICIkQ00rICRQUjsiCi0gICAgIiRDTSsgJFFV
OyIKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAiJENNKyAkUkk7IgotI2VuZGlm
Ci0gICAgIiRDTSsgJFNZOyIKLSAgICAiJENNKyAkV0o7IgotICAgICIkQ00rOyIKLSAgICAiJEFM
X0ZPTExPVyAkQ00rIC8gKFskQksgJENSICRMRiAkTkwgJFpXIHtlb2Z9XSB8ICRTUCsgJENNKyAk
U1AgfCAkU1ArICRDTSogKFteJE9QICRDTSAkU1BdIHwgWyRBTCB7ZW9mfV0pKTsiCi0gICAgIlsk
UFJdIC8gJENNKyBbJEJLICRDUiAkTEYgJE5MICRaVyAkU1Age2VvZn1dOyIKLSAgICAiJExCNEJy
ZWFrcyBbJExCNE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiJExCNEJyZWFrcyAkQ00rICRDQU5fQ007
IgotICAgICIkTEYgJENSOyIKLSAgICAiWyRTUCAkWlddIFskTEI0Tm9uQnJlYWtzLSRDTV07Igot
ICAgICJbJFNQICRaV10gJENNKyAkQ0FOX0NNOyIKLSAgICAiJEVtb2ppRm9yU2VxcyAkWldKICRF
bW9qaU1vZHM/ICRFbW9qaVZhcj8gJEVtb2ppRm9yU2VxczsiCi0gICAgIiRDTSsgJENBTl9DTTsi
Ci0gICAgIiRDTSogJFdKICRDTSogJENBTl9DTTsiCi0gICAgIiRDTSogJFdKIFskTEI4Tm9uQnJl
YWtzLSRDTV07IgotICAgICIkQ0FOVF9DTSAkQ00qICRXSjsiCi0gICAgIiRDTSogJENBTl9DTSAk
Q00qICRXSjsiCi0gICAgIiRDTSogJEdMICRDTSogWyRMQjhOb25CcmVha3MtWyRDTSAkU1AgJEJB
ICRIWV1dOyIKLSAgICAiJENBTlRfQ00gJENNKiAkR0w7IgotICAgICIkQ00qICRDQU5fQ00gJENN
KiAkR0w7IgotICAgICIkQ0wgJENNKyAkQ0FOX0NNOyIKLSAgICAiJENQICRDTSsgJENBTl9DTTsi
Ci0gICAgIiRFWCAkQ00rICRDQU5fQ007IgotICAgICIkSVMgJENNKyAkQ0FOX0NNOyIKLSAgICAi
JFNZICRDTSsgJENBTl9DTTsiCi0gICAgIiRDTCBbJExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAi
JENQIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAgICIkRVggWyRMQjhOb25CcmVha3MtJENNXTsi
Ci0gICAgIiRJUyBbJExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiJFNZIFskTEI4Tm9uQnJlYWtz
LSRDTV07IgotICAgICJbJENMICRDUCAkRVggJElTICRTWV0gJENNKyAkU1ArICRDTSogJE9QOyAi
Ci0gICAgIiRDTSogJENBTl9DTSAkU1AqICRDTSogJE9QOyIKLSAgICAiJENBTlRfQ00gJFNQKiAk
Q00qICRPUDsiCi0gICAgIiRBTF9GT0xMT1c/ICRDTSsgJFNQICRTUCogJENNKiAkT1A7IgotICAg
ICIkQUxfRk9MTE9XX05PQ00gJENNKyAkU1ArICRDTSogJE9QOyIKLSAgICAiJENNKiAkQUxfRk9M
TE9XX0NNICRDTSsgJFNQKyAkQ00qICRPUDsiCi0gICAgIiRTWSAkQ00gJFNQKyAkT1A7IgotICAg
ICIkQ00qICRPUCAkU1AqICRDTSogJFFVOyIKLSAgICAiJENNKiAkTlMgJFNQKiAkQ00qICgkQ0wg
fCAkQ1ApOyIKLSAgICAiJENNKiAkQjIgJFNQKiAkQ00qICRCMjsiCi0gICAgIiRDTSogJFFVICRD
TSogJENBTl9DTTsiCi0gICAgIiRDTSogJFFVICRMQjE4Tm9uQnJlYWtzOyIKLSAgICAiJENNKiAk
Q0FOX0NNICRDTSogJFFVOyIKLSAgICAiJENBTlRfQ00gJENNKiAkUVU7IgotICAgICIkQ00qICgk
QkEgfCAkSFkgfCAkTlMpICRDTSogWyRMQjIwTm9uQnJlYWtzLSRDTV07IgotICAgICIkQ00qIFsk
TEIyME5vbkJyZWFrcy0kQ01dICRDTSogJEJCOyIKLSAgICAiW14kQ0JdICRDTSogJEJCOyIKLSAg
ICAiW14kQ0JdICRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7IgotICAgICIkQ00qICRJTiAkQ00q
ICgkQUxQbHVzIHwgJEhMKTsiCi0gICAgIiRDTSogJElOICRDTSogJElEOyIKLSAgICAiJENNKiAk
SU4gJENNKiAkSU47IgotICAgICIkQ00qICRJTiAkQ00qICROVTsiCi0gICAgIiRDTSogJFBPICRD
TSogJElEOyIKLSAgICAiJENNKiAkTlUgJENNKiAoJEFMUGx1cyB8ICRITCk7IgotICAgICIkQ00q
ICgkQUxQbHVzIHwgJEhMKSAkQ00qICROVTsiCi0gICAgIiRDTSogJElEICRDTSogJFBSOyIKLSAg
ICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUFI7IgotICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMKSAkQ00qICRQTzsiCi0gICAgIigkQ00qICgkUFIgfCAkUE8pKT8gKCRDTSogKCRDTCB8ICRD
UCkpPyAoJENNKiAoJE5VIHwgJElTIHwgJFNZKSkqICRDTSogJE5VICgkQ00qICgkT1AgfCAkSFkp
KT8gKCRDTSogKCRQUiB8ICRQTykpPzsiCi0gICAgIiRDTSogKCRIMyB8ICRIMiB8ICRKViB8ICRK
TCkgJENNKiAkSkw7IgotICAgICIkQ00qICgkSlQgfCAkSlYpICRDTSogKCRIMiB8ICRKVik7Igot
ICAgICIkQ00qICRKVCAkQ00qICgkSDMgfCAkSlQpOyIKLSAgICAiJENNKiAkSU4gJENNKiAoJEgz
IHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCi0gICAgIiRDTSogJFBPICRDTSogKCRIMyB8ICRI
MiB8ICRKVCB8ICRKViB8ICRKTCk7IgotICAgICIkQ00qICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYg
fCAkSkwpICRDTSogJFBSOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAoJEFMUGx1
cyB8ICRITCk7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRJUzsiCi0gICAgIiRD
TSogJE9QICRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUpOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8
ICRITCB8ICROVSkgJENNKiAkQ1A7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAg
ICIkQ00qICRSSSAkQ00qICRSSTsiCi0jZW5kaWYKLSAgICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/
ICRFbW9qaUZvck1vZHM7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0U2FmZUZvcndhcmQg
PQotICAgICIhIXNhZmVfZm9yd2FyZDsiCi0gICAgIlskQ00gJE9QICRRVSAkQ0wgJENQICRCMiAk
UFIgJEhZICRCQSAkU1AgJGRpY3Rpb25hcnldKyBbXiRDTSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQ
UiAkSFkgJEJBICRkaWN0aW9uYXJ5XTsiCi0gICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7
Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFNhZmVSZXZlcnNlID0KLSAgICAiISFzYWZlX3Jl
dmVyc2U7IgotICAgICIkQ00rIFteJENNICRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCi0gICAg
IiRDTSsgJFNQIC8gLjsiCi0gICAgIiRTUCsgJENNKiAkT1A7IgotICAgICIkU1ArICRDTSogJFFV
OyIKLSAgICAiJFNQKyAkQ00qICgkQ0wgfCAkQ1ApOyIKLSAgICAiJFNQKyAkQ00qICRCMjsiCi0g
ICAgIiRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7IgotICAgICIoJENNKiAoJElTIHwgJFNZKSkr
ICRDTSogJE5VOyIKLSAgICAiKCRDTCB8ICRDUCkgJENNKiAoJE5VIHwgJElTIHwgJFNZKTsiCi0g
ICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7Ci0KLXN0YXRpYyBTdHJpbmcgbWFwTGluZUl0
ZXJhdG9yTW9kZVRvUnVsZXMoTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSksp
Ci17Ci0gICAgU3RyaW5nQnVpbGRlciBydWxlc0J1aWxkZXI7Ci0gICAgcnVsZXNCdWlsZGVyLmFw
cGVuZCh1YXgxNFByb2xvZ3VlKTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0QXNzaWdu
bWVudHNCZWZvcmUpOwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgTGluZUJyZWFrSXRl
cmF0b3JNb2RlVUFYMTQ6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQoaXNDSksgPyB1YXgx
NEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZh
dWx0Tm9uQ0pLKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNExvb3NlOgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRB
c3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLIDogdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlTm9u
Q0pLKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgx
NE5vcm1hbDoKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0QXNzaWdu
bWVudHNDdXN0b21Ob3JtYWxDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pL
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0
cmljdDoKLSAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVu
dHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRBc3Np
Z25tZW50c0FmdGVyKTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0Rm9yd2FyZCk7Ci0g
ICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFJldmVyc2UpOwotICAgIHJ1bGVzQnVpbGRlci5h
cHBlbmQodWF4MTRTYWZlRm9yd2FyZCk7Ci0gICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNh
ZmVSZXZlcnNlKTsKLSAgICByZXR1cm4gcnVsZXNCdWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLS8v
IFJlY29nbml6ZSBCQ1A0NyBjb21wbGlhbnQgcHJpbWFyeSBsYW5ndWFnZSB2YWx1ZXMgb2YgJ3po
JywgJ2phJywgJ2tvJwotLy8gKGluIGFueSBjb21iaW5hdGlvbiBvZiBjYXNlKSwgb3B0aW9uYWxs
eSBmb2xsb3dlZCBieSBzdWJ0YWdzLiBEb24ndAotLy8gcmVjb2duaXplIDMtbGV0dGVyIHZhcmlh
bnRzICdjaGknLyd6aG8nLCAnanBuJywgb3IgJ2tvcicgc2luY2UgQkNQNDcKLS8vIHJlcXVpcmVz
IHVzZSBvZiBzaG9ydGVzdCBsYW5ndWFnZSB0YWcuCi1ib29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlKQotewotICAgIHNpemVfdCBsZW5ndGggPSBsb2NhbGUubGVuZ3Ro
KCk7Ci0gICAgaWYgKGxlbmd0aCA8IDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRv
IGMxID0gbG9jYWxlWzBdOwotICAgIGF1dG8gYzIgPSBsb2NhbGVbMV07Ci0gICAgYXV0byBjMyA9
IGxlbmd0aCA9PSAyID8gMCA6IGxvY2FsZVsyXTsKLSAgICBpZiAoIWMzIHx8IGMzID09ICctJyB8
fCBjMyA9PSAnXycgfHwgYzMgPT0gJ0AnKSB7Ci0gICAgICAgIGlmIChjMSA9PSAneicgfHwgYzEg
PT0gJ1onKQotICAgICAgICAgICAgcmV0dXJuIGMyID09ICdoJyB8fCBjMiA9PSAnSCc7Ci0gICAg
ICAgIGlmIChjMSA9PSAnaicgfHwgYzEgPT0gJ0onKQotICAgICAgICAgICAgcmV0dXJuIGMyID09
ICdhJyB8fCBjMiA9PSAnQSc7Ci0gICAgICAgIGlmIChjMSA9PSAnaycgfHwgYzEgPT0gJ0snKQot
ICAgICAgICAgICAgcmV0dXJuIGMyID09ICdvJyB8fCBjMiA9PSAnTyc7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRv
cihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUs
IGJvb2wgaXNDSkspCi17Ci0gICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyOwotICAgIFVFcnJv
ckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBib29sIGxvY2FsZUlzRW1wdHkg
PSBsb2NhbGUuaXNFbXB0eSgpOwotICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9k
ZVVBWDE0KQotICAgICAgICB1YnJrSXRlciA9IHVicmtfb3BlbihVQlJLX0xJTkUsIGxvY2FsZUlz
RW1wdHkgPyBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKSA6IGxvY2FsZS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCAwLCAwLCAmb3BlblN0YXR1cyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFVQYXJz
ZUVycm9yIHBhcnNlU3RhdHVzOwotICAgICAgICBhdXRvIHJ1bGVzID0gbWFwTGluZUl0ZXJhdG9y
TW9kZVRvUnVsZXMobW9kZSwgaXNDSkspOwotICAgICAgICB1YnJrSXRlciA9IHVicmtfb3BlblJ1
bGVzKFN0cmluZ1ZpZXcocnVsZXMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBydWxlcy5sZW5n
dGgoKSwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cyk7Ci0gICAgfQotICAgIC8vIGxv
Y2FsZSBjb21lcyBmcm9tIGEgd2ViIHBhZ2UgYW5kIGl0IGNhbiBiZSBpbnZhbGlkLCBsZWFkaW5n
IElDVQotICAgIC8vIHRvIGZhaWwsIGluIHdoaWNoIGNhc2Ugd2UgZmFsbCBiYWNrIHRvIHRoZSBk
ZWZhdWx0IGxvY2FsZS4KLSAgICBpZiAoIWxvY2FsZUlzRW1wdHkgJiYgVV9GQUlMVVJFKG9wZW5T
dGF0dXMpKSB7Ci0gICAgICAgIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVi
cmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCks
IDAsIDAsICZvcGVuU3RhdHVzKTsKLSAgICB9Ci0KLSAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0
dXMpKSB7Ci0gICAgICAgIExPR19FUlJPUigidWJya19vcGVuIGZhaWxlZCB3aXRoIHN0YXR1cyAl
ZCIsIG9wZW5TdGF0dXMpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtJdGVyKTsKLX0K
LQotdm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0
b3IpCi17Ci0gICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0gcmVpbnRlcnByZXRfY2FzdDxV
QnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKLSAgICBBU1NFUlQodWJya0l0ZXIpOwotICAgIHVi
cmtfY2xvc2UodWJya0l0ZXIpOwotICAgIGl0ZXJhdG9yID0gbnVsbHB0cjsKLX0KLQotc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOwotCi1z
dGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBlY3RlZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5l
d1ZhbHVlKQotewotICAgIHJldHVybiBXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvciwgZXhwZWN0ZWQsIG5ld1ZhbHVlKTsKLX0KLQotTm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cihTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBtX2l0ZXJhdG9yID0gbm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcjsKLQotICAgIGJvb2wgY3JlYXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRv
ciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IobV9pdGVy
YXRvciwgMCk7Ci0gICAgaWYgKCFjcmVhdGVkSXRlcmF0b3IpCi0gICAgICAgIG1faXRlcmF0b3Ig
PSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwotICAgIGlmICghbV9pdGVyYXRv
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pdGVyYXRvciA9IHNldFRleHRGb3JJdGVyYXRv
cigqbV9pdGVyYXRvciwgc3RyaW5nKTsKLX0KLQotTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQotewotICAgIGlmICghY29t
cGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKDAsIG1faXRlcmF0b3Ip
KQotICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPiht
X2l0ZXJhdG9yKSk7Ci19Ci0KLQotLy8gSXRlcmF0b3IgaW1wbGVtZW5hdGlvbi4KLQotaW50IHRl
eHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4g
dWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsK
LX0KLQotaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotewot
ICAgIHJldHVybiB1YnJrX2xhc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0
ZXJhdG9yKSk7Ci19Ci0KLWludCB0ZXh0QnJlYWtOZXh0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvcikKLXsKLSAgICByZXR1cm4gdWJya19uZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRl
cmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiB1YnJrX3ByZXZpb3VzKHJlaW50ZXJw
cmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFr
UHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICBy
ZXR1cm4gdWJya19wcmVjZWRpbmcocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0
ZXJhdG9yKSwgcG9zKTsKLX0KLQotaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVy
YXRvciogaXRlcmF0b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJuIHVicmtfZm9sbG93aW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Ci19Ci0KLWlu
dCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBy
ZXR1cm4gdWJya19jdXJyZW50KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvcikpOwotfQotCi1ib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRv
ciwgaW50IHBvc2l0aW9uKQotewotICAgIHJldHVybiB1YnJrX2lzQm91bmRhcnkocmVpbnRlcnBy
ZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zaXRpb24pOwotfQotCi1ib29s
IGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgaW50
IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJ
dGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci0gICAgcmV0dXJuIHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JE
X05PTkU7Ci19Ci0KLXVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nJiBz
KQotewotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9IHMubGVuZ3RoKCk7Ci0gICAgCi0gICAg
aWYgKCFzdHJpbmdMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIG9ubHkg
TGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENSIExGCi0gICAgaWYgKHMuaXM4
Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCi0gICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7
Ci0KLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHMpOwotICAgIGlmICgh
aXQpCi0gICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7Ci0KLSAgICB1bnNpZ25lZCBudW0gPSAw
OwotICAgIHdoaWxlICh0ZXh0QnJlYWtOZXh0KGl0KSAhPSBUZXh0QnJlYWtEb25lKQotICAgICAg
ICArK251bTsKLSAgICByZXR1cm4gbnVtOwotfQotCi11bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHMsIHVuc2lnbmVkIG51bUdyYXBoZW1l
Q2x1c3RlcnMpCi17Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgoKTsKLQot
ICAgIGlmICghc3RyaW5nTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRoZSBv
bmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlciBpcyBDUiBMRgotICAgIGlmIChz
LmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQotICAgICAgICByZXR1cm4gc3RkOjptaW4o
c3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsKLQotICAgIE5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IgaXQocyk7Ci0gICAgaWYgKCFpdCkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVDbHVzdGVycyk7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtR3JhcGhlbWVDbHVzdGVyczsgKytpKSB7Ci0gICAgICAgIGlm
ICh0ZXh0QnJlYWtOZXh0KGl0KSA9PSBUZXh0QnJlYWtEb25lKQotICAgICAgICAgICAgcmV0dXJu
IHN0cmluZ0xlbmd0aDsKLSAgICB9Ci0gICAgcmV0dXJuIHRleHRCcmVha0N1cnJlbnQoaXQpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZhMWMyMzUwYjQ3NjdkNmNlMWMzNGRlMmMzNGMyMmQ0MzUyMmM1OGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29t
PgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKgotICovCi0KLSNpZm5kZWYgVGV4dEJyZWFrSXRlcmF0b3JfaAotI2RlZmluZSBUZXh0
QnJlYWtJdGVyYXRvcl9oCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgVGV4dEJyZWFrSXRlcmF0b3I7Ci0KLS8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRv
ciBpcyBnb29kIG9ubHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBl
eGNlcHRpb24gb2YgYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgotCi1lbnVtIExpbmVCcmVha0l0
ZXJhdG9yTW9kZSB7Ci0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCi0gICAgTGluZUJy
ZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZSwKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgx
NE5vcm1hbCwKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKLX07Ci0KLS8v
IFRoaXMgaXMgc2ltaWxhciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9zdCBjYXNl
cywgYnV0IGlzIHN1YmplY3QgdG8KLS8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBPbmUgbm90
YWJsZSBleGFtcGxlIHdoZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVudAotLy8gZnJvbSBjaGFyYWN0
ZXIgYnJlYWsgaXRlcmF0b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBidWcgMjQz
NDIuCi0vLyBVc2UgdGhpcyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24gbWFuaXB1
bGF0aW9ucy4KLVRleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmlu
Z1ZpZXcpOwotCi1UZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyk7Ci1UZXh0QnJlYWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcp
OwotCi1XRUJDT1JFX0VYUE9SVCBUZXh0QnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0
ZXJhdG9yKFN0cmluZ1ZpZXcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hh
ciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgsIExpbmVCcmVha0l0
ZXJhdG9yTW9kZSwgYm9vbCBpc0NKSyk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VMaW5l
QnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4dEJyZWFrSXRlcmF0b3IqIG9w
ZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFr
SXRlcmF0b3JNb2RlLCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihU
ZXh0QnJlYWtJdGVyYXRvciomKTsKLQotaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJh
dG9yKik7Ci1pbnQgdGV4dEJyZWFrTGFzdChUZXh0QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRC
cmVha05leHQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0QnJlYWtQcmV2aW91cyhUZXh0
QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0b3Iq
KTsKLWludCB0ZXh0QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV0VC
Q09SRV9FWFBPUlQgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGlu
dCk7Ci1ib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKLWJvb2wgaXNX
b3JkVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKik7Ci0KLWNvbnN0IGludCBUZXh0QnJlYWtE
b25lID0gLTE7Ci0KLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWlj
U3RyaW5nJik7Ci0KLWNsYXNzIExhenlMaW5lQnJlYWtJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAg
TGF6eUxpbmVCcmVha0l0ZXJhdG9yKCkKLSAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCi0g
ICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHQobnVsbHB0cikKLSAgICAgICAgLCBtX21vZGUo
TGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQpCi0gICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRl
eHRMZW5ndGgoMCkKLSAgICAgICAgLCBtX2lzQ0pLKGZhbHNlKQotICAgIHsKLSAgICAgICAgcmVz
ZXRQcmlvckNvbnRleHQoKTsKLSAgICB9Ci0KLSAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3Ry
aW5nIHN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwg
TGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkK
LSAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCi0gICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQot
ICAgICAgICAsIG1faXRlcmF0b3IobnVsbHB0cikKLSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29u
dGV4dChudWxscHRyKQotICAgICAgICAsIG1fbW9kZShtb2RlKQotICAgICAgICAsIG1fY2FjaGVk
UHJpb3JDb250ZXh0TGVuZ3RoKDApCi0gICAgewotICAgICAgICByZXNldFByaW9yQ29udGV4dCgp
OwotICAgICAgICBtX2lzQ0pLID0gaXNDSktMb2NhbGUobG9jYWxlKTsKLSAgICB9Ci0KLSAgICB+
TGF6eUxpbmVCcmVha0l0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2l0ZXJhdG9yKQot
ICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOwotICAgIH0K
LQotICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIGJv
b2wgaXNMb29zZUNKS01vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9PSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOyB9Ci0KLSAgICBVQ2hhciBsYXN0Q2hhcmFj
dGVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5H
VEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJp
b3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07Ci0g
ICAgfQotCi0gICAgVUNoYXIgc2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09
IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwot
ICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMF07Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQ
cmlvckNvbnRleHQoVUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQotICAgIHsKLSAgICAg
ICAgQ09NUElMRV9BU1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwg
VGV4dEJyZWFrSXRlcmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAg
ICAgIG1fcHJpb3JDb250ZXh0WzBdID0gc2Vjb25kVG9MYXN0OwotICAgICAgICBtX3ByaW9yQ29u
dGV4dFsxXSA9IGxhc3Q7Ci0gICAgfQotCi0gICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQoVUNo
YXIgbGFzdCkKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgo
bV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3Jf
Y29udGV4dF9sZW5ndGgpOwotICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JDb250
ZXh0WzFdOwotICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7Ci0gICAgfQotCi0gICAg
dm9pZCByZXNldFByaW9yQ29udGV4dCgpCi0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChX
VEZfQVJSQVlfTEVOR1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91
bmV4cGVjdGVkX3ByaW9yX2NvbnRleHRfbGVuZ3RoKTsKLSAgICAgICAgbV9wcmlvckNvbnRleHRb
MF0gPSAwOwotICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7Ci0gICAgfQotCi0gICAgdW5z
aWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IHByaW9yQ29udGV4dExlbmd0aCA9IDA7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJB
WV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0
ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMV0p
IHsKLSAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOwotICAgICAgICAgICAgaWYgKG1f
cHJpb3JDb250ZXh0WzBdKQotICAgICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAgfQotCi0g
ICAgLy8gT2J0YWluIHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2Fj
aGVkLCB3aGVyZSB0aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKLSAgICAvLyBpbml0aWFs
aXplZCB0byB1c2UgdGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBi
cmVha2luZyBjb250ZXh0IGFuZCB1c2luZwotICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9y
IGNvbnRleHQgaWYgbm9uLWVtcHR5LgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWdu
ZWQgcHJpb3JDb250ZXh0TGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4
dExlbmd0aCA8PSBwcmlvckNvbnRleHRDYXBhY2l0eSk7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQgPSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JD
b250ZXh0Q2FwYWNpdHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDogMDsKLSAgICAgICAgaWYgKCFt
X2l0ZXJhdG9yKSB7Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVha0l0
ZXJhdG9yKG1fc3RyaW5nLCBtX2xvY2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgsIG1fbW9kZSwgbV9pc0NKSyk7Ci0gICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9
IHByaW9yQ29udGV4dDsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0g
cHJpb3JDb250ZXh0TGVuZ3RoOwotICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAhPSBt
X2NhY2hlZFByaW9yQ29udGV4dCB8fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQcmlv
ckNvbnRleHRMZW5ndGgpIHsKLSAgICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJh
dG9yKG1fc3RyaW5nLCBtX2xvY2FsZSwgbV9tb2RlKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlz
LT5nZXQocHJpb3JDb250ZXh0TGVuZ3RoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9p
dGVyYXRvcjsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9y
KFN0cmluZyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVy
YXRvck1vZGUgbW9kZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX2l0ZXJhdG9yKQotICAgICAgICAg
ICAgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOwotICAgICAgICBtX3N0cmlu
ZyA9IHN0cmluZzsKLSAgICAgICAgbV9sb2NhbGUgPSBsb2NhbGU7Ci0gICAgICAgIG1faXRlcmF0
b3IgPSBudWxscHRyOwotICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7Ci0g
ICAgICAgIG1fbW9kZSA9IG1vZGU7Ci0gICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2Nh
bGUpOwotICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCA9IDA7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9
IDI7Ci0gICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKLSAg
ICBUZXh0QnJlYWtJdGVyYXRvciogbV9pdGVyYXRvcjsKLSAgICBjb25zdCBVQ2hhciogbV9jYWNo
ZWRQcmlvckNvbnRleHQ7Ci0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKLSAgICB1
bnNpZ25lZCBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aDsKLSAgICBVQ2hhciBtX3ByaW9yQ29u
dGV4dFtwcmlvckNvbnRleHRDYXBhY2l0eV07Ci0gICAgYm9vbCBtX2lzQ0pLOwotfTsKLQotLy8g
SXRlcmF0ZXMgb3ZlciAiZXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGlu
IFVBWCAjMjkuCi0vLyBOb3RlIHRoYXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBiZSBs
ZXNzIHNvcGhpc3RpY2F0ZWQgLSBlLmcuIElDVSBwcmlvciB0bwotLy8gdmVyc2lvbiA0LjAgb25s
eSBzdXBwb3J0cyAibGVnYWN5IGdyYXBoZW1lIGNsdXN0ZXJzIi4KLS8vIFVzZSB0aGlzIGZvciBn
ZW5lcmFsIHRleHQgcHJvY2Vzc2luZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KLQotY2xhc3Mg
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik7Ci1wdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpOwotCi0g
ICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRv
cjsgfQotCi1wcml2YXRlOgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9yOwotfTsK
LQotLy8gQ291bnRzIHRoZSBudW1iZXIgb2YgZ3JhcGhlbWUgY2x1c3RlcnMuIEEgc3Vycm9nYXRl
IHBhaXIgb3IgYSBzZXF1ZW5jZQotLy8gb2YgYSBub24tY29tYmluaW5nIGNoYXJhY3RlciBhbmQg
Zm9sbG93aW5nIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGlzCi0vLyBjb3VudGVkIGFzIDEgZ3JhcGhl
bWUgY2x1c3Rlci4KLXVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nJik7
Ci0vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxsIGJlIGxlc3Mg
dGhhbiBvciBlcXVhbCB0bwotLy8gdGhlIHNwZWNpZmllZCBncmFwaGVtZSBjbHVzdGVyIGxlbmd0
aC4KLXVuc2lnbmVkIG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5n
VmlldyYsIHVuc2lnbmVkKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YjcwMDNjMzVmZDIxZWE2YWEyMTk5MzVlN2Ey
ODk5YTI2NWFkN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVV9oCi0jZGVmaW5lIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJu
YWxJQ1VfaAotCi0vLyBGSVhNRTogTm93IHRoYXQgdGhpcyBoYW5kbGVzIGxvY2FsZXMgZm9yIElD
VSwgbm90IGp1c3QgZm9yIHRleHQgYnJlYWtpbmcsCi0vLyB0aGlzIGZpbGUgYW5kIHRoZSB2YXJp
b3VzIGltcGxlbWVudGF0aW9uIGZpbGVzIHNob3VsZCBiZSByZW5hbWVkLgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLSAgICBjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKTsKLSAg
ICBjb25zdCBjaGFyKiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25D
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3Bw
CmluZGV4IDllMzQzYzAyOTE3NWRlZTU0YTM1NGQ3ZDUyODI2M2I5NDBlNDdiZDEuLmM0MGU2MjI3
M2UwMzQ4MmM1MWRlM2RkMTllMTI0NjgyMjE3MjUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBA
CiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKIAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5j
bHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGlu
eUxSVUNhY2hlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIFRpbnlMUlVDYWNo
ZVBvbGljeTxBdG9taWNTdHJpbmcsIFJldGFpblB0cjxDRkxvY2FsZVJlZj4+CkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIENGIGh5cGhlbmF0aW9uIGZ1bmN0aW9u
cyB1c2UgbG9jYWxlIChyZWdpb25hbCBmb3JtYXRzKSBsYW5ndWFnZSwgd2hpY2ggZG9lc24ndCBu
ZWNlc3NhcmlseSBtYXRjaCBwcmltYXJ5IFVJIGxhbmd1YWdlLAogICAgICAgICAvLyBzbyB3ZSBj
YW4ndCB1c2UgZGVmYXVsdCBsb2NhbGUgaGVyZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNDg5NzY2
ND4uCi0gICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxv
Y2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkZWZhdWx0TGFuZ3VhZ2UoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKSk7CisgICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxl
ID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBXZWJDb3JlOjpk
ZWZhdWx0TGFuZ3VhZ2UoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAgICAgICAgIHJldHVy
biBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFibGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/
IGxvY2FsZSA6IG51bGxwdHI7CiAgICAgfQogCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShsb2Nh
bGUuZ2V0KCkpID8gbG9jYWxlIDogbnVsbHB0cjsKICAgICB9CiB9OworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGJvb2wgY2FuSHlwaGVuYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
SWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
ZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNTY4NjlmMTQ1ZGQ3NjgxZGZlYmI2ODg4OTVi
YzE5NTUxZTEzYmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVUVmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0gICAgLy8gRklY
TUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxvY2FsZS4KLSAgICByZXR1cm4gIiI7Ci19Ci0KLWNvbnN0
IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgcmV0dXJuICJlbl91cyI7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFu
dC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9l
bmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKaW5kZXggNDdmNTZmMDhiMzU0ODJjYWUwNjRk
NGZiMTk0MmNhZTVjOGFiMDcyMC4uNDExYzgwNjE0ZTI2N2NmYzUxMWZmYWRiMGE5NTM2MWM4MWI1
NDkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1Rl
eHRDaGVja2VyRW5jaGFudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9l
bmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogI2luY2x1
ZGUgPExhbmd1YWdlLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHRleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0
ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZTVhMDVmYTQ5MTk1ZmIzMGJm
NjlkZWQ1NjJkNTQzYjhiNjEwMTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2Fs
ZUlEKCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJl
dHVybiAiIjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsK
LSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAiZW5f
dXMiOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggMTZhNTQwYzkxNzgyZmQx
N2Q5ZGNmYWEyMDAwODY1OTAyMWE3OTNkYS4uYjI4MWRkODVkMTQzODBjODJlNDQwOGRiMWMyYjE2
ZDFjZjM1YjIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBo
ZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY2LDEzICsxNjYsMTcg
QEAgcHJpdmF0ZToKICAgICBIeXBoZW5EaWN0VW5pcXVlUHRyIG1fbGliaHlwaGVuRGljdGlvbmFy
eTsKIH07CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKIHRl
bXBsYXRlPD4KLWNsYXNzIFRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNTdHJpbmcsIFJlZlB0cjxI
eXBoZW5hdGlvbkRpY3Rpb25hcnk+PgorY2xhc3MgVGlueUxSVUNhY2hlUG9saWN5PEF0b21pY1N0
cmluZywgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4+CiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFRpbnlMUlVDYWNoZTxBdG9taWNTdHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlv
bkRpY3Rpb25hcnk+PiYgY2FjaGUoKQorICAgIHN0YXRpYyBUaW55TFJVQ2FjaGU8QXRvbWljU3Ry
aW5nLCBSZWZQdHI8V2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5Pj4mIGNhY2hlKCkKICAg
ICB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8QXRvbWljU3Ry
aW5nLCBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5Pj4+IGNhY2hlOworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPEF0b21pY1N0cmluZywgUmVmUHRyPFdlYkNv
cmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4+PiBjYWNoZTsKICAgICAgICAgcmV0dXJuIGNhY2hl
OwogICAgIH0KIApAQCAtMTgxLDE3ICsxODUsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bG9jYWxlSWRlbnRpZmllci5pc051bGwoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5
cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkKKyAgICBzdGF0aWMg
UmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlVmFsdWVGb3JOdWxs
S2V5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0
ZU51bGwoKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6
Y3JlYXRlTnVsbCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8SHlwaGVuYXRpb25EaWN0
aW9uYXJ5PiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGRpY3Rpb25hcnlQ
YXRoKQorICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBj
cmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGRpY3Rpb25hcnlQYXRoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOworICAgICAgICByZXR1
cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CiAgICAgfQogfTsK
IAorfSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogc3RhdGljIHZv
aWQgY291bnRMZWFkaW5nU3BhY2VzKGNvbnN0IENTdHJpbmcmIHV0ZjhTdHJpbmcsIGludDMyX3Qm
IHBvaW50ZXJPZmZzZXQsIGludDMyX3QmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBwb2ludGVy
T2Zmc2V0ID0gMDsKQEAgLTIzMyw3ICsyNDEsNyBAQCBzaXplX3QgbGFzdEh5cGhlbkxvY2F0aW9u
KFN0cmluZ1ZpZXcgc3RyaW5nLCBzaXplX3QgYmVmb3JlSW5kZXgsIGNvbnN0IEF0b21pY1N0cgog
ICAgIFN0cmluZyBsb3dlcmNhc2VMb2NhbGVJZGVudGlmaWVyID0gQXRvbWljU3RyaW5nKGxvY2Fs
ZUlkZW50aWZpZXIuc3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgQVNT
RVJUKGF2YWlsYWJsZUxvY2FsZXMoKS5jb250YWlucyhsb3dlcmNhc2VMb2NhbGVJZGVudGlmaWVy
KSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBkaWN0aW9uYXJ5UGF0aCA6IGF2YWlsYWJsZUxvY2Fs
ZXMoKS5nZXQobG93ZXJjYXNlTG9jYWxlSWRlbnRpZmllcikpIHsKLSAgICAgICAgUmVmUHRyPEh5
cGhlbmF0aW9uRGljdGlvbmFyeT4gZGljdGlvbmFyeSA9IFRpbnlMUlVDYWNoZVBvbGljeTxBdG9t
aWNTdHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRv
bWljU3RyaW5nKGRpY3Rpb25hcnlQYXRoKSk7CisgICAgICAgIFJlZlB0cjxIeXBoZW5hdGlvbkRp
Y3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBXVEY6OlRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNTdHJp
bmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRvbWljU3Ry
aW5nKGRpY3Rpb25hcnlQYXRoKSk7CiAKICAgICAgICAgY2hhcioqIHJlcGxhY2VtZW50cyA9IG51
bGxwdHI7CiAgICAgICAgIGludCogcG9zaXRpb25zID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZkYWVlODFlNjA3ZTY3NTQzYmY2N2ZlODY1MzJhYjUzNWJmN2Iy
YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlVUZXh0UHJvdmlkZXIuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIFJlbG9jYXRlIHBvaW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0
aW5hdGlvbiBhcyByZXF1aXJlZC4KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0
IFVUZXh0KiBzb3VyY2UsIFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIp
Ci17Ci0gICAgaWYgKHBvaW50ZXIgPj0gc291cmNlLT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRp
Y19jYXN0PGNoYXIqPihzb3VyY2UtPnBFeHRyYSkgKyBzb3VyY2UtPmV4dHJhU2l6ZSkgewotICAg
ICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAg
cG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihkZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
c291cmNlLT5wRXh0cmEpKTsKLSAgICB9IGVsc2UgaWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBv
aW50ZXIgPCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5z
aXplT2ZTdHJ1Y3QpIHsKLSAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0
IHN0cnVjdHVyZSwgYnV0IG5vdCBzb3VyY2UgZXh0cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihwb2ludGVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJj
ZSkpOwotICAgIH0KLX0KLQotVVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlv
biwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQot
ewotICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwgIWRlZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGludDMyX3QgZXh0cmFTaXplID0g
c291cmNlLT5leHRyYVNpemU7Ci0gICAgZGVzdGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5h
dGlvbiwgZXh0cmFTaXplLCBzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0g
ICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKLSAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0
aW9uLT5wRXh0cmE7Ci0gICAgaW50MzJfdCBmbGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAg
ICBpbnQgc2l6ZVRvQ29weSA9IHN0ZDo6bWluKHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5h
dGlvbi0+c2l6ZU9mU3RydWN0KTsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6
ZVRvQ29weSk7Ci0gICAgZGVzdGluYXRpb24tPnBFeHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3Rp
bmF0aW9uLT5mbGFncyA9IGZsYWdzOwotICAgIG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBz
b3VyY2UtPnBFeHRyYSwgZXh0cmFTaXplKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGRlc3RpbmF0aW9uLT5jb250ZXh0KTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVz
dGluYXRpb24sIGRlc3RpbmF0aW9uLT5wKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGRlc3RpbmF0aW9uLT5xKTsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAg
ICBjb25zdCB2b2lkKiBjaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRl
c3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGNodW5rQ29udGVudHMpOwotICAgIGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihjaHVua0NvbnRlbnRzKTsKLSAgICByZXR1cm4gZGVz
dGluYXRpb247Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYzI1NGZjNGM3Y2UyMzU5NDQyYzY3ZmFiZjE4YjVlZjZhYjFjNDNhNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
MTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVVRleHRQcm92aWRlcl9oCi0jZGVmaW5l
IFVUZXh0UHJvdmlkZXJfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgewotICAgIE5v
Q29udGV4dCwKLSAgICBQcmlvckNvbnRleHQsCi0gICAgUHJpbWFyeUNvbnRleHQKLX07Ci0KLWlu
bGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4
dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAo
IXRleHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQotICAgICAgICByZXR1cm4gVVRleHRQ
cm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0OwotICAgIGlmIChuYXRpdmVJbmRleCA9PSB0
ZXh0LT5iKQotICAgICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQ
cmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci0gICAg
cmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci19Ci0KLWlubGluZSB2
b2lkIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25z
dCBVVGV4dEZ1bmNzKiBmdW5jcywgY29uc3Qgdm9pZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0g
ICAgdGV4dC0+cEZ1bmNzID0gZnVuY3M7Ci0gICAgdGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0g
MSA8PCBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hVTktTOwotICAgIHRleHQtPmNvbnRleHQgPSBz
dHJpbmc7Ci0gICAgdGV4dC0+cCA9IHN0cmluZzsKLSAgICB0ZXh0LT5hID0gbGVuZ3RoOwotICAg
IHRleHQtPnEgPSBwcmlvckNvbnRleHQ7Ci0gICAgdGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0
aDsKLX0KLQotLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgVVRleHRDbG9uZSBmdW5j
dGlvbiBvbiBVVGV4dEZ1bmNzLgotCi1VVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3Rp
bmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0
dXMpOwotCi0KLS8vIEhlbHBlcnMgZm9yIHRoZSBVVGV4dEFjY2VzcyBmdW5jdGlvbiBvbiBVVGV4
dEZ1bmNzLgotCi1pbmxpbmUgaW50NjRfdCB1VGV4dEFjY2Vzc1BpbkluZGV4KGludDY0X3QmIGlu
ZGV4LCBpbnQ2NF90IGxpbWl0KQotewotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4
ID0gMDsKLSAgICBlbHNlIGlmIChpbmRleCA+IGxpbWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0
OwotICAgIHJldHVybiBpbmRleDsKLX0KLQotaW5saW5lIGJvb2wgdVRleHRBY2Nlc3NJbkNodW5r
T3JPdXRPZlJhbmdlKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5h
dGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCwgVUJvb2wmIGlzQWNjZXNzaWJsZSkKLXsKLSAgICBp
ZiAoZm9yd2FyZCkgewotICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gdGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCAmJiBuYXRpdmVJbmRleCA8IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAg
ICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0
YXJ0OwotICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBp
ZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNT
RVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAg
ICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAg
ICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gbmF0aXZlTGVuZ3RoICYmIHRleHQt
PmNodW5rTmF0aXZlTGltaXQgPT0gbmF0aXZlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB0ZXh0LT5j
aHVua09mZnNldCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxl
ID0gRkFMU0U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmIChuYXRpdmVJbmRleCA+IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYg
bmF0aXZlSW5kZXggPD0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkgewotICAgICAgICAgICAgaW50
NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAg
ICAgICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVk
IG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0
IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4
dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOwotICAgICAgICAgICAgaXNB
Y2Nlc3NpYmxlID0gVFJVRTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChuYXRpdmVJbmRleCA8PSAwICYmICF0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7
Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgICAgICAgICBpc0FjY2Vz
c2libGUgPSBGQUxTRTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gVVRleHRQcm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjZDY4NTJjNzFlNTVlZjk3Y2EwYjBiYTFjZmY4ODBiOTk3MGY3M2M1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5oIgotCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlci5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0vLyBMYXRpbjEgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25l
KFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOwotc3RhdGljIGludDY0
X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqKTsKLXN0YXRpYyBVQm9vbCB1VGV4dExh
dGluMUFjY2VzcyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0
TGF0aW4xRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwg
VUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2
ZShjb25zdCBVVGV4dCopOwotc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRl
eFRvVVRGMTYoY29uc3QgVVRleHQqLCBpbnQ2NF90KTsKLXN0YXRpYyB2b2lkIHVUZXh0TGF0aW4x
Q2xvc2UoVVRleHQqKTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHVUZXh0TGF0
aW4xRnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAg
ICAwLAotICAgIHVUZXh0TGF0aW4xQ2xvbmUsCi0gICAgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgs
Ci0gICAgdVRleHRMYXRpbjFBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFFeHRyYWN0LAotICAgIG51
bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlLAot
ICAgIHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2LAotICAgIHVUZXh0TGF0aW4xQ2xv
c2UsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIKLX07Ci0KLXN0YXRp
YyBVVGV4dCogdVRleHRMYXRpbjFDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0
KiBzb3VyY2UsIFVCb29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBBU1NFUlRf
VU5VU0VEKGRlZXAsICFkZWVwKTsKLQotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgVVRleHQqIHJlc3VsdCA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0
aW9uLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHksIHN0YXR1
cyk7Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIGRlc3RpbmF0
aW9uOwotICAgIAotICAgIHJlc3VsdC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gc291cmNlLT5wcm92
aWRlclByb3BlcnRpZXM7Ci0gICAgCi0gICAgLy8gUG9pbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24s
IGJ1dCB3aXRoIGFuIGVtcHR5IGJ1ZmZlci4KLSAgICByZXN1bHQtPmNodW5rTmF0aXZlU3RhcnQg
PSBzb3VyY2UtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgcmVzdWx0LT5jaHVua05hdGl2ZUxpbWl0
ID0gc291cmNlLT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIHJlc3VsdC0+bmF0aXZlSW5kZXhpbmdM
aW1pdCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFydCk7Ci0g
ICAgcmVzdWx0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgcmVzdWx0LT5jb250ZXh0ID0gc291cmNl
LT5jb250ZXh0OwotICAgIHJlc3VsdC0+YSA9IHNvdXJjZS0+YTsKLSAgICByZXN1bHQtPnBGdW5j
cyA9ICZ1VGV4dExhdGluMUZ1bmNzOwotICAgIHJlc3VsdC0+Y2h1bmtDb250ZW50cyA9IChVQ2hh
ciopcmVzdWx0LT5wRXh0cmE7Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPihyZXN1bHQt
PmNodW5rQ29udGVudHMpLCAwLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5l
Q2FwYWNpdHkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludDY0X3QgdVRl
eHRMYXRpbjFOYXRpdmVMZW5ndGgoVVRleHQqIHVUZXh0KQotewotICAgIHJldHVybiB1VGV4dC0+
YTsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50
NjRfdCBpbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0
LT5hOwotCi0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdVRleHQtPmNo
dW5rTmF0aXZlTGltaXQgJiYgaW5kZXggPj0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAg
ICAgICAgICAgIC8vIEFscmVhZHkgaW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNl
dC4KLSAgICAgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgICAgICAgICAgcmV0dXJuIFRS
VUU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCAmJiB1VGV4dC0+Y2h1
bmtOYXRpdmVMaW1pdCA9PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIE9mZiB0aGUgZW5kIG9m
IHRoZSBidWZmZXIsIGJ1dCB3ZSBjYW4ndCBnZXQgaXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1
bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2
ZVN0YXJ0KTsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmIChpbmRleCA8PSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRl
eCA+IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGlu
c2lkZSB0aGUgYnVmZmVyLiBTZXQgdGhlIG5ldyBvZmZzZXQuCi0gICAgICAgICAgICB1VGV4dC0+
Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05h
dGl2ZVN0YXJ0KTsKLSAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICB9Ci0gICAgICAg
IGlmICghaW5kZXggJiYgIXVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAv
LyBBbHJlYWR5IGF0IHRoZSBiZWdpbm5pbmc7IGNhbid0IGdvIGFueSBmYXJ0aGVyLgotICAgICAg
ICAgICAgdVRleHQtPmNodW5rT2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsK
LSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICB1VGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA9IGluZGV4OwotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVM
aW1pdCA9IHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0ICsgVVRleHRXaXRoQnVmZmVySW5saW5lQ2Fw
YWNpdHk7Ci0gICAgICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKLSAg
ICAgICAgICAgIHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOwotCi0gICAgICAgIHVU
ZXh0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdVRleHQtPmNodW5r
TmF0aXZlTGltaXQgPSBpbmRleDsKLSAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0
ID4gbGVuZ3RoKQotICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7
Ci0KLSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB1VGV4dC0+Y2h1bmtOYXRpdmVM
aW1pdCAtIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5OwotICAgICAgICBpZiAodVRleHQt
PmNodW5rTmF0aXZlU3RhcnQgPCAwKQotICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3Rh
cnQgPSAwOwotCi0gICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KGluZGV4IC0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgIH0KLSAgICB1VGV4dC0+
Y2h1bmtMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih1VGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLQotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cyhjb25zdF9jYXN0PFVDaGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxj
b25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7Ci0KLSAgICB1VGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKLQotICAgIHJldHVybiBU
UlVFOwotfQotCi1zdGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUV4dHJhY3QoVVRleHQqIHVUZXh0
LCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGxpbWl0LCBVQ2hhciogZGVzdCwgaW50MzJfdCBkZXN0
Q2FwYWNpdHksIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVU
ZXh0LT5hOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgaWYgKGRlc3RDYXBhY2l0eSA8IDAgfHwgKCFkZXN0ICYmIGRlc3RDYXBhY2l0eSA+IDAp
KSB7Ci0gICAgICAgICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBsaW1pdCB8
fCAobGltaXQgLSBzdGFydCkgPiBJTlQzMl9NQVgpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSU5E
RVhfT1VUT0ZCT1VORFNfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlm
IChzdGFydCA+IGxlbmd0aCkKLSAgICAgICAgc3RhcnQgPSBsZW5ndGg7Ci0gICAgaWYgKGxpbWl0
ID4gbGVuZ3RoKQotICAgICAgICBsaW1pdCA9IGxlbmd0aDsKLQotICAgIGxlbmd0aCA9IGxpbWl0
IC0gc3RhcnQ7Ci0gICAgCi0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgaWYgKGRlc3RDYXBhY2l0eSA+IDAgJiYgIWRlc3QpIHsKLSAgICAgICAgaW50MzJfdCB0cmlt
bWVkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKLSAgICAgICAgaWYgKHRy
aW1tZWRMZW5ndGggPiBkZXN0Q2FwYWNpdHkpCi0gICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0g
ZGVzdENhcGFjaXR5OwotCi0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0
aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odHJpbW1lZExlbmd0aCkpOwotICAgIH0KLQotICAgIGlmIChsZW5ndGggPCBk
ZXN0Q2FwYWNpdHkpIHsKLSAgICAgICAgZGVzdFtsZW5ndGhdID0gMDsKLSAgICAgICAgaWYgKCpz
dGF0dXMgPT0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORykKLSAgICAgICAgICAgICpz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgfSBlbHNlIGlmIChsZW5ndGggPT0gZGVzdENhcGFj
aXR5KQotICAgICAgICAqc3RhdHVzID0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsK
LSAgICBlbHNlCi0gICAgICAgICpzdGF0dXMgPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKLQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOwotfQotCi1zdGF0aWMgaW50
NjRfdCB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0KiB1VGV4dCkKLXsK
LSAgICByZXR1cm4gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgKyB1VGV4dC0+Y2h1bmtPZmZzZXQ7
Ci19Ci0KLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNv
bnN0IFVUZXh0KiB1VGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCkKLXsKLSAgICBBU1NFUlRfVU5V
U0VEKHVUZXh0LCB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA+PSBuYXRpdmVJbmRleCk7Ci0gICAg
QVNTRVJUX1VOVVNFRCh1VGV4dCwgbmF0aXZlSW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KG5hdGl2ZUluZGV4KTsKLX0KLQot
c3RhdGljIHZvaWQgdVRleHRMYXRpbjFDbG9zZShVVGV4dCogdVRleHQpCi17Ci0gICAgdVRleHQt
PmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIo
VVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0
aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSkpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0
dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3Rh
dHVzKTsKLSAgICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4
dCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHRleHQtPmNvbnRleHQg
PSBzdHJpbmc7Ci0gICAgdGV4dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5wRnVuY3MgPSAmdVRl
eHRMYXRpbjFGdW5jczsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKil0ZXh0LT5w
RXh0cmE7Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRz
KSwgMCwgc2l6ZW9mKFVDaGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKLQot
ICAgIHJldHVybiB0ZXh0OwotfQotCi0KLS8vIExhdGluMUNvbnRleHRBd2FyZSBwcm92aWRlcgot
Ci1zdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25z
dCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGlu
MUNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCopOwotc3RhdGljIFVCb29sIHVUZXh0TGF0
aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOwotc3RhdGljIGlu
dDMyX3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50
NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dExh
dGluMUNvbnRleHRBd2FyZUNsb3NlKFVUZXh0Kik7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRl
eHRGdW5jcyB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0
RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAwLAotICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3
YXJlQ2xvbmUsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCi0gICAg
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAg
IG51bGxwdHIsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSwKLSAgICBudWxscHRy
LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0cgotfTsKLQotc3RhdGljIGlubGluZSBVVGV4dFBy
b3ZpZGVyQ29udGV4dCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQoY29u
c3QgVVRleHQqIHRleHQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAg
ICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dDsKLSAgICByZXR1cm4gdGV4
dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wRXh0cmEgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6
UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OwotfQot
Ci1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQo
VVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBV
Qm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQt
PnBFeHRyYSk7Ci0gICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4
ID49IHRleHQtPmIgJiYgbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOwotICAgICAgICB0ZXh0
LT5jaHVua05hdGl2ZVN0YXJ0ID0gbmF0aXZlSW5kZXg7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0
aXZlTGltaXQgPSBuYXRpdmVJbmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7
Ci0gICAgICAgIGlmICh0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVuZ3RoKQotICAg
ICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICB9IGVs
c2UgewotICAgICAgICBBU1NFUlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4
IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRp
dmVJbmRleDsKLSAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4IC0g
dGV4dC0+ZXh0cmFTaXplIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRleHQtPmNodW5r
TmF0aXZlU3RhcnQgPCB0ZXh0LT5iKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dCA9IHRleHQtPmI7Ci0gICAgfQotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRp
dmVMaW1pdCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIGxl
bmd0aCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCBy
YW5nZS4KLSAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkpOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsK
LSAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAg
dGV4dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3RoOwotICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250
ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtO
YXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtM
ZW5ndGgpKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3Qg
bmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtD
b250ZW50cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNo
dW5rQ29udGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0g
ICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0
aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5h
dGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBB
U1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2Fy
ZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAg
IEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRp
dmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVT
RUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZl
SW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsK
LSAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xl
bmd0aCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNo
dW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVk
IGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3Ro
LgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkg
OiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250
ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJ
bmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJU
KCF0ZXh0LT5jaHVua0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4
dHJhKTsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIq
Pih0ZXh0LT5xKTsKLSAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0
KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMg
VVRleHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBj
b25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0g
ICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1
cyk7Ci19Ci0KLXN0YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVu
Z3RoKFVUZXh0KiB0ZXh0KQotewotICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQot
c3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBp
bnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+Y29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0g
dVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgodGV4dCk7Ci0gICAgVUJvb2wgaXNB
Y2Nlc3NpYmxlOwotICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwg
bmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKLSAgICAg
ICAgcmV0dXJuIGlzQWNjZXNzaWJsZTsKLSAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGlu
SW5kZXgobmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRl
eHQgY3VycmVudENvbnRleHQgPSB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRl
eHQodGV4dCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJv
dmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3
Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3
Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQg
PT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4
dExhdGluMUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4
LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRleHRMYXRpbjFDb250
ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVM
ZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9
PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKLSAgICAgICAgdGV4dExhdGlu
MUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRp
dmVMZW5ndGgsIGZvcndhcmQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGlj
IGludDMyX3QgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwg
aW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAg
Ly8gSW4gdGhlIHByZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25s
eSB3aXRoIElDVSBmdW5jdGlvbnMKLSAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJh
Y3Qgb3BlcmF0aW9uLgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICplcnJvckNvZGUg
PSBVX1VOU1VQUE9SVEVEX0VSUk9SOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCB1
VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNv
bnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0
UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9y
Q29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUo
KnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgo
KSkpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0
aEJ1ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAg
ICBpZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFBy
b3ZpZGVyKHRleHQsICZ0ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3Ro
LCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYzlkNWQyODRiZWMwYTgxYjNmODdhYWM2ODNiNDhlMzQ4MGU1MjRlOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4x
X2gKLSNkZWZpbmUgVVRleHRQcm92aWRlckxhdGluMV9oCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0
ZXh0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvTENoYXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jb25zdCBpbnQgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkgPSAxNjsKLQotc3Ry
dWN0IFVUZXh0V2l0aEJ1ZmZlciB7Ci0gICAgVVRleHQgdGV4dDsKLSAgICBVQ2hhciBidWZmZXJb
VVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHldOwotfTsKLQotVVRleHQqIG9wZW5MYXRpbjFV
VGV4dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciog
c3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci1VVGV4dCogb3Bl
bkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhC
dWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIq
IHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVz
KTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlckxh
dGluMV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyVVRGMTYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRl
eHRQcm92aWRlclVURjE2LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhYWM0
OGM4MTUxY2UwMTI1MzZhOGM0YjE1YWFlZGI4NDg2YjBjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRl
clVURjE2LmgiCi0KLSNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotLy8gVVRGMTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1
VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBV
RXJyb3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZl
TGVuZ3RoKFVUZXh0Kik7Ci1zdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2Vz
cyhVVGV4dCosIGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250
ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90
LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2Uo
VVRleHQqKTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRl
eHRBd2FyZUZ1bmNzID0gewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLAotICAgIDAs
Ci0gICAgMCwKLSAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCi0gICAgdVRleHRVVEYx
NkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCwKLSAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNj
ZXNzLAotICAgIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0g
ICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgdVRleHRVVEYxNkNv
bnRleHRBd2FyZUNsb3NlLAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRy
Ci19OwotCi1zdGF0aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRl
eHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICgh
dGV4dC0+Y2h1bmtDb250ZW50cykKLSAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0
OjpOb0NvbnRleHQ7Ci0gICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/
IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250
ZXh0OjpQcmlvckNvbnRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBp
bnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+
Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5wKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZv
cndhcmQgPyBuYXRpdmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsK
LSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2
ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtO
YXRpdmVTdGFydCA9IHRleHQtPmI7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2
ZUxlbmd0aDsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2Vs
bCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAg
QVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAg
ICB0ZXh0LT5jaHVua0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+
bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zm
c2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3Vy
ZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRz
IGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQg
PSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/
IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRl
eHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3Ro
LCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0
ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMg
PSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnApOwotICAgIHRleHRVVEYxNkNvbnRl
eHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3Zl
SW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3Qg
bmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnEpOwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0
ZXh0LT5iIDogbmF0aXZlSW5kZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRp
dmVMZW5ndGgsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUlu
ZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJk
ID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5n
dGgpOwotICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0
aXZlTGltaXQgPSB0ZXh0LT5iOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAg
ICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50
NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAg
Ly8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0
IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNl
dCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVu
a09mZnNldCA9IHN0ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVu
Z3RoKTsKLX0KLQotc3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9Qcmlv
ckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZl
TGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50
cyB8fCB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIHRleHQtPmNodW5rQ29u
dGVudHMgPSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRVVEYx
NkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZl
TGVuZ3RoLCBmb3J3YXJkKTsKLX0KLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3
YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBk
ZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRl
c3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50
NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQotewot
ICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0VVRG
MTZDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVC
b29sIGZvcndhcmQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jb250ZXh0KQotICAgICAgICByZXR1cm4g
RkFMU0U7Ci0gICAgaW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJl
TmF0aXZlTGVuZ3RoKHRleHQpOwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodVRl
eHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQsIGlzQWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7
Ci0gICAgbmF0aXZlSW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRp
dmVMZW5ndGgpOwotICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4
dFVURjE2Q29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVVRleHRQcm92
aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVy
Q29udGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4
dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6
OlByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUlu
UHJpbWFyeUNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblBy
aW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAg
ICB9IGVsc2UgaWYgKG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlD
b250ZXh0KQotICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250
ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJp
b3JDb250ZXh0KTsKLSAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNv
bnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfQot
ICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3
YXJlRXh0cmFjdChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVy
cm9yQ29kZSogZXJyb3JDb2RlKQotewotICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRo
aXMgdGV4dCBwcm92aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCi0gICAgLy8g
dGhhdCBkbyBub3QgcGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVU
ZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCog
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNo
YXIqIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBp
bnQgcHJpb3JDb250ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVf
RkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwg
bGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKSkgewotICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9S
OwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQs
IDAsIHN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NF
UlQoIXRleHQpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplQ29u
dGV4dEF3YXJlVVRleHRQcm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3Ms
IHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAg
cmV0dXJuIHRleHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YjQ3ZGQ3MzRiYWE3MzA4MDM0M2UwNTgwNWQ3MmUw
MjNhN2E5ZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKKysr
IC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFBy
b3ZpZGVyVVRGMTZfaAotI2RlZmluZSBVVGV4dFByb3ZpZGVyVVRGMTZfaAotCi0jaW5jbHVkZSA8
dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVUZXh0KiBvcGVuVVRG
MTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25l
ZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5n
dGgsIFVFcnJvckNvZGUqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VVRleHRQcm92aWRlclVURjE2X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggYjg2MGEzNTI5MmMzNTFiNDNiNjk0Nzg4MTVm
ZGRhMWMxYjI2ZDJiOC4uZDhlZTU5OGM3NDM4YjU3MjBjZWVlOTgxN2RlZjNlYWJhOTU1Zjk4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJp
ZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJp
ZXMubW0KQEAgLTI2LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGV4
dEJvdW5kYXJpZXMuaCIKIAotI2ltcG9ydCAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKLSNpbXBvcnQg
IlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9u
L0NGU3RyaW5nVG9rZW5pemVyLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
ICNpbXBvcnQgPHVuaWNvZGUvdWJyay5oPgpAQCAtMzYsNiArMzQsOCBAQAogI2ltcG9ydCA8dW5p
Y29kZS91dHlwZXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmg+CiAjaW1w
b3J0IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWU1Mzk3NmZiMWQ1ZDcyYmNhNzQ2NzM2YjY4MzcxNTA2YWE4ZDY0Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25z
dCBpbnQgbWF4TG9jYWxlU3RyaW5nTGVuZ3RoID0gMzI7Ci0KLXN0YXRpYyBpbmxpbmUgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKLXsKLSAgICBSZXRh
aW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0Nv
cHlWYWx1ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwKLSAgICAgICAga0NGUHJlZmVy
ZW5jZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVy
ZW5jZXNBbnlIb3N0KSk7Ci0gICAgaWYgKCFsb2NhbGUgfHwgQ0ZHZXRUeXBlSUQobG9jYWxlLmdl
dCgpKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGxvY2FsZS5nZXQoKSk7Ci19Ci0KLXN0
YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCi17Ci0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlc0FycmF5ID0gYWRvcHRDRihDRkxvY2Fs
ZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7Ci0gICAgaWYgKCFsYW5ndWFnZXNBcnJheSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2Vz
QXJyYXkuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzQXJyYXku
Z2V0KCksIDApKTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0TG9jYWxlKENGU3RyaW5nUmVmIGxvY2Fs
ZSwgY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAg
ICAvLyBFbXB0eSBzdHJpbmcgbWVhbnMgInJvb3QgbG9jYWxlIiwgYW5kIHRoYXQgaXMgd2hhdCB3
ZSB1c2UgaWYgd2UgY2FuJ3QgZ2V0IGEgcHJlZmVyZW5jZS4KLSAgICBsb2NhbGVTdHJpbmdCdWZm
ZXJbMF0gPSAwOwotICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZTdHJp
bmdHZXRDU3RyaW5nKGxvY2FsZSwgbG9jYWxlU3RyaW5nQnVmZmVyLCBtYXhMb2NhbGVTdHJpbmdM
ZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nQVNDSUkpOwotfQotCi1zdGF0aWMgdm9pZCBnZXRTZWFy
Y2hMb2NhbGUoY2hhciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkK
LXsKLSAgICBnZXRMb2NhbGUodG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkuZ2V0KCksIGxvY2FsZVN0
cmluZ0J1ZmZlcik7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17
Ci0gICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0
aF07Ci0gICAgc3RhdGljIGJvb2wgZ290U2VhcmNoTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFn
b3RTZWFyY2hMb2NhbGUpIHsKLSAgICAgICAgZ2V0U2VhcmNoTG9jYWxlKGxvY2FsZVN0cmluZ0J1
ZmZlcik7Ci0gICAgICAgIGdvdFNlYXJjaExvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVy
biBsb2NhbGVTdHJpbmdCdWZmZXI7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldFRleHRCcmVha0xvY2Fs
ZShjaGFyIGxvY2FsZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQotewotICAg
IC8vIElmIHRoZXJlIGlzIG5vIHRleHQgYnJlYWsgbG9jYWxlLCB1c2UgdGhlIHRvcCBsYW5ndWFn
ZSBwcmVmZXJlbmNlLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlID0gdGV4dEJy
ZWFrTG9jYWxlUHJlZmVyZW5jZSgpOwotICAgIGlmIChsb2NhbGUpIHsKLSAgICAgICAgaWYgKFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2Fub25pY2FsTG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNy
ZWF0ZUNhbm9uaWNhbExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbG9jYWxlLmdldCgpKSkpCi0gICAgICAgICAgICBsb2NhbGUgPSBjYW5vbmljYWxMb2Nh
bGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIGxvY2FsZSA9IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgp
OwotICAgIGdldExvY2FsZShsb2NhbGUuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0K
LWNvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNo
YXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGlj
IGJvb2wgZ290VGV4dEJyZWFrTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RUZXh0QnJlYWtM
b2NhbGUpIHsKLSAgICAgICAgZ2V0VGV4dEJyZWFrTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7
Ci0gICAgICAgIGdvdFRleHRCcmVha0xvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBs
b2NhbGVTdHJpbmdCdWZmZXI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VVdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTdlMTcwNWVmNTRiOTM5
MjE0ZGExODQ4MGRiN2EzMmMzMmM5MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvcklu
dGVybmFsSUNVLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVu
dFNlYXJjaExvY2FsZUlEKCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9j
YWxlLgotICAgIHJldHVybiAiIjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xv
Y2FsZUlEKCkKLXsKLSAgICAvLyBVc2luZyBlbl9VU19QT1NJWCBub3cgc28gd29yZCBzZWxlY3Rp
b24gaW4gYWRkcmVzcyBmaWVsZCB3b3JrcyBhcyBleHBlY3RlZCBhcyBiZWZvcmUgKGRvdWJsZS1j
bGlja2luZwotICAgIC8vIGluIGEgVVJMIHNlbGVjdHMgYSB3b3JkIGRlbGltaXRlZCBieSBwZXJp
b2RzIHJhdGhlciB0aGFuIHNlbGVjdGluZyB0aGUgZW50aXJlIFVSTCkuCi0gICAgLy8gSG93ZXZl
ciwgdGhpcyBpcyBub3QgZW50aXJlbHkgY29ycmVjdCAtIHdlIHNob3VsZCBob25vciB0aGUgc3lz
dGVtIGxvY2FsZSBpbiB0aGUgbm9ybWFsIGNhc2UuCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJv
YmxlbS82Nzg2NzAzPiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUgZm9yIHRleHQgYnJlYWtpbmcK
LSAgICByZXR1cm4gImVuX1VTX1BPU0lYIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZTM1NDYwMzE5NTAzMjU4Y2YyOWY3NDNhNWI4NDEwZmYy
NGU5ZWViNy4uMmVkNWI1YTk1ZWVjM2MwNTBjZTFiZDQ5ZGZhMDQ1YjYwNjcxMzFmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5o
IgogCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggOGI0ZWMzZjhlZWI5MzJjMWM3ZGM1ZGUxNjY5ZjA4YzQw
YmEwNmVjYi4uMmE1YWQ1ZDQ1MDk0MjU3NzZiOWFjMDQwMDAzNmZjNzYwMWI2ZTA5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgImJy
ZWFrX2xpbmVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBiYWNj
NWMyNTNhYzNlN2M5NWQ1YzZmYTlmMzYxNzU1MjQ0NWE4OTUyLi5kNjNlNjA4OWNkZTQwMzdjNTVl
NWYxYzhjNjIyODFlOGFjYTYyYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmgKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0TGluZUJveGVzLmgiCiAj
aW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRl
ICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRl
eHRGcmFnbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKaW5kZXggYzc5MDZjMTdkYzhlMDE0ZWQwNTBm
OTVmY2IwMWNjODZiNTEwMWQ2NC4uMTA3N2JjYmJmMTYwOTU1NGJjZWJiNzc0NThmMjgwODVmZjYy
NmFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91
dEZsb3dDb250ZW50cy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJicmVha19saW5lcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvYnJlYWtfbGluZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xp
bmVzLmNwcAppbmRleCAwNzU3NmJiYzhiZDRjZmY2ZjUzYWIzNGIwYzEzNjVhM2Y4NDRhOGNhLi5l
NGI5NTM2ZmQxYmVkZjFjZTM2M2Q2NjAxMWQ1MTIzNTkwZWY4MTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9icmVha19saW5lcy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJicmVha19saW5lcy5oIgogCi0jaW5jbHVkZSAiVGV4dEJyZWFr
SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAppbmRleCA5ZTA0ZDFlNDI4Y2EyNjA4
MzVhYmViZjk1ZWVjNjQzODliZmVlNGQ2Li5hMjk0NjEyOWNiYTZlYjkxNmRhYjllNTFhODBlY2Jl
OWUxN2ZiMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGlu
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaApAQCAtMjIs
OSArMjIsOSBAQAogI2lmbmRlZiBicmVha19saW5lc19oCiAjZGVmaW5lIGJyZWFrX2xpbmVzX2gK
IAotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuaAppbmRleCAyNzc0ZjI2ODU2MTE5ODNkZjVjMzQ4MzllZGU3MDQ2ZGVk
MjZhM2ZkLi5jODlmZTE3Y2NkMDY5YTY1Y2UxM2Q4MWFjN2UxYTNjODlmNTE4YzdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKQEAgLTI4LDggKzI4LDgg
QEAKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAj
aW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283252</attachid>
            <date>2016-07-09 01:55:56 -0700</date>
            <delta_ts>2016-07-10 10:15:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159594-20160709015519.patch</filename>
            <type>text/plain</type>
            <size>364183</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLmFmOTRjZDdkYWVlN2QzZmY4ZmRjYWQ0OWRjMGE1MThlOTBhNDJi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDE2LTA3LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBicmVha2luZyBpdGVyYXRvciBj
b2RlIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgZ2l2aW5nIFN0cmluZ1ZpZXcgYSBHcmFwaGVt
ZUNsdXN0ZXJzIGl0ZXJhdG9yLgorICAgICAgICBTdWNoIGFuIGludGVyYXRvciBuZWVkcyB0byBi
ZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygb3VyIGJyZWFraW5nIGl0ZXJhdG9yCisgICAgICAgIGNv
ZGUuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpY3UvdW5pY29kZS91YnJrLmg6IEFkZGVkLgorICAgICAgICAqIGljdS91bmljb2RlL3V0ZXh0
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pY3UvdW5pY29kZS91dGV4dC5oLgorICAg
ICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAg
ICogd3RmL1RpbnlMUlVDYWNoZS5oOgorICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJh
dG9yUG9vbElDVS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
aW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaC4KKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0
b3JQb29sOjpMaW5lQnJlYWtJdGVyYXRvclBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJ
dGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOgorICAgICAgICAoV1RGOjpMaW5lQnJlYWtJdGVyYXRv
clBvb2w6Om1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3JkKToKKyAgICAgICAgKFdURjo6TGluZUJy
ZWFrSXRlcmF0b3JQb29sOjp0YWtlKToKKyAgICAgICAgKFdURjo6TGluZUJyZWFrSXRlcmF0b3JQ
b29sOjpwdXQpOgorICAgICAgICAqIHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
Y3BwLgorICAgICAgICAoV1RGOjppbml0aWFsaXplSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMpOgorICAgICAgICAoV1RGOjpzZXRUZXh0Rm9ySXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpzZXRDb250ZXh0QXdhcmVUZXh0Rm9ySXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjp3b3JkQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OnNlbnRlbmNl
QnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6OmN1cnNvck1vdmVtZW50SXRlcmF0b3IpOgor
ICAgICAgICAoV1RGOjphY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpy
ZWxlYXNlTGluZUJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjptYXBMaW5lSXRlcmF0b3JN
b2RlVG9SdWxlcyk6CisgICAgICAgIChXVEY6OmlzQ0pLTG9jYWxlKToKKyAgICAgICAgKFdURjo6
b3BlbkxpbmVCcmVha0l0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6Y2xvc2VMaW5lQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OmNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcik6CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZpcnN0KToKKyAgICAgICAgKFdURjo6dGV4
dEJyZWFrTGFzdCk6CisgICAgICAgIChXVEY6OnRleHRCcmVha05leHQpOgorICAgICAgICAoV1RG
Ojp0ZXh0QnJlYWtQcmV2aW91cyk6CisgICAgICAgIChXVEY6OnRleHRCcmVha1ByZWNlZGluZyk6
CisgICAgICAgIChXVEY6OnRleHRCcmVha0ZvbGxvd2luZyk6CisgICAgICAgIChXVEY6OnRleHRC
cmVha0N1cnJlbnQpOgorICAgICAgICAoV1RGOjppc1RleHRCcmVhayk6CisgICAgICAgIChXVEY6
OmlzV29yZFRleHRCcmVhayk6CisgICAgICAgIChXVEY6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOgor
ICAgICAgICAoV1RGOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAgICAg
KiB3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oLgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6fkxhenlMaW5lQnJlYWtJdGVyYXRvcik6CisgICAgICAg
IChXVEY6OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6c3RyaW5nKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjppc0xvb3NlQ0pLTW9kZSk6CisgICAgICAgIChXVEY6OkxhenlM
aW5lQnJlYWtJdGVyYXRvcjo6bGFzdENoYXJhY3Rlcik6CisgICAgICAgIChXVEY6OkxhenlMaW5l
QnJlYWtJdGVyYXRvcjo6c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdURjo6TGF6
eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpMYXp5
TGluZUJyZWFrSXRlcmF0b3I6OnVwZGF0ZVByaW9yQ29udGV4dCk6CisgICAgICAgIChXVEY6Okxh
enlMaW5lQnJlYWtJdGVyYXRvcjo6cmVzZXRQcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6CisgICAgICAgIChXVEY6
OkxhenlMaW5lQnJlYWtJdGVyYXRvcjo6Z2V0KToKKyAgICAgICAgKFdURjo6TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yOjpyZXNldFN0cmluZ0FuZFJlbGVhc2VJdGVyYXRvcik6CisgICAgICAgIChXVEY6
Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJh
dG9yKik6CisgICAgICAgICogd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvckludGVybmFsSUNVLmguCisgICAgICAgICogd3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4dC9ndGsvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4
dFByb3ZpZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXIuY3BwLgorICAgICAgICAoV1RGOjpmaXhQb2ludGVyKToKKyAgICAg
ICAgKFdURjo6dVRleHRDbG9uZUltcGwpOgorICAgICAgICAqIHd0Zi90ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmguCisgICAgICAgIChXVEY6OnVUZXh0UHJvdmlkZXJDb250ZXh0KToKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIpOgorICAgICAg
ICAoV1RGOjp1VGV4dEFjY2Vzc1BpbkluZGV4KToKKyAgICAgICAgKFdURjo6dVRleHRBY2Nlc3NJ
bkNodW5rT3JPdXRPZlJhbmdlKToKKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
ckxhdGluMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lj
dS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcC4KKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDbG9u
ZSk6CisgICAgICAgIChXVEY6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdU
Rjo6dVRleHRMYXRpbjFBY2Nlc3MpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUV4dHJhY3Qp
OgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlKToKKyAgICAgICAg
KFdURjo6dVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYpOgorICAgICAgICAoV1RGOjp1
VGV4dExhdGluMUNsb3NlKToKKyAgICAgICAgKFdURjo6b3BlbkxhdGluMVVUZXh0UHJvdmlkZXIp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQp
OgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRl
eHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5
Q29udGV4dCk6CisgICAgICAgIChXVEY6OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5Qcmlv
ckNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9Q
cmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25l
KToKKyAgICAgICAgKFdURjo6dVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOgor
ICAgICAgICAoV1RGOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUFjY2Vzcyk6CisgICAgICAgIChX
VEY6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6CisgICAgICAgIChXVEY6OnVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlQ2xvc2UpOgorICAgICAgICAoV1RGOjpvcGVuTGF0aW4xQ29udGV4
dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlk
ZXJMYXRpbjEuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuaC4KKyAgICAgICAgKiB3dGYvdGV4dC9pY3UvVVRleHRQcm92
aWRlclVURjE2LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAuCisgICAgICAgIChXVEY6OnRleHRVVEYxNkNvbnRl
eHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2Q29udGV4
dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOgorICAgICAgICAoV1RGOjp0ZXh0VVRGMTZDb250
ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KToKKyAgICAgICAgKFdURjo6dGV4dFVURjE2
Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQpOgorICAgICAgICAoV1RGOjp1VGV4dFVU
RjE2Q29udGV4dEF3YXJlQ2xvbmUpOgorICAgICAgICAoV1RGOjp1VGV4dFVURjE2Q29udGV4dEF3
YXJlTmF0aXZlTGVuZ3RoKToKKyAgICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUFj
Y2Vzcyk6CisgICAgICAgIChXVEY6OnVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0KToKKyAg
ICAgICAgKFdURjo6dVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKToKKyAgICAgICAgKFdURjo6
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6CisgICAgICAgICogd3RmL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmguCisgICAgICAgICogd3RmL3RleHQv
bWFjL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
TWFjLm1tLgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKToKKyAgICAg
ICAgKFdURjo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKToKKyAgICAgICAgKFdURjo6Z2V0TG9jYWxl
KToKKyAgICAgICAgKFdURjo6Z2V0U2VhcmNoTG9jYWxlKToKKyAgICAgICAgKFdURjo6Y3VycmVu
dFNlYXJjaExvY2FsZUlEKToKKyAgICAgICAgKFdURjo6Z2V0VGV4dEJyZWFrTG9jYWxlKToKKyAg
ICAgICAgKFdURjo6Y3VycmVudFRleHRCcmVha0xvY2FsZUlEKToKKyAgICAgICAgKiB3dGYvdGV4
dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVV2luLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOgorCiAyMDE2LTA3LTA4
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjAyNzk5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwOTRlNzRiMGM0NDRi
YTQ4MjBhYTJhM2FlNjAzNzFkZGY1MWZlMmEuLjFmMGE3MjQwOTFkZGMwODQyOGU3Mjk0ZDk1MzEw
OTdiZGFlODIxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTQgQEAKKzIwMTYtMDctMDkgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGJy
ZWFraW5nIGl0ZXJhdG9yIGNvZGUgdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBnaXZpbmcgU3Ry
aW5nVmlldyBhIEdyYXBoZW1lQ2x1c3RlcnMgaXRlcmF0b3IuCisgICAgICAgIFN1Y2ggYW4gaW50
ZXJhdG9yIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIG9uIHRvcCBvZiBvdXIgYnJlYWtpbmcgaXRl
cmF0b3IKKyAgICAgICAgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVy
ZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwOgorICAgICAgICAqIGh0bWwvVGV4dElucHV0VHlwZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdURjo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFs
dWVGb3JLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3Jl
YXRlVmFsdWVGb3JLZXkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVy
YXRvclBvb2w6OkxpbmVCcmVha0l0ZXJhdG9yUG9vbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2wpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29sOjptYWtlTG9jYWxlV2l0aEJyZWFrS2V5
d29yZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6
OnRha2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrSXRlcmF0b3JQb29s
OjpwdXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJvdW5kYXJpZXMu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmluaXRpYWxpemVJdGVyYXRvcldpdGhSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpzZXRUZXh0Rm9ySXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OndvcmRCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNlbnRl
bmNlQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJzb3JNb3Zl
bWVudEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFjcXVpcmVMaW5lQnJl
YWtJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTGluZUJyZWFr
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bWFwTGluZUl0ZXJhdG9yTW9k
ZVRvUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNDSktMb2NhbGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxpbmVCcmVha0l0ZXJhdG9yKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNsb3NlTGluZUJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4
dEJyZWFrRmlyc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFrTGFzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0QnJlYWtOZXh0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnRleHRCcmVha1ByZXZpb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRleHRCcmVha1ByZWNlZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0
ZXh0QnJlYWtGb2xsb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dEJyZWFr
Q3VycmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1RleHRCcmVhayk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjppc1dvcmRUZXh0QnJlYWspOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6bnVtR3JhcGhlbWVDbHVzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXp5TGluZUJyZWFrSXRlcmF0b3I6OkxhenlMaW5lQnJlYWtJdGVyYXRvcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6On5MYXp5TGluZUJyZWFrSXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9y
OjpzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJh
dG9yOjppc0xvb3NlQ0pLTW9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXp5TGlu
ZUJyZWFrSXRlcmF0b3I6Omxhc3RDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZWNvbmRUb0xhc3RDaGFyYWN0ZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjpzZXRQcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVCcmVha0l0ZXJhdG9yOjp1
cGRhdGVQcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF6eUxpbmVC
cmVha0l0ZXJhdG9yOjpyZXNldFByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnByaW9yQ29udGV4dExlbmd0aCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OmdldCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I6OnJlc2V0U3RyaW5nQW5k
UmVsZWFzZUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3I6Om9wZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yKik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRTZWFyY2hMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaXhQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0Q2xv
bmVJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dFByb3ZpZGVyQ29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplQ29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dEFjY2Vzc1BpbkluZGV4KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0QWNjZXNzSW5DaHVua09yT3V0T2ZSYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNsb25lKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQWNjZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExh
dGluMU1hcE9mZnNldFRvTmF0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0
TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnVUZXh0TGF0aW4xQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlbkxhdGlu
MVVUZXh0UHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMUNv
bnRleHRBd2FyZUdldEN1cnJlbnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRleHRMYXRpbjFDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29u
dGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0TGF0aW4xQ29udGV4dEF3YXJl
TW92ZUluUHJpb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRp
bjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9yQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0TGF0aW4xQ29udGV4dEF3YXJlRXh0cmFjdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3NlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5MYXRpbjFDb250ZXh0QXdhcmVVVGV4dFBy
b3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlR2V0
Q3VycmVudENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29u
dGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2Q29udGV4dEF3YXJlU3dp
dGNoVG9QcmlvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dVRleHRVVEYx
NkNvbnRleHRBd2FyZUNsb25lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnVUZXh0VVRG
MTZDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
dVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
Ojp1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjp1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcik6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmdldExvY2FsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRTZWFyY2hM
b2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldFRleHRCcmVha0xvY2FsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFNlYXJjaExvY2FsZUlEKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvYnJlYWtfbGluZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oOgorCiAyMDE2LTA3LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgYWRvcHROb2RlKCkgY2hhbmdlcyBjc3MgY2xhc3MgdG8gbG93ZXJjYXNlIGZvciBkb2N1
bWVudCBsb2FkZWQgd2l0aCBYSFIgcmVzcG9uc2VUeXBlID0gImRvY3VtZW50IgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDM0ZjY2ZTMzZTljY2Q4Yzk1Mzdm
NzU3MGVmMmE4MmIwN2VjM2QzMS4uNGJlNGZjMWRhNDRjYzlhMThmMjEyZTgyMGRiMzU4MGJjNmIy
OWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2
ICs4OSwxNSBAQAogCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJv
bHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2Vk
QnlTYWZhcmkubW0gKi87IH07CiAJCTFBRkRFNjQ4MTk1MjAxQzMwMEM0OEZGQSAvKiBUeXBlQ2Fz
dHNDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFG
REU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8qIFR5cGVDYXN0c0NGLmggKi87IH07CiAJCTFBRkRFNjUz
MTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFGREU2NTIxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFs
LmggKi87IH07CisJCTFDMTgxQzdGMUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4
MUM3RDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovOyB9OworCQkx
QzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMTgxQzdFMUQzMDc4REEwMEY1
RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oICovOyB9OworCQkxQzE4MUM4RjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRl
ci5jcHAgKi87IH07CisJCTFDMTgxQzkwMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
QTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5oICovOyB9OworCQkxQzE4MUM5MTFE
MzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QjFEMzA3QUI4MDBGNUZBMTYg
LyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi87IH07CisJCTFDMTgxQzkyMUQzMDdBQjgwMEY1
RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4QzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92
aWRlckxhdGluMS5oICovOyB9OworCQkxQzE4MUM5MzFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQ
cm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMTgxQzhEMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
ICovOyB9OworCQkxQzE4MUM5NDFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4MUM4
RTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlclVURjE2LmggKi87IH07CisJCTFDMTgx
Qzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxODFDOTUx
RDMwODAwQTAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gKi87
IH07CiAJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg4MTUyNTAy
REEwMDU2OEQxQiAvKiBXZWJDb3JlVGhyZWFkLmNwcCAqLzsgfTsKIAkJMUZBNDdDOEIxNTI1MDJE
QTAwNTY4RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGQTQ3Qzg5MTUyNTAyREEwMDU2OEQxQiAvKiBXZWJDb3JlVGhy
ZWFkLmggKi87IH07CiAJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5oICovOyB9OwpAQCAtNDE0LDYgKzQyMywxNyBAQAogCQkxQUNBREQ4MjE4ODQ0ODAxMDBEOEI3
MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZBIC8q
IFR5cGVDYXN0c0NGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVDYXN0
c0NGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRkRFNjUyMTk1M0IyM0QwMEM0
OEZGQSAvKiBPcHRpb25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRp
b25hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM3RDFEMzA3OERBMDBG
NUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEJyZWFrSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODExRDMwNzk3QzAwRjVGQTE2IC8qIExp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lQnJlYWtJdGVyYXRv
clBvb2xJQ1UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDODIxRDMwNzlB
QzAwRjVGQTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxQzE4MUM4OTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMxODFDOEExRDMwN0FCODAwRjVGQTE2IC8qIFVU
ZXh0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92
aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4QjFEMzA3QUI4MDBG
NUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMxODFDOEMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRp
bjEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGlu
MS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzE4MUM4RDFEMzA3QUI4MDBGNUZB
MTYgLyogVVRleHRQcm92aWRlclVURjE2LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMTgxQzhFMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRleHRQcm92aWRlclVURjE2Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMTgxQzk1MUQzMDgwMEEwMEY1RkExNiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbTsgcGF0
aCA9IG1hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRkE0N0M4ODE1MjUwMkRBMDA1NjhEMUIgLyogV2ViQ29yZVRocmVh
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlVGhyZWFk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUZBNDdDODkxNTI1MDJEQTAwNTY4
RDFCIC8qIFdlYkNvcmVUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29yZVRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODgsNiArNzA4LDE5IEBACiAJCQluYW1lID0gTGli
cmFyaWVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMxODFDODgxRDMw
N0FCODAwRjVGQTE2IC8qIGljdSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUMxODFDODkxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXIuY3Bw
ICovLAorCQkJCTFDMTgxQzhBMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmggKi8s
CisJCQkJMUMxODFDOEIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3Bw
ICovLAorCQkJCTFDMTgxQzhDMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyTGF0aW4x
LmggKi8sCisJCQkJMUMxODFDOEQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYx
Ni5jcHAgKi8sCisJCQkJMUMxODFDOEUxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJV
VEYxNi5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpY3U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQkxRkE0N0M4NzE1MjUwMkRBMDA1NjhEMUIgLyogaW9zICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc1MSw2ICs3ODQsNyBAQAogCQlB
NUJBMTVGMTE4MjQzMzlGMDBBODJFNjkgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzE4MUM5NTFEMzA4MDBBMDBGNUZBMTYgLyogVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLywKIAkJCQlBNUJBMTVGNDE4MjQzNDgwMDBB
ODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSAqLywKIAkJCQlBNUJBMTVGMjE4MjQzM0E5MDBBODJF
NjkgLyogU3RyaW5nTWFjLm1tICovLAogCQkJCTkzOTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBT
dHJpbmdWaWV3T2JqQy5tbSAqLywKQEAgLTEwNDMsNiArMTA3Nyw3IEBACiAJCUE4QTQ3MzFCMTUx
QTgyNUIwMDQxMjNGRiAvKiB0ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzE4MUM4ODFEMzA3QUI4MDBGNUZBMTYgLyogaWN1ICovLAogCQkJCUE1
QkExNUY2MTgyNDM1OUUwMEE4MkU2OSAvKiBjZiAqLywKIAkJCQlBNUJBMTVGMTE4MjQzMzlGMDBB
ODJFNjkgLyogbWFjICovLAogCQkJCUE4QTQ3MzFDMTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUZh
c3RQYXRoLmggKi8sCkBAIC0xMDc5LDYgKzExMTQsMTAgQEAKIAkJCQk3MEVDQTYwQzFCMDI0MjY4
MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLywKIAkJCQlBOEE0NzMyRDE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMyRTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGU3RyaW5nLmggKi8sCisJCQkJMUMxODFDN0QxRDMwNzhEQTAwRjVGQTE2IC8qIFRl
eHRCcmVha0l0ZXJhdG9yLmNwcCAqLywKKwkJCQkxQzE4MUM3RTFEMzA3OERBMDBGNUZBMTYgLyog
VGV4dEJyZWFrSXRlcmF0b3IuaCAqLywKKwkJCQkxQzE4MUM4MTFEMzA3OTdDMDBGNUZBMTYgLyog
TGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8sCisJCQkJMUMxODFDODIxRDMwNzlBQzAwRjVG
QTE2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjQ3LDYgKzEyODYsNyBA
QAogCQkJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDMxNTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hDb3VudGVk
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyRDE1MUE4MjVCMDA0MTIzRkYgLyogSGFz
aGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzE4MUM5MDFEMzA3QUI4MDBGNUZBMTYgLyogVVRl
eHRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRDQxNTFBODI1QjAwNDEyM0ZG
IC8qIEhhc2hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Q1MTUxQTgyNUIw
MDQxMjNGRiAvKiBIYXNoSXRlcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNENjE1
MUE4MjVCMDA0MTIzRkYgLyogSGFzaE1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjYzLDYgKzEz
MDMsNyBAQAogCQkJCTdDREQ3RkZBMTg2RDJBNTQwMDc0MzNDRCAvKiBJdGVyYXRvclJhbmdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0FDOTFBODE4OTQyRkM0MDAyNDQ5MzkgLyogTENoYXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MERBMDg1MTc5OUYwNEQwMDUyOUE5QiAvKiBMaXN0RHVtcC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTQxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJv
dmlkZXJVVEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTExNTFBODI1QjAwNDEyM0ZG
IC8qIExpc3RIYXNoU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUxNjQ2QjFCNkZGQzk2MDA0
MDBFN0MgLyogTG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEy
M0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjcyLDYgKzEzMTMsNyBAQAogCQkJ
CUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzNFQTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLywK
KwkJCQkxQzE4MUM4MDFEMzA3OERBMDBGNUZBMTYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3M0VCMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXNzYWdlUXVldWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRTE1MUE4MjVCMDA0MTIzRkYgLyog
TWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMyLDYgKzEzNzQsNyBA
QAogCQkJCUE3NDg3NDUzMTdBMEJEQUUwMEZBMDRDQiAvKiBTaXhDaGFyYWN0ZXJIYXNoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQyNjE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5k
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMxODFDOTIxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0
UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREFDRDNFMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQyOTE1MUE4MjVC
MDA0MTIzRkYgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0
NzQyQTE1MUE4MjVCMDA0MTIzRkYgLyogU3RkTGliRXh0cmFzLmggaW4gSGVhZGVycyAqLywKQEAg
LTE1MDIsNiArMTU0NSw3IEBACiAJCQkJQThBNDczOUExNTFBODI1QjAwNDEyM0ZGIC8qIENyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTU1NkY1
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3NDM5MTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTFDMTgxQzk2MUQzMDgwMEEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRv
ckludGVybmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczOUMxNTFBODI1QjAw
NDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3MzlFMTUx
QTgyNUIwMDQxMjNGRiAvKiBEYXRhTG9nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Ew
MTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MTUs
NiArMTU1OSw3IEBACiAJCQkJQThBNDczQzMxNTFBODI1QjAwNDEyM0ZGIC8qIEZhc3RNYWxsb2Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRENFRTIyMDExQ0VBNzU1MTAwMEMyMzk2IC8qIEJsb2Nr
T2JqQ0V4Y2VwdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM2MDE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzhG
MUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUExRDhCOUUxNzMxODc5ODAwMTQxREE0IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTI5LDYgKzE1NzQsNyBAQAogCQkJCUE4
QTQ3M0Y3MTUxQTgyNUIwMDQxMjNGRiAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4QTQ3M0Y5MTUxQTgyNUIwMDQxMjNGRiAvKiBPU1JhbmRvbVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQwMjE1MUE4MjVCMDA0MTIzRkYgLyogUGFnZUJsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzkzMUQzMDdBQjgwMEY1RkExNiAvKiBVVGV4
dFByb3ZpZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRjE5REMxQkIzMzRFQjAw
ODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgy
NEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0xNTU4LDYgKzE2MDQsOCBAQAogCQkJCTkzOTM0QkQ1MThBMUYxNjkwMEQwRDZBMSAv
KiBTdHJpbmdWaWV3Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MzRCRDMxOEExRThDMzAw
RDBENkExIC8qIFN0cmluZ1ZpZXdPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczQjcx
NTFBODI1QjAwNDEyM0ZGIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICovLAorCQkJCTFDMTgxQzdG
MUQzMDc4REEwMEY1RkExNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxQzE4MUM5MTFEMzA3QUI4MDBGNUZBMTYgLyogVVRleHRQcm92aWRlckxhdGluMS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDgxNTFBODI1QjAwNDEyM0ZGIC8q
IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NEExNTFBODI1QjAwNDEyM0ZGIC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJyay5oIGIvU291cmNlL1dURi9pY3Uv
dW5pY29kZS91YnJrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTljMGVmNjI3YjY3Mjc5Zjg2ZTQ2MDQ0YmYwZjI1
NzEwMmUwYzZjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdWJy
ay5oCkBAIC0wLDAgKzEsNTQxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHly
aWdodCAoQykgMTk5Ni0yMDEzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuCisqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioKKyovCisKKyNpZm5kZWYgVUJSS19ICisjZGVmaW5lIFVCUktfSAorCisjaW5jbHVk
ZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3Vsb2MuaCIKKyNpbmNsdWRl
ICJ1bmljb2RlL3V0ZXh0LmgiCisjaW5jbHVkZSAidW5pY29kZS9sb2NhbHBvaW50ZXIuaCIKKwor
LyoqCisgKiBBIHRleHQtYnJlYWsgaXRlcmF0b3IuCisgKiAgRm9yIHVzYWdlIGluIEMgcHJvZ3Jh
bXMuCisgKi8KKyNpZm5kZWYgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRPUgorIyAgIGRlZmlu
ZSBVQlJLX1RZUEVERUZfVUJSRUFLX0lURVJBVE9SCisgICAgLyoqCisgICAgICogIE9wYXF1ZSB0
eXBlIHJlcHJlc2VudGluZyBhbiBJQ1UgQnJlYWsgaXRlcmF0b3Igb2JqZWN0LgorICAgICAqICBA
c3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBVQnJlYWtJdGVyYXRv
ciBVQnJlYWtJdGVyYXRvcjsKKyNlbmRpZgorCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFU
SU9OCisKKyNpbmNsdWRlICJ1bmljb2RlL3BhcnNlZXJyLmgiCisKKy8qKgorICogXGZpbGUKKyAq
IFxicmllZiBDIEFQSTogQnJlYWtJdGVyYXRvcgorICoKKyAqIDxoMj4gQnJlYWtJdGVyYXRvciBD
IEFQSSA8L2gyPgorICoKKyAqIFRoZSBCcmVha0l0ZXJhdG9yIEMgQVBJIGRlZmluZXMgIG1ldGhv
ZHMgZm9yIGZpbmRpbmcgdGhlIGxvY2F0aW9uCisgKiBvZiBib3VuZGFyaWVzIGluIHRleHQuIFBv
aW50ZXIgdG8gYSBVQnJlYWtJdGVyYXRvciBtYWludGFpbiBhCisgKiBjdXJyZW50IHBvc2l0aW9u
IGFuZCBzY2FuIG92ZXIgdGV4dCByZXR1cm5pbmcgdGhlIGluZGV4IG9mIGNoYXJhY3RlcnMKKyAq
IHdoZXJlIGJvdW5kYXJpZXMgb2NjdXIuCisgKiA8cD4KKyAqIExpbmUgYm91bmRhcnkgYW5hbHlz
aXMgZGV0ZXJtaW5lcyB3aGVyZSBhIHRleHQgc3RyaW5nIGNhbiBiZSBicm9rZW4KKyAqIHdoZW4g
bGluZS13cmFwcGluZy4gVGhlIG1lY2hhbmlzbSBjb3JyZWN0bHkgaGFuZGxlcyBwdW5jdHVhdGlv
biBhbmQKKyAqIGh5cGhlbmF0ZWQgd29yZHMuCisgKiA8cD4KKyAqIFNlbnRlbmNlIGJvdW5kYXJ5
IGFuYWx5c2lzIGFsbG93cyBzZWxlY3Rpb24gd2l0aCBjb3JyZWN0CisgKiBpbnRlcnByZXRhdGlv
biBvZiBwZXJpb2RzIHdpdGhpbiBudW1iZXJzIGFuZCBhYmJyZXZpYXRpb25zLCBhbmQKKyAqIHRy
YWlsaW5nIHB1bmN0dWF0aW9uIG1hcmtzIHN1Y2ggYXMgcXVvdGF0aW9uIG1hcmtzIGFuZCBwYXJl
bnRoZXNlcy4KKyAqIDxwPgorICogV29yZCBib3VuZGFyeSBhbmFseXNpcyBpcyB1c2VkIGJ5IHNl
YXJjaCBhbmQgcmVwbGFjZSBmdW5jdGlvbnMsIGFzCisgKiB3ZWxsIGFzIHdpdGhpbiB0ZXh0IGVk
aXRpbmcgYXBwbGljYXRpb25zIHRoYXQgYWxsb3cgdGhlIHVzZXIgdG8KKyAqIHNlbGVjdCB3b3Jk
cyB3aXRoIGEgZG91YmxlIGNsaWNrLiBXb3JkIHNlbGVjdGlvbiBwcm92aWRlcyBjb3JyZWN0Cisg
KiBpbnRlcnByZXRhdGlvbiBvZiBwdW5jdHVhdGlvbiBtYXJrcyB3aXRoaW4gYW5kIGZvbGxvd2lu
ZworICogd29yZHMuIENoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSB3b3JkLCBzdWNo
IGFzIHN5bWJvbHMgb3IKKyAqIHB1bmN0dWF0aW9uIG1hcmtzLCBoYXZlIHdvcmQtYnJlYWtzIG9u
IGJvdGggc2lkZXMuCisgKiA8cD4KKyAqIENoYXJhY3RlciBib3VuZGFyeSBhbmFseXNpcyBpZGVu
dGlmaWVzIHRoZSBib3VuZGFyaWVzIG9mCisgKiAiRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlcnMi
LCB3aGljaCBhcmUgZ3JvdXBpbmdzIG9mIGNvZGVwb2ludHMKKyAqIHRoYXQgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgY2hhcmFjdGVyLWxpa2UgdW5pdHMgZm9yIG1hbnkgdGV4dCBvcGVyYXRpb25zLgor
ICogUGxlYXNlIHNlZSBVbmljb2RlIFN0YW5kYXJkIEFubmV4ICMyOSwgVW5pY29kZSBUZXh0IFNl
Z21lbnRhdGlvbiwKKyAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjI5LyBmb3Ig
YWRkaXRpb25hbCBpbmZvcm1hdGlvbiAKKyAqIG9uIGdyYXBoZW1lIGNsdXN0ZXJzIGFuZCBndWlk
ZWxpbmVzIG9uIHRoZWlyIHVzZS4KKyAqIDxwPgorICogVGl0bGUgYm91bmRhcnkgYW5hbHlzaXMg
bG9jYXRlcyBhbGwgcG9zaXRpb25zLAorICogdHlwaWNhbGx5IHN0YXJ0cyBvZiB3b3JkcywgdGhh
dCBzaG91bGQgYmUgc2V0IHRvIFRpdGxlIENhc2UKKyAqIHdoZW4gdGl0bGUgY2FzaW5nIHRoZSB0
ZXh0LgorICogPHA+CisgKiBUaGUgdGV4dCBib3VuZGFyeSBwb3NpdGlvbnMgYXJlIGZvdW5kIGFj
Y29yZGluZyB0byB0aGUgcnVsZXMKKyAqIGRlc2NyaWJlZCBpbiBVbmljb2RlIFN0YW5kYXJkIEFu
bmV4ICMyOSwgVGV4dCBCb3VuZGFyaWVzLCBhbmQKKyAqIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXgg
IzE0LCBMaW5lIEJyZWFraW5nIFByb3BlcnRpZXMuICBUaGVzZQorICogYXJlIGF2YWlsYWJsZSBh
dCBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIxNC8gYW5kCisgKiBodHRwOi8vd3d3
LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8uCisgKiA8cD4KKyAqIEluIGFkZGl0aW9uIHRvIHRo
ZSBwbGFpbiBDIEFQSSBkZWZpbmVkIGluIHRoaXMgaGVhZGVyIGZpbGUsIGFuCisgKiBvYmplY3Qg
b3JpZW50ZWQgQysrIEFQSSB3aXRoIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyBkZWZpbmVk
IGluIHRoZQorICogZmlsZSBicmtpdGVyLmguCisgKiA8cD4KKyAqIENvZGUgc25pcHBldHMgaWxs
dXN0cmF0aW5nIHRoZSB1c2Ugb2YgdGhlIEJyZWFrIEl0ZXJhdG9yIEFQSXMKKyAqIGFyZSBhdmFp
bGFibGUgaW4gdGhlIElDVSBVc2VyIEd1aWRlLAorICogaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy91
c2VyZ3VpZGUvYm91bmRhcnlBbmFseXNpcy5odG1sCisgKiBhbmQgaW4gdGhlIHNhbXBsZSBwcm9n
cmFtIGljdS9zb3VyY2Uvc2FtcGxlcy9icmVhay9icmVhay5jcHAKKyAqLworCisvKiogVGhlIHBv
c3NpYmxlIHR5cGVzIG9mIHRleHQgYm91bmRhcmllcy4gIEBzdGFibGUgSUNVIDIuMCAqLwordHlw
ZWRlZiBlbnVtIFVCcmVha0l0ZXJhdG9yVHlwZSB7CisgIC8qKiBDaGFyYWN0ZXIgYnJlYWtzICBA
c3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19DSEFSQUNURVIgPSAwLAorICAvKiogV29yZCBicmVh
a3MgQHN0YWJsZSBJQ1UgMi4wICovCisgIFVCUktfV09SRCA9IDEsCisgIC8qKiBMaW5lIGJyZWFr
cyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19MSU5FID0gMiwKKyAgLyoqIFNlbnRlbmNlIGJy
ZWFrcyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgVUJSS19TRU5URU5DRSA9IDMsCisKKyNpZm5kZWYg
VV9ISURFX0RFUFJFQ0FURURfQVBJCisgIC8qKgorICAgKiBUaXRsZSBDYXNlIGJyZWFrcworICAg
KiBUaGUgaXRlcmF0b3IgY3JlYXRlZCB1c2luZyB0aGlzIHR5cGUgbG9jYXRlcyB0aXRsZSBib3Vu
ZGFyaWVzIGFzIGRlc2NyaWJlZCBmb3IKKyAgICogVW5pY29kZSAzLjIgb25seS4gRm9yIFVuaWNv
ZGUgNC4wIGFuZCBhYm92ZSB0aXRsZSBib3VuZGFyeSBpdGVyYXRpb24sCisgICAqIHBsZWFzZSB1
c2UgV29yZCBCb3VuZGFyeSBpdGVyYXRvci4KKyAgICoKKyAgICogQGRlcHJlY2F0ZWQgSUNVIDIu
OCBVc2UgdGhlIHdvcmQgYnJlYWsgaXRlcmF0b3IgZm9yIHRpdGxlY2FzaW5nIGZvciBVbmljb2Rl
IDQgYW5kIGxhdGVyLgorICAgKi8KKyAgVUJSS19USVRMRSA9IDQsCisjZW5kaWYgLyogVV9ISURF
X0RFUFJFQ0FURURfQVBJICovCisgIFVCUktfQ09VTlQgPSA1Cit9IFVCcmVha0l0ZXJhdG9yVHlw
ZTsKKworLyoqIFZhbHVlIGluZGljYXRpbmcgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4g
cmV0dXJuZWQuCisgKiAgQHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVUJSS19ET05FICgo
aW50MzJfdCkgLTEpCisKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRoZSB3b3JkIGJy
ZWFrIHRhZ3MgcmV0dXJuZWQgYnkKKyAqICBnZXRSdWxlU3RhdHVzKCkuICBBIHJhbmdlIG9mIHZh
bHVlcyBpcyBkZWZpbmVkIGZvciBlYWNoIGNhdGVnb3J5IG9mCisgKiAgd29yZCwgdG8gYWxsb3cg
Zm9yIGZ1cnRoZXIgc3ViZGl2aXNpb25zIG9mIGEgY2F0ZWdvcnkgaW4gZnV0dXJlIHJlbGVhc2Vz
LgorICogIEFwcGxpY2F0aW9ucyBzaG91bGQgY2hlY2sgZm9yIHRhZyB2YWx1ZXMgZmFsbGluZyB3
aXRoaW4gdGhlIHJhbmdlLCByYXRoZXIKKyAqICB0aGFuIGZvciBzaW5nbGUgaW5kaXZpZHVhbCB2
YWx1ZXMuCisgKiAgQHN0YWJsZSBJQ1UgMi4yCisqLwordHlwZWRlZiBlbnVtIFVXb3JkQnJlYWsg
eworICAgIC8qKiBUYWcgdmFsdWUgZm9yICJ3b3JkcyIgdGhhdCBkbyBub3QgZml0IGludG8gYW55
IG9mIG90aGVyIGNhdGVnb3JpZXMuCisgICAgICogIEluY2x1ZGVzIHNwYWNlcyBhbmQgbW9zdCBw
dW5jdHVhdGlvbi4gKi8KKyAgICBVQlJLX1dPUkRfTk9ORSAgICAgICAgICAgPSAwLAorICAgIC8q
KiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3IgdW5jYXRlZ29yaXplZCB3b3Jkcy4gKi8KKyAgICBV
QlJLX1dPUkRfTk9ORV9MSU1JVCAgICAgPSAxMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29y
ZHMgdGhhdCBhcHBlYXIgdG8gYmUgbnVtYmVycywgbG93ZXIgbGltaXQuICAgICovCisgICAgVUJS
S19XT1JEX05VTUJFUiAgICAgICAgID0gMTAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRz
IHRoYXQgYXBwZWFyIHRvIGJlIG51bWJlcnMsIHVwcGVyIGxpbWl0LiAgICAqLworICAgIFVCUktf
V09SRF9OVU1CRVJfTElNSVQgICA9IDIwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyB0
aGF0IGNvbnRhaW4gbGV0dGVycywgZXhjbHVkaW5nCisgICAgICogIGhpcmFnYW5hLCBrYXRha2Fu
YSBvciBpZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzLCBsb3dlciBsaW1pdC4gICAgKi8KKyAgICBVQlJL
X1dPUkRfTEVUVEVSICAgICAgICAgPSAyMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMg
Y29udGFpbmluZyBsZXR0ZXJzLCB1cHBlciBsaW1pdCAgKi8KKyAgICBVQlJLX1dPUkRfTEVUVEVS
X0xJTUlUICAgPSAzMDAsCisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igd29yZHMgY29udGFpbmluZyBr
YW5hIGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0tBTkEgICAgICAg
ICAgID0gMzAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcga2FuYSBj
aGFyYWN0ZXJzLCB1cHBlciBsaW1pdCAqLworICAgIFVCUktfV09SRF9LQU5BX0xJTUlUICAgICA9
IDQwMCwKKyAgICAvKiogVGFnIHZhbHVlIGZvciB3b3JkcyBjb250YWluaW5nIGlkZW9ncmFwaGlj
IGNoYXJhY3RlcnMsIGxvd2VyIGxpbWl0ICovCisgICAgVUJSS19XT1JEX0lERU8gICAgICAgICAg
ID0gNDAwLAorICAgIC8qKiBUYWcgdmFsdWUgZm9yIHdvcmRzIGNvbnRhaW5pbmcgaWRlb2dyYXBo
aWMgY2hhcmFjdGVycywgdXBwZXIgbGltaXQgKi8KKyAgICBVQlJLX1dPUkRfSURFT19MSU1JVCAg
ICAgPSA1MDAKK30gVVdvcmRCcmVhazsKKworLyoqCisgKiAgRW51bSBjb25zdGFudHMgZm9yIHRo
ZSBsaW5lIGJyZWFrIHRhZ3MgcmV0dXJuZWQgYnkgZ2V0UnVsZVN0YXR1cygpLgorICogIEEgcmFu
Z2Ugb2YgdmFsdWVzIGlzIGRlZmluZWQgZm9yIGVhY2ggY2F0ZWdvcnkgb2YKKyAqICB3b3JkLCB0
byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2YgYSBjYXRlZ29yeSBpbiBmdXR1cmUg
cmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBjaGVjayBmb3IgdGFnIHZhbHVlcyBm
YWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICogIHRoYW4gZm9yIHNpbmdsZSBpbmRp
dmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgKKyovCit0eXBlZGVmIGVudW0gVUxp
bmVCcmVha1RhZyB7CisgICAgLyoqIFRhZyB2YWx1ZSBmb3Igc29mdCBsaW5lIGJyZWFrcywgcG9z
aXRpb25zIGF0IHdoaWNoIGEgbGluZSBicmVhaworICAgICAgKiAgaXMgYWNjZXB0YWJsZSBidXQg
bm90IHJlcXVpcmVkICAgICAgICAgICAgICAgICovCisgICAgVUJSS19MSU5FX1NPRlQgICAgICAg
ICAgICA9IDAsCisgICAgLyoqIFVwcGVyIGJvdW5kIGZvciBzb2Z0IGxpbmUgYnJlYWtzLiAgICAg
ICAgICAgICAgKi8KKyAgICBVQlJLX0xJTkVfU09GVF9MSU1JVCAgICAgID0gMTAwLAorICAgIC8q
KiBUYWcgdmFsdWUgZm9yIGEgaGFyZCwgb3IgbWFuZGF0b3J5IGxpbmUgYnJlYWsgICovCisgICAg
VUJSS19MSU5FX0hBUkQgICAgICAgICAgICA9IDEwMCwKKyAgICAvKiogVXBwZXIgYm91bmQgZm9y
IGhhcmQgbGluZSBicmVha3MuICAgICAgICAgICAgICAqLworICAgIFVCUktfTElORV9IQVJEX0xJ
TUlUICAgICAgPSAyMDAKK30gVUxpbmVCcmVha1RhZzsKKworCisKKy8qKgorICogIEVudW0gY29u
c3RhbnRzIGZvciB0aGUgc2VudGVuY2UgYnJlYWsgdGFncyByZXR1cm5lZCBieSBnZXRSdWxlU3Rh
dHVzKCkuCisgKiAgQSByYW5nZSBvZiB2YWx1ZXMgaXMgZGVmaW5lZCBmb3IgZWFjaCBjYXRlZ29y
eSBvZgorICogIHNlbnRlbmNlLCB0byBhbGxvdyBmb3IgZnVydGhlciBzdWJkaXZpc2lvbnMgb2Yg
YSBjYXRlZ29yeSBpbiBmdXR1cmUgcmVsZWFzZXMuCisgKiAgQXBwbGljYXRpb25zIHNob3VsZCBj
aGVjayBmb3IgdGFnIHZhbHVlcyBmYWxsaW5nIHdpdGhpbiB0aGUgcmFuZ2UsIHJhdGhlcgorICog
IHRoYW4gZm9yIHNpbmdsZSBpbmRpdmlkdWFsIHZhbHVlcy4KKyAqICBAc3RhYmxlIElDVSAyLjgK
KyovCit0eXBlZGVmIGVudW0gVVNlbnRlbmNlQnJlYWtUYWcgeworICAgIC8qKiBUYWcgdmFsdWUg
Zm9yIGZvciBzZW50ZW5jZXMgIGVuZGluZyB3aXRoIGEgc2VudGVuY2UgdGVybWluYXRvcgorICAg
ICAgKiAoJy4nLCAnPycsICchJywgZXRjLikgY2hhcmFjdGVyLCBwb3NzaWJseSBmb2xsb3dlZCBi
eSBhCisgICAgICAqIGhhcmQgc2VwYXJhdG9yIChDUiwgTEYsIFBTLCBldGMuKQorICAgICAgKi8K
KyAgICBVQlJLX1NFTlRFTkNFX1RFUk0gICAgICAgPSAwLAorICAgIC8qKiBVcHBlciBib3VuZCBm
b3IgdGFncyBmb3Igc2VudGVuY2VzIGVuZGVkIGJ5IHNlbnRlbmNlIHRlcm1pbmF0b3JzLiAgICAq
LworICAgIFVCUktfU0VOVEVOQ0VfVEVSTV9MSU1JVCA9IDEwMCwKKyAgICAvKiogVGFnIHZhbHVl
IGZvciBmb3Igc2VudGVuY2VzIHRoYXQgZG8gbm90IGNvbnRhaW4gYW4gZW5kaW5nCisgICAgICAq
IHNlbnRlbmNlIHRlcm1pbmF0b3IgKCcuJywgJz8nLCAnIScsIGV0Yy4pIGNoYXJhY3RlciwgYnV0
CisgICAgICAqIGFyZSBlbmRlZCBvbmx5IGJ5IGEgaGFyZCBzZXBhcmF0b3IgKENSLCBMRiwgUFMs
IGV0Yy4pIG9yIGVuZCBvZiBpbnB1dC4KKyAgICAgICovCisgICAgVUJSS19TRU5URU5DRV9TRVAg
ICAgICAgID0gMTAwLAorICAgIC8qKiBVcHBlciBib3VuZCBmb3IgdGFncyBmb3Igc2VudGVuY2Vz
IGVuZGVkIGJ5IGEgc2VwYXJhdG9yLiAgICAgICAgICAgICAgKi8KKyAgICBVQlJLX1NFTlRFTkNF
X1NFUF9MSU1JVCAgPSAyMDAKKyAgICAvKiogVGFnIHZhbHVlIGZvciBhIGhhcmQsIG9yIG1hbmRh
dG9yeSBsaW5lIGJyZWFrICAqLworfSBVU2VudGVuY2VCcmVha1RhZzsKKworCisvKioKKyAqIE9w
ZW4gYSBuZXcgVUJyZWFrSXRlcmF0b3IgZm9yIGxvY2F0aW5nIHRleHQgYm91bmRhcmllcyBmb3Ig
YSBzcGVjaWZpZWQgbG9jYWxlLgorICogQSBVQnJlYWtJdGVyYXRvciBtYXkgYmUgdXNlZCBmb3Ig
ZGV0ZWN0aW5nIGNoYXJhY3RlciwgbGluZSwgd29yZCwKKyAqIGFuZCBzZW50ZW5jZSBicmVha3Mg
aW4gdGV4dC4KKyAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIFVCcmVha0l0ZXJhdG9yIHRvIG9w
ZW46IG9uZSBvZiBVQlJLX0NIQVJBQ1RFUiwgVUJSS19XT1JELAorICogVUJSS19MSU5FLCBVQlJL
X1NFTlRFTkNFCisgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgc3BlY2lmeWluZyB0aGUgdGV4
dC1icmVha2luZyBjb252ZW50aW9ucy4KKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIGl0
ZXJhdGVkIG92ZXIuCisgKiBAcGFyYW0gdGV4dExlbmd0aCBUaGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgaW4gdGV4dCwgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBB
IFVFcnJvckNvZGUgdG8gcmVjZWl2ZSBhbnkgZXJyb3JzLgorICogQHJldHVybiBBIFVCcmVha0l0
ZXJhdG9yIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAqIEBzZWUgdWJya19vcGVuUnVsZXMK
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJdGVyYXRvciogVV9FWFBP
UlQyCit1YnJrX29wZW4oVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUsCisgICAgICBjb25zdCBjaGFy
ICpsb2NhbGUsCisgICAgICBjb25zdCBVQ2hhciAqdGV4dCwKKyAgICAgIGludDMyX3QgdGV4dExl
bmd0aCwKKyAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3BlbiBhIG5ldyBV
QnJlYWtJdGVyYXRvciBmb3IgbG9jYXRpbmcgdGV4dCBib3VuZGFyaWVzIHVzaW5nIHNwZWNpZmll
ZCBicmVha2luZyBydWxlcy4KKyAqIFRoZSBydWxlIHN5bnRheCBpcyAuLi4gKFRCRCkKKyAqIEBw
YXJhbSBydWxlcyBBIHNldCBvZiBydWxlcyBzcGVjaWZ5aW5nIHRoZSB0ZXh0IGJyZWFraW5nIGNv
bnZlbnRpb25zLgorICogQHBhcmFtIHJ1bGVzTGVuZ3RoIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyBpbiBydWxlcywgb3IgLTEgaWYgbnVsbC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHRleHQgVGhl
IHRleHQgdG8gYmUgaXRlcmF0ZWQgb3Zlci4gIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIHVi
cmtfc2V0VGV4dCgpIGlzCisgKiAgICAgICAgdXNlZCB0byBzcGVjaWZ5IHRoZSB0ZXh0IHRvIGJl
IGl0ZXJhdGVkLgorICogQHBhcmFtIHRleHRMZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJz
IGluIHRleHQsIG9yIC0xIGlmIG51bGwtdGVybWluYXRlZC4KKyAqIEBwYXJhbSBwYXJzZUVyciAg
IFJlY2VpdmVzIHBvc2l0aW9uIGFuZCBjb250ZXh0IGluZm9ybWF0aW9uIGZvciBhbnkgc3ludGF4
IGVycm9ycworICogICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQgd2hpbGUgcGFyc2luZyB0aGUg
cnVsZXMuCisgKiBAcGFyYW0gc3RhdHVzIEEgVUVycm9yQ29kZSB0byByZWNlaXZlIGFueSBlcnJv
cnMuCisgKiBAcmV0dXJuIEEgVUJyZWFrSXRlcmF0b3IgZm9yIHRoZSBzcGVjaWZpZWQgcnVsZXMu
CisgKiBAc2VlIHVicmtfb3BlbgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIFVC
cmVha0l0ZXJhdG9yKiBVX0VYUE9SVDIKK3Vicmtfb3BlblJ1bGVzKGNvbnN0IFVDaGFyICAgICAq
cnVsZXMsCisgICAgICAgICAgICAgICBpbnQzMl90ICAgICAgICAgcnVsZXNMZW5ndGgsCisgICAg
ICAgICAgICAgICBjb25zdCBVQ2hhciAgICAgKnRleHQsCisgICAgICAgICAgICAgICBpbnQzMl90
ICAgICAgICAgIHRleHRMZW5ndGgsCisgICAgICAgICAgICAgICBVUGFyc2VFcnJvciAgICAgKnBh
cnNlRXJyLAorICAgICAgICAgICAgICAgVUVycm9yQ29kZSAgICAgICpzdGF0dXMpOworCisvKioK
KyAqIFRocmVhZCBzYWZlIGNsb25pbmcgb3BlcmF0aW9uCisgKiBAcGFyYW0gYmkgaXRlcmF0b3Ig
dG8gYmUgY2xvbmVkCisgKiBAcGFyYW0gc3RhY2tCdWZmZXIgPGVtPkRlcHJlY2F0ZWQgZnVuY3Rp
b25hbGl0eSBhcyBvZiBJQ1UgNTIsIHVzZSBOVUxMLjwvZW0+PGJyPgorICogIHVzZXIgYWxsb2Nh
dGVkIHNwYWNlIGZvciB0aGUgbmV3IGNsb25lLiBJZiBOVUxMIG5ldyBtZW1vcnkgd2lsbCBiZSBh
bGxvY2F0ZWQuCisgKiAgSWYgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gsIG5ldyBtZW1vcnkg
d2lsbCBiZSBhbGxvY2F0ZWQuCisgKiAgQ2xpZW50cyBjYW4gdXNlIHRoZSBVX0JSS19TQUZFQ0xP
TkVfQlVGRkVSU0laRS4KKyAqIEBwYXJhbSBwQnVmZmVyU2l6ZSA8ZW0+RGVwcmVjYXRlZCBmdW5j
dGlvbmFsaXR5IGFzIG9mIElDVSA1MiwgdXNlIE5VTEwgb3IgMS48L2VtPjxicj4KKyAqICBwb2lu
dGVyIHRvIHNpemUgb2YgYWxsb2NhdGVkIHNwYWNlLgorICogIElmICpwQnVmZmVyU2l6ZSA9PSAw
LCBhIHN1ZmZpY2llbnQgc2l6ZSBmb3IgdXNlIGluIGNsb25pbmcgd2lsbAorICogIGJlIHJldHVy
bmVkICgncHJlLWZsaWdodGluZycpCisgKiAgSWYgKnBCdWZmZXJTaXplIGlzIG5vdCBlbm91Z2gg
Zm9yIGEgc3RhY2stYmFzZWQgc2FmZSBjbG9uZSwKKyAqICBuZXcgbWVtb3J5IHdpbGwgYmUgYWxs
b2NhdGVkLgorICogQHBhcmFtIHN0YXR1cyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBvcGVyYXRp
b24gd2VudCBvbiBzbW9vdGhseSBvciB0aGVyZSB3ZXJlIGVycm9ycworICogIEFuIGluZm9ybWF0
aW9uYWwgc3RhdHVzIHZhbHVlLCBVX1NBRkVDTE9ORV9BTExPQ0FURURfRVJST1IsIGlzIHVzZWQg
aWYgYW55IGFsbG9jYXRpb25zIHdlcmUgbmVjZXNzYXJ5LgorICogQHJldHVybiBwb2ludGVyIHRv
IHRoZSBuZXcgY2xvbmUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQnJlYWtJ
dGVyYXRvciAqIFVfRVhQT1JUMgordWJya19zYWZlQ2xvbmUoCisgICAgICAgICAgY29uc3QgVUJy
ZWFrSXRlcmF0b3IgKmJpLAorICAgICAgICAgIHZvaWQgKnN0YWNrQnVmZmVyLAorICAgICAgICAg
IGludDMyX3QgKnBCdWZmZXJTaXplLAorICAgICAgICAgIFVFcnJvckNvZGUgKnN0YXR1cyk7CisK
KyNpZm5kZWYgVV9ISURFX0RFUFJFQ0FURURfQVBJCisKKy8qKgorICAqIEEgcmVjb21tZW5kZWQg
c2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUgbWVtb3J5IGJ1ZmZlciB0byBiZSBwYXNzZWQgdG8gdWJy
a19zYXZlQ2xvbmUoKS4KKyAgKiBAZGVwcmVjYXRlZCBJQ1UgNTIuIERvIG5vdCByZWx5IG9uIHVi
cmtfc2FmZUNsb25lKCkgY2xvbmluZyBpbnRvIGFueSBwcm92aWRlZCBidWZmZXIuCisgICovCisj
ZGVmaW5lIFVfQlJLX1NBRkVDTE9ORV9CVUZGRVJTSVpFIDEKKworI2VuZGlmIC8qIFVfSElERV9E
RVBSRUNBVEVEX0FQSSAqLworCisvKioKKyogQ2xvc2UgYSBVQnJlYWtJdGVyYXRvci4KKyogT25j
ZSBjbG9zZWQsIGEgVUJyZWFrSXRlcmF0b3IgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorKiBAcGFy
YW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIGNsb3NlLgorICogQHN0YWJsZSBJQ1UgMi4wCisq
LworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VicmtfY2xvc2UoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworI2lmIFVfU0hPV19DUExVU1BMVVNfQVBJCisKK1VfTkFNRVNQQUNFX0JFR0lOCisKKy8q
KgorICogXGNsYXNzIExvY2FsVUJyZWFrSXRlcmF0b3JQb2ludGVyCisgKiAiU21hcnQgcG9pbnRl
ciIgY2xhc3MsIGNsb3NlcyBhIFVCcmVha0l0ZXJhdG9yIHZpYSB1YnJrX2Nsb3NlKCkuCisgKiBG
b3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFzZSBiYXNlIGNsYXNzLgorICoK
KyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2NhbFBvaW50ZXIKKyAqIEBzdGFi
bGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BPSU5URVIoTG9jYWxVQnJlYWtJ
dGVyYXRvclBvaW50ZXIsIFVCcmVha0l0ZXJhdG9yLCB1YnJrX2Nsb3NlKTsKKworVV9OQU1FU1BB
Q0VfRU5ECisKKyNlbmRpZgorCisvKioKKyAqIFNldHMgYW4gZXhpc3RpbmcgaXRlcmF0b3IgdG8g
cG9pbnQgdG8gYSBuZXcgcGllY2Ugb2YgdGV4dAorICogQHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0
byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIHNldAorICogQHBhcmFtIHRleHRM
ZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgdGV4dAorICogQHBhcmFtIHN0YXR1cyBUaGUgZXJyb3Ig
Y29kZQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1
YnJrX3NldFRleHQoVUJyZWFrSXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiAgICB0ZXh0LAorICAgICAgICAgICAgIGludDMyX3QgICAgICAgICB0ZXh0TGVuZ3RoLAorICAg
ICAgICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKy8qKgorICogU2V0cyBhbiBl
eGlzdGluZyBpdGVyYXRvciB0byBwb2ludCB0byBhIG5ldyBwaWVjZSBvZiB0ZXh0LgorICoKKyAq
IEFsbCBpbmRleCBwb3NpdGlvbnMgcmV0dXJuZWQgYnkgYnJlYWsgaXRlcmF0b3IgZnVuY3Rpb25z
IGFyZQorICogbmF0aXZlIGluZGljZXMgZnJvbSB0aGUgVVRleHQuIEZvciBleGFtcGxlLCB3aGVu
IGJyZWFraW5nIFVURi04CisgKiBlbmNvZGVkIHRleHQsIHRoZSBicmVhayBwb3NpdGlvbnMgcmV0
dXJuZWQgYnkgXHJlZiB1YnJrX25leHQsIFxyZWYgdWJya19wcmV2aW91cywgZXRjLgorICogd2ls
bCBiZSBVVEYtOCBzdHJpbmcgaW5kaWNlcywgbm90IFVURi0xNiBwb3NpdGlvbnMuCisgKgorICog
QHBhcmFtIGJpIFRoZSBpdGVyYXRvciB0byB1c2UKKyAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRv
IGJlIHNldC4KKyAqICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gbWFrZXMgYSBzaGFsbG93IGNs
b25lIG9mIHRoZSBzdXBwbGllZCBVVGV4dC4gIFRoaXMgbWVhbnMKKyAqICAgICAgICAgICAgIHRo
YXQgdGhlIGNhbGxlciBpcyBmcmVlIHRvIGltbWVkaWF0ZWx5IGNsb3NlIG9yIG90aGVyd2lzZSBy
ZXVzZSB0aGUKKyAqICAgICAgICAgICAgIFVUZXh0IHRoYXQgd2FzIHBhc3NlZCBhcyBhIHBhcmFt
ZXRlciwgYnV0IHRoYXQgdGhlIHVuZGVybHlpbmcgdGV4dCBpdHNlbGYKKyAqICAgICAgICAgICAg
IG11c3Qgbm90IGJlIGFsdGVyZWQgd2hpbGUgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGUgYnJlYWsg
aXRlcmF0b3IuCisgKiBAcGFyYW0gc3RhdHVzIFRoZSBlcnJvciBjb2RlCisgKiBAc3RhYmxlIElD
VSAzLjQKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3Vicmtfc2V0VVRleHQoVUJyZWFr
SXRlcmF0b3IqIGJpLAorICAgICAgICAgICAgIFVUZXh0KiAgICAgICAgICB0ZXh0LAorICAgICAg
ICAgICAgIFVFcnJvckNvZGUqICAgICBzdGF0dXMpOworCisKKworLyoqCisgKiBEZXRlcm1pbmUg
dGhlIG1vc3QgcmVjZW50bHktcmV0dXJuZWQgdGV4dCBib3VuZGFyeS4KKyAqCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBp
bmRleCBtb3N0IHJlY2VudGx5IHJldHVybmVkIGJ5IFxyZWYgdWJya19uZXh0LCBccmVmIHVicmtf
cHJldmlvdXMsCisgKiBccmVmIHVicmtfZmlyc3QsIG9yIFxyZWYgdWJya19sYXN0LgorICogQHN0
YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2N1cnJl
bnQoY29uc3QgVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVy
YXRvciB0byB0aGUgYm91bmRhcnkgZm9sbG93aW5nIHRoZSBjdXJyZW50IGJvdW5kYXJ5LgorICoK
KyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUg
Y2hhcmFjdGVyIGluZGV4IG9mIHRoZSBuZXh0IHRleHQgYm91bmRhcnksIG9yIFVCUktfRE9ORQor
ICogaWYgYWxsIHRleHQgYm91bmRhcmllcyBoYXZlIGJlZW4gcmV0dXJuZWQuCisgKiBAc2VlIHVi
cmtfcHJldmlvdXMKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVf
RVhQT1JUMgordWJya19uZXh0KFVCcmVha0l0ZXJhdG9yICpiaSk7CisKKy8qKgorICogU2V0IHRo
ZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgYm91bmRhcnkgcHJlY2VkaW5nIHRoZSBjdXJyZW50
IGJvdW5kYXJ5LgorICoKKyAqIEBwYXJhbSBiaSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgor
ICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBwcmVjZWRpbmcgdGV4dCBib3Vu
ZGFyeSwgb3IgVUJSS19ET05FCisgKiBpZiBhbGwgdGV4dCBib3VuZGFyaWVzIGhhdmUgYmVlbiBy
ZXR1cm5lZC4KKyAqIEBzZWUgdWJya19uZXh0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9T
VEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VicmtfcHJldmlvdXMoVUJyZWFrSXRlcmF0b3IgKmJp
KTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisgKiBUaGlzIGlz
IG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgaW5kZXggMCBvZiB0aGUgdGV4dC4KKyAqIEBwYXJhbSBi
aSBUaGUgYnJlYWsgaXRlcmF0b3IgdG8gdXNlLgorICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGlu
ZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAq
IEBzZWUgdWJya19sYXN0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3VicmtfZmlyc3QoVUJyZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBT
ZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRvIHRoZSBpbmRleCBpbW1lZGlhdGVseSA8RU0+YmV5
b25kPC9FTT4gdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGJlaW5nIHNjYW5uZWQuCisg
KiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbGFzdCBjaGFyYWN0ZXIuCisgKiBAcGFyYW0g
YmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBv
ZmZzZXQgaW1tZWRpYXRlbHkgPEVNPmJleW9uZDwvRU0+IHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0
aGUKKyAqIHRleHQgYmVpbmcgc2Nhbm5lZC4KKyAqIEBzZWUgdWJya19maXJzdAorICogQHN0YWJs
ZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJrX2xhc3QoVUJy
ZWFrSXRlcmF0b3IgKmJpKTsKKworLyoqCisgKiBTZXQgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIHRv
IHRoZSBmaXJzdCBib3VuZGFyeSBwcmVjZWRpbmcgdGhlIHNwZWNpZmllZCBvZmZzZXQuCisgKiBU
aGUgbmV3IHBvc2l0aW9uIGlzIGFsd2F5cyBzbWFsbGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RP
TkUuCisgKiBAcGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBv
ZmZzZXQgVGhlIG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQg
Ym91bmRhcnkgcHJlY2VkaW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX2Zv
bGxvd2luZworICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX3ByZWNlZGluZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMy
X3Qgb2Zmc2V0KTsKKworLyoqCisgKiBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byB0aGUgZmlyc3Qg
Ym91bmRhcnkgZm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgorICogVGhlIHZhbHVlIHJl
dHVybmVkIGlzIGFsd2F5cyBncmVhdGVyIHRoYW4gb2Zmc2V0LCBvciBVQlJLX0RPTkUuCisgKiBA
cGFyYW0gYmkgVGhlIGJyZWFrIGl0ZXJhdG9yIHRvIHVzZS4KKyAqIEBwYXJhbSBvZmZzZXQgVGhl
IG9mZnNldCB0byBiZWdpbiBzY2FubmluZy4KKyAqIEByZXR1cm4gVGhlIHRleHQgYm91bmRhcnkg
Zm9sbG93aW5nIG9mZnNldCwgb3IgVUJSS19ET05FLgorICogQHNlZSB1YnJrX3ByZWNlZGluZwor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1YnJr
X2ZvbGxvd2luZyhVQnJlYWtJdGVyYXRvciAqYmksCisgICAgICAgICAgIGludDMyX3Qgb2Zmc2V0
KTsKKworLyoqCisqIEdldCBhIGxvY2FsZSBmb3Igd2hpY2ggdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBpcyBhdmFpbGFibGUuCisqIEEgVUJyZWFrSXRlcmF0b3IgaW4gYSBsb2NhbGUgcmV0dXJu
ZWQgYnkgdGhpcyBmdW5jdGlvbiB3aWxsIHBlcmZvcm0gdGhlIGNvcnJlY3QKKyogdGV4dCBicmVh
a2luZyBmb3IgdGhlIGxvY2FsZS4KKyogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBvZiB0aGUgZGVz
aXJlZCBsb2NhbGUuCisqIEByZXR1cm4gQSBsb2NhbGUgZm9yIHdoaWNoIG51bWJlciB0ZXh0IGJy
ZWFraW5nIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgb3IgMCBpZiBub25lLgorKiBAc2VlIHVi
cmtfY291bnRBdmFpbGFibGUKKyogQHN0YWJsZSBJQ1UgMi4wCisqLworVV9TVEFCTEUgY29uc3Qg
Y2hhciogVV9FWFBPUlQyCit1YnJrX2dldEF2YWlsYWJsZShpbnQzMl90IGluZGV4KTsKKworLyoq
CisqIERldGVybWluZSBob3cgbWFueSBsb2NhbGVzIGhhdmUgdGV4dCBicmVha2luZyBpbmZvcm1h
dGlvbiBhdmFpbGFibGUuCisqIFRoaXMgZnVuY3Rpb24gaXMgbW9zdCB1c2VmdWwgYXMgZGV0ZXJt
aW5pbmcgdGhlIGxvb3AgZW5kaW5nIGNvbmRpdGlvbiBmb3IKKyogY2FsbHMgdG8gXHJlZiB1YnJr
X2dldEF2YWlsYWJsZS4KKyogQHJldHVybiBUaGUgbnVtYmVyIG9mIGxvY2FsZXMgZm9yIHdoaWNo
IHRleHQgYnJlYWtpbmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgorKiBAc2VlIHVicmtfZ2V0
QXZhaWxhYmxlCisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBP
UlQyCit1YnJrX2NvdW50QXZhaWxhYmxlKHZvaWQpOworCisKKy8qKgorKiBSZXR1cm5zIHRydWUg
aWYgdGhlIHNwZWNmaWVkIHBvc2l0aW9uIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uICBBcyBhIHNp
ZGUKKyogZWZmZWN0LCBsZWF2ZXMgdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBi
b3VuZGFyeSBwb3NpdGlvbiBhdAorKiBvciBhZnRlciAib2Zmc2V0Ii4KKyogQHBhcmFtIGJpIFRo
ZSBicmVhayBpdGVyYXRvciB0byB1c2UuCisqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCB0byBj
aGVjay4KKyogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24u
CisqIEBzdGFibGUgSUNVIDIuMAorKi8KK1VfU1RBQkxFICBVQm9vbCBVX0VYUE9SVDIKK3Vicmtf
aXNCb3VuZGFyeShVQnJlYWtJdGVyYXRvciAqYmksIGludDMyX3Qgb2Zmc2V0KTsKKworLyoqCisg
KiBSZXR1cm4gdGhlIHN0YXR1cyBmcm9tIHRoZSBicmVhayBydWxlIHRoYXQgZGV0ZXJtaW5lZCB0
aGUgbW9zdCByZWNlbnRseQorICogcmV0dXJuZWQgYnJlYWsgcG9zaXRpb24uICBUaGUgdmFsdWVz
IGFwcGVhciBpbiB0aGUgcnVsZSBzb3VyY2UKKyAqIHdpdGhpbiBicmFja2V0cywgezEyM30sIGZv
ciBleGFtcGxlLiAgRm9yIHJ1bGVzIHRoYXQgZG8gbm90IHNwZWNpZnkgYQorICogc3RhdHVzLCBh
IGRlZmF1bHQgdmFsdWUgb2YgMCBpcyByZXR1cm5lZC4KKyAqIDxwPgorICogRm9yIHdvcmQgYnJl
YWsgaXRlcmF0b3JzLCB0aGUgcG9zc2libGUgdmFsdWVzIGFyZSBkZWZpbmVkIGluIGVudW0gVVdv
cmRCcmVhay4KKyAqIEBzdGFibGUgSUNVIDIuMgorICovCitVX1NUQUJMRSAgaW50MzJfdCBVX0VY
UE9SVDIKK3VicmtfZ2V0UnVsZVN0YXR1cyhVQnJlYWtJdGVyYXRvciAqYmkpOworCisvKioKKyAq
IEdldCB0aGUgc3RhdHVzZXMgZnJvbSB0aGUgYnJlYWsgcnVsZXMgdGhhdCBkZXRlcm1pbmVkIHRo
ZSBtb3N0IHJlY2VudGx5CisgKiByZXR1cm5lZCBicmVhayBwb3NpdGlvbi4gIFRoZSB2YWx1ZXMg
YXBwZWFyIGluIHRoZSBydWxlIHNvdXJjZQorICogd2l0aGluIGJyYWNrZXRzLCB7MTIzfSwgZm9y
IGV4YW1wbGUuICBUaGUgZGVmYXVsdCBzdGF0dXMgdmFsdWUgZm9yIHJ1bGVzCisgKiB0aGF0IGRv
IG5vdCBleHBsaWNpdGx5IHByb3ZpZGUgb25lIGlzIHplcm8uCisgKiA8cD4KKyAqIEZvciB3b3Jk
IGJyZWFrIGl0ZXJhdG9ycywgdGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiBlbnVt
IFVXb3JkQnJlYWsuCisgKiBAcGFyYW0gYmkgICAgICAgIFRoZSBicmVhayBpdGVyYXRvciB0byB1
c2UKKyAqIEBwYXJhbSBmaWxsSW5WZWMgYW4gYXJyYXkgdG8gYmUgZmlsbGVkIGluIHdpdGggdGhl
IHN0YXR1cyB2YWx1ZXMuCisgKiBAcGFyYW0gY2FwYWNpdHkgIHRoZSBsZW5ndGggb2YgdGhlIHN1
cHBsaWVkIHZlY3Rvci4gIEEgbGVuZ3RoIG9mIHplcm8gY2F1c2VzCisgKiAgICAgICAgICAgICAg
ICAgIHRoZSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0dXMgdmFsdWVzLCBp
biB0aGUKKyAqICAgICAgICAgICAgICAgICAgbm9ybWFsIHdheSwgd2l0aG91dCBhdHRlbXRwaW5n
IHRvIHN0b3JlIGFueSB2YWx1ZXMuCisgKiBAcGFyYW0gc3RhdHVzICAgIHJlY2VpdmVzIGVycm9y
IGNvZGVzLgorICogQHJldHVybiAgICAgICAgICBUaGUgbnVtYmVyIG9mIHJ1bGUgc3RhdHVzIHZh
bHVlcyBmcm9tIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lZAorICogICAgICAgICAgICAgICAgICB0aGUg
bW9zdCByZWNlbnQgYm91bmRhcnkgcmV0dXJuZWQgYnkgdGhlIGJyZWFrIGl0ZXJhdG9yLgorICog
QHN0YWJsZSBJQ1UgMy4wCisgKi8KK1VfU1RBQkxFICBpbnQzMl90IFVfRVhQT1JUMgordWJya19n
ZXRSdWxlU3RhdHVzVmVjKFVCcmVha0l0ZXJhdG9yICpiaSwgaW50MzJfdCAqZmlsbEluVmVjLCBp
bnQzMl90IGNhcGFjaXR5LCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIFJldHVybiB0
aGUgbG9jYWxlIG9mIHRoZSBicmVhayBpdGVyYXRvci4gWW91IGNhbiBjaG9vc2UgYmV0d2VlbiB0
aGUgdmFsaWQgYW5kCisgKiB0aGUgYWN0dWFsIGxvY2FsZS4KKyAqIEBwYXJhbSBiaSBicmVhayBp
dGVyYXRvcgorICogQHBhcmFtIHR5cGUgbG9jYWxlIHR5cGUgKHZhbGlkIG9yIGFjdHVhbCkKKyAq
IEBwYXJhbSBzdGF0dXMgZXJyb3IgY29kZQorICogQHJldHVybiBsb2NhbGUgc3RyaW5nCisgKiBA
c3RhYmxlIElDVSAyLjgKKyAqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1YnJr
X2dldExvY2FsZUJ5VHlwZShjb25zdCBVQnJlYWtJdGVyYXRvciAqYmksIFVMb2NEYXRhTG9jYWxl
VHlwZSB0eXBlLCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisvKioKKyAgKiAgU2V0IHRoZSBzdWJq
ZWN0IHRleHQgc3RyaW5nIHVwb24gd2hpY2ggdGhlIGJyZWFrIGl0ZXJhdG9yIGlzIG9wZXJhdGlu
ZworICAqICB3aXRob3V0IGNoYW5naW5nIGFueSBvdGhlciBhc3BlY3Qgb2YgdGhlIHN0YXRlLgor
ICAqICBUaGUgbmV3IGFuZCBwcmV2aW91cyB0ZXh0IHN0cmluZ3MgbXVzdCBoYXZlIHRoZSBzYW1l
IGNvbnRlbnQuCisgICoKKyAgKiAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGlu
IGVudmlyb25tZW50cyB3aGVyZSBJQ1UgaXMgb3BlcmF0aW5nIG9uCisgICogIHN0cmluZ3MgdGhh
dCBtYXkgbW92ZSBhcm91bmQgaW4gbWVtb3J5LiAgSXQgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9y
IG5vdGlmeWluZworICAqICBJQ1UgdGhhdCB0aGUgc3RyaW5nIGhhcyBiZWVuIHJlbG9jYXRlZCwg
YW5kIHByb3ZpZGluZyBhIG5ldyBVVGV4dCB0byBhY2Nlc3MgdGhlCisgICogIHN0cmluZyBpbiBp
dHMgbmV3IHBvc2l0aW9uLgorICAqCisgICogIE5vdGUgdGhhdCB0aGUgYnJlYWsgaXRlcmF0b3Ig
bmV2ZXIgY29waWVzIHRoZSB1bmRlcmx5aW5nIHRleHQKKyAgKiAgb2YgYSBzdHJpbmcgYmVpbmcg
cHJvY2Vzc2VkLCBidXQgYWx3YXlzIG9wZXJhdGVzIGRpcmVjdGx5IG9uIHRoZSBvcmlnaW5hbCB0
ZXh0CisgICogIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLiBSZWZyZXNoaW5nIHNpbXBseSBkcm9wcyB0
aGUgcmVmZXJlbmNlcyB0byB0aGUgb2xkIHRleHQKKyAgKiAgYW5kIHJlcGxhY2VzIHRoZW0gd2l0
aCByZWZlcmVuY2VzIHRvIHRoZSBuZXcuCisgICoKKyAgKiAgQ2F1dGlvbjogIHRoaXMgZnVuY3Rp
b24gaXMgbm9ybWFsbHkgdXNlZCBvbmx5IGJ5IHZlcnkgc3BlY2lhbGl6ZWQKKyAgKiAgICAgICAg
ICAgIHN5c3RlbS1sZXZlbCBjb2RlLiAgIE9uZSBleGFtcGxlIHVzZSBjYXNlIGlzIHdpdGggZ2Fy
YmFnZSBjb2xsZWN0aW9uCisgICogICAgICAgICAgICB0aGF0IG1vdmVzIHRoZSB0ZXh0IGluIG1l
bW9yeS4KKyAgKgorICAqIEBwYXJhbSBiaSAgICAgICAgIFRoZSBicmVhayBpdGVyYXRvci4KKyAg
KiBAcGFyYW0gdGV4dCAgICAgICBUaGUgbmV3IChtb3ZlZCkgdGV4dCBzdHJpbmcuCisgICogQHBh
cmFtIHN0YXR1cyAgICAgUmVjZWl2ZXMgZXJyb3JzIGRldGVjdGVkIGJ5IHRoaXMgZnVuY3Rpb24u
CisgICoKKyAgKiBAc3RhYmxlIElDVSA0OQorICAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIK
K3VicmtfcmVmcmVzaFVUZXh0KFVCcmVha0l0ZXJhdG9yICpiaSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVVRleHQgICAgICAgICAgKnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVFcnJv
ckNvZGUgICAgICpzdGF0dXMpOworCisjZW5kaWYgLyogI2lmICFVQ09ORklHX05PX0JSRUFLX0lU
RVJBVElPTiAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUv
dXRleHQuaCBiL1NvdXJjZS9XVEYvaWN1L3VuaWNvZGUvdXRleHQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDMx
OTEzZDM1YjMxZTg3NzE5YzI2NDc5YWIyMjE1ZTY0ZmYzMzllCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi9pY3UvdW5pY29kZS91dGV4dC5oCkBAIC0wLDAgKzEsMTYwMCBAQAorLyoKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMiwgSW50
ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMu
ICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIGZp
bGUgbmFtZTogIHV0ZXh0LmgKKyogICBlbmNvZGluZzogICBVUy1BU0NJSQorKiAgIHRhYiBzaXpl
OiAgIDggKG5vdCB1c2VkKQorKiAgIGluZGVudGF0aW9uOjQKKyoKKyogICBjcmVhdGVkIG9uOiAy
MDA0b2N0MDYKKyogICBjcmVhdGVkIGJ5OiBNYXJrdXMgVy4gU2NoZXJlcgorKi8KKworI2lmbmRl
ZiBfX1VURVhUX0hfXworI2RlZmluZSBfX1VURVhUX0hfXworCisvKioKKyAqIFxmaWxlCisgKiBc
YnJpZWYgQyBBUEk6IEFic3RyYWN0IFVuaWNvZGUgVGV4dCBBUEkKKyAqCisgKiBUaGUgVGV4dCBB
Y2Nlc3MgQVBJIHByb3ZpZGVzIGEgbWVhbnMgdG8gYWxsb3cgdGV4dCB0aGF0IGlzIHN0b3JlZCBp
biBhbHRlcm5hdGl2ZQorICogZm9ybWF0cyB0byB3b3JrIHdpdGggSUNVIHNlcnZpY2VzLiAgSUNV
IG5vcm1hbGx5IG9wZXJhdGVzIG9uIHRleHQgdGhhdCBpcworICogc3RvcmVkIGluIFVURi0xNiBm
b3JtYXQsIGluIChVQ2hhciAqKSBhcnJheXMgZm9yIHRoZSBDIEFQSXMgb3IgYXMgdHlwZQorICog
VW5pY29kZVN0cmluZyBmb3IgQysrIEFQSXMuCisgKgorICogSUNVIFRleHQgQWNjZXNzIGFsbG93
cyBvdGhlciBmb3JtYXRzLCBzdWNoIGFzIFVURi04IG9yIG5vbi1jb250aWd1b3VzCisgKiBVVEYt
MTYgc3RyaW5ncywgdG8gYmUgcGxhY2VkIGluIGEgVVRleHQgd3JhcHBlciBhbmQgdGhlbiBwYXNz
ZWQgdG8gSUNVIHNlcnZpY2VzLgorICoKKyAqIFRoZXJlIGFyZSB0aHJlZSBnZW5lcmFsIGNsYXNz
ZXMgb2YgdXNhZ2UgZm9yIFVUZXh0OgorICoKKyAqICAgICBBcHBsaWNhdGlvbiBMZXZlbCBVc2Uu
ICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB1c2FnZSAtIGFwcGxpY2F0aW9ucyB3b3VsZAorICogICAg
IHVzZSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMgb24gdGhlaXIgaW5wdXQgdGV4
dCwgYW5kIHBhc3MKKyAqICAgICB0aGUgcmVzdWx0aW5nIFVUZXh0IHRvIHRoZSBkZXNpcmVkIElD
VSBzZXJ2aWNlLgorICoKKyAqICAgICBTZWNvbmQgaXMgdXNhZ2UgaW4gSUNVIFNlcnZpY2VzLCBz
dWNoIGFzIGJyZWFrIGl0ZXJhdGlvbiwgdGhhdCB3aWxsIG5lZWQgdG8KKyAqICAgICBvcGVyYXRl
IG9uIGlucHV0IHByZXNlbnRlZCB0byB0aGVtIGFzIGEgVVRleHQuICBUaGVzZSBpbXBsZW1lbnRh
dGlvbnMKKyAqICAgICB3aWxsIG5lZWQgdG8gdXNlIHRoZSBpdGVyYXRpb24gYW5kIHJlbGF0ZWQg
VVRleHQgZnVuY3Rpb25zIHRvIGdhaW4KKyAqICAgICBhY2Nlc3MgdG8gdGhlIGFjdHVhbCB0ZXh0
LgorICoKKyAqICAgICBUaGUgdGhpcmQgY2xhc3Mgb2YgVVRleHQgdXNlcnMgYXJlICJ0ZXh0IHBy
b3ZpZGVycy4iICBUaGVzZSBhcmUgdGhlCisgKiAgICAgVVRleHQgaW1wbGVtZW50YXRpb25zIGZv
ciB0aGUgdmFyaW91cyB0ZXh0IHN0b3JhZ2UgZm9ybWF0cy4gIEFuIGFwcGxpY2F0aW9uCisgKiAg
ICAgb3Igc3lzdGVtIHdpdGggYSB1bmlxdWUgdGV4dCBzdG9yYWdlIGZvcm1hdCBjYW4gaW1wbGVt
ZW50IGEgc2V0IG9mCisgKiAgICAgVVRleHQgcHJvdmlkZXIgZnVuY3Rpb25zIGZvciB0aGF0IGZv
cm1hdCwgd2hpY2ggd2lsbCB0aGVuIGFsbG93CisgKiAgICAgSUNVIHNlcnZpY2VzIHRvIG9wZXJh
dGUgb24gdGhhdCBmb3JtYXQuCisgKgorICoKKyAqIDxlbT5JdGVyYXRpbmcgb3ZlciB0ZXh0PC9l
bT4KKyAqCisgKiBIZXJlIGlzIHNhbXBsZSBjb2RlIGZvciBhIGZvcndhcmQgaXRlcmF0aW9uIG92
ZXIgdGhlIGNvbnRlbnRzIG9mIGEgVVRleHQKKyAqCisgKiBcY29kZQorICogICAgVUNoYXIzMiAg
YzsKKyAqICAgIFVUZXh0ICAgICp1dCA9IHdoYXRldmVyKCk7CisgKgorICogICAgZm9yIChjPXV0
ZXh0X25leHQzMkZyb20odXQsIDApOyBjPj0wOyBjPXV0ZXh0X25leHQzMih1dCkpIHsKKyAqICAg
ICAgIC8vIGRvIHdoYXRldmVyIHdpdGggdGhlIGNvZGVwb2ludCBjIGhlcmUuCisgKiAgICB9Cisg
KiBcZW5kY29kZQorICoKKyAqIEFuZCBoZXJlIGlzIHNpbWlsYXIgY29kZSB0byBpdGVyYXRlIGlu
IHRoZSByZXZlcnNlIGRpcmVjdGlvbiwgZnJvbSB0aGUgZW5kCisgKiBvZiB0aGUgdGV4dCB0b3dh
cmRzIHRoZSBiZWdpbm5pbmcuCisgKgorICogXGNvZGUKKyAqICAgIFVDaGFyMzIgIGM7CisgKiAg
ICBVVGV4dCAgICAqdXQgPSB3aGF0ZXZlcigpOworICogICAgaW50ICAgICAgdGV4dExlbmd0aCA9
IHV0ZXh0X25hdGl2ZUxlbmd0aCh1dCk7CisgKiAgICBmb3IgKGM9dXRleHRfcHJldmlvdXMzMkZy
b20odXQsIHRleHRMZW5ndGgpOyBjPj0wOyBjPXV0ZXh0X3ByZXZpb3VzMzIodXQpKSB7CisgKiAg
ICAgICAvLyBkbyB3aGF0ZXZlciB3aXRoIHRoZSBjb2RlcG9pbnQgYyBoZXJlLgorICogICAgfQor
ICogXGVuZGNvZGUKKyAqCisgKiA8ZW0+Q2hhcmFjdGVycyBhbmQgSW5kZXhpbmc8L2VtPgorICoK
KyAqIEluZGV4aW5nIGludG8gdGV4dCBieSBVVGV4dCBmdW5jdGlvbnMgaXMgbmVhcmx5IGFsd2F5
cyBpbiB0ZXJtcyBvZiB0aGUgbmF0aXZlCisgKiBpbmRleGluZyBvZiB0aGUgdW5kZXJseWluZyB0
ZXh0IHN0b3JhZ2UuICBUaGUgc3RvcmFnZSBmb3JtYXQgY291bGQgYmUgVVRGLTgKKyAqIG9yIFVU
Ri0zMiwgZm9yIGV4YW1wbGUuICBXaGVuIGNvZGluZyB0byB0aGUgVVRleHQgYWNjZXNzIEFQSSwg
bm8gYXNzdW1wdGlvbnMKKyAqIGNhbiBiZSBtYWRlIHJlZ2FyZGluZyB0aGUgc2l6ZSBvZiBjaGFy
YWN0ZXJzLCBvciBob3cgZmFyIGFuIGluZGV4CisgKiBtYXkgbW92ZSB3aGVuIGl0ZXJhdGluZyBi
ZXR3ZWVuIGNoYXJhY3RlcnMuCisgKgorICogQWxsIGluZGljZXMgc3VwcGxpZWQgdG8gVVRleHQg
ZnVuY3Rpb25zIGFyZSBwaW5uZWQgdG8gdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHRleHQuICBBbiBv
dXQtb2YtYm91bmRzIGluZGV4IGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGFuIGVycm9yLCBidXQg
aXMKKyAqIGFkanVzdGVkIHRvIGJlIGluIHRoZSByYW5nZSAgMCA8PSBpbmRleCA8PSBsZW5ndGgg
b2YgaW5wdXQgdGV4dC4KKyAqCisgKgorICogV2hlbiBhbiBpbmRleCBwb3NpdGlvbiBpcyByZXR1
cm5lZCBmcm9tIGEgVVRleHQgZnVuY3Rpb24sIGl0IHdpbGwgYmUKKyAqIGEgbmF0aXZlIGluZGV4
IHRvIHRoZSB1bmRlcmx5aW5nIHRleHQuICBJbiB0aGUgY2FzZSBvZiBtdWx0aS11bml0IGNoYXJh
Y3RlcnMsCisgKiBpdCB3aWxsICBhbHdheXMgcmVmZXIgdG8gdGhlIGZpcnN0IHBvc2l0aW9uIG9m
IHRoZSBjaGFyYWN0ZXIsCisgKiBuZXZlciB0byB0aGUgaW50ZXJpb3IuICBUaGlzIGlzIGVzc2Vu
dGlhbGx5IHRoZSBzYW1lIHRoaW5nIGFzIHNheWluZyB0aGF0CisgKiBhIHJldHVybmVkIGluZGV4
IHdpbGwgYWx3YXlzIHBvaW50IHRvIGEgYm91bmRhcnkgYmV0d2VlbiBjaGFyYWN0ZXJzLgorICoK
KyAqIFdoZW4gYSBuYXRpdmUgaW5kZXggaXMgc3VwcGxpZWQgdG8gYSBVVGV4dCBmdW5jdGlvbiwg
YWxsIGluZGljZXMgdGhhdAorICogcmVmZXIgdG8gYW55IHBhcnQgb2YgYSBtdWx0aS11bml0IGNo
YXJhY3RlciByZXByZXNlbnRhdGlvbiBhcmUgY29uc2lkZXJlZAorICogdG8gYmUgZXF1aXZhbGVu
dC4gIEluIHRoZSBjYXNlIG9mIG11bHRpLXVuaXQgY2hhcmFjdGVycywgYW4gaW5jb21pbmcgaW5k
ZXgKKyAqIHdpbGwgYmUgbG9naWNhbGx5IG5vcm1hbGl6ZWQgdG8gcmVmZXIgdG8gdGhlIHN0YXJ0
IG9mIHRoZSBjaGFyYWN0ZXIuCisgKiAKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHRlc3Qgd2hldGhl
ciBhIG5hdGl2ZSBpbmRleCBpcyBvbiBhIGNvZGUgcG9pbnQgYm91bmRhcnkKKyAqIGJ5IGRvaW5n
IGEgdXRleHRfc2V0TmF0aXZlSW5kZXgoKSBmb2xsb3dlZCBieSBhIHV0ZXh0X2dldE5hdGl2ZUlu
ZGV4KCkuCisgKiBJZiB0aGUgaW5kZXggaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLCBpdCB3YXMgb24g
YSBjb2RlIHBvaW50IGJvdW5kYXJ5LiAgSWYKKyAqIGFuIGFkanVzdGVkIGluZGV4IGlzIHJldHVy
bmVkLCB0aGUgb3JpZ2luYWwgaW5kZXggcmVmZXJyZWQgdG8gdGhlCisgKiBpbnRlcmlvciBvZiBh
IGNoYXJhY3Rlci4KKyAqCisgKiA8ZW0+Q29udmVudGlvbnMgZm9yIGNhbGxpbmcgVVRleHQgZnVu
Y3Rpb25zPC9lbT4KKyAqCisgKiBNb3N0IFVUZXh0IGFjY2VzcyBmdW5jdGlvbnMgaGF2ZSBhcyB0
aGVpciBmaXJzdCBwYXJhbWV0ZXIgYSAoVVRleHQgKikgcG9pbnRlciwKKyAqIHdoaWNoIHNwZWNp
ZmllcyB0aGUgVVRleHQgdG8gYmUgdXNlZC4gIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZQor
ICogcG9pbnRlciBtdXN0IHJlZmVyIHRvIGEgdmFsaWQsIG9wZW4gVVRleHQuICBBdHRlbXB0aW5n
IHRvCisgKiB1c2UgYSBjbG9zZWQgVVRleHQgb3IgcGFzc2luZyBhIE5VTEwgcG9pbnRlciBpcyBh
IHByb2dyYW1taW5nIGVycm9yIGFuZAorICogd2lsbCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRz
IG9yIE5VTEwgcG9pbnRlciBleGNlcHRpb25zLgorICogCisgKiBUaGUgVVRleHRfT3BlbiBmYW1p
bHkgb2YgZnVuY3Rpb25zIGNhbiBlaXRoZXIgb3BlbiBhbiBleGlzdGluZyAoY2xvc2VkKQorICog
VVRleHQsIG9yIGhlYXAgYWxsb2NhdGUgYSBuZXcgVVRleHQuICBIZXJlIGlzIHNhbXBsZSBjb2Rl
IGZvciBjcmVhdGluZworICogYSBzdGFjay1hbGxvY2F0ZWQgVVRleHQuCisgKgorICogXGNvZGUK
KyAqICAgIGNoYXIgICAgICpzID0gd2hhdGV2ZXIoKTsgIC8vIEEgdXRmLTggc3RyaW5nIAorICog
ICAgVV9FcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICogICAgVVRleHQgICAgdXQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAqICAgIHV0ZXh0X29wZW5VVEY4KHV0LCBzLCAtMSwgJnN0
YXR1cyk7CisgKiAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAqICAgICAgICAvLyBlcnJv
ciBoYW5kbGluZworICogICAgfSBlbHNlIHsKKyAqICAgICAgICAvLyB3b3JrIHdpdGggdGhlIFVU
ZXh0CisgKiAgICB9CisgKiBcZW5kY29kZQorICoKKyAqIEFueSBleGlzdGluZyBVVGV4dCBwYXNz
ZWQgdG8gYW4gb3BlbiBmdW5jdGlvbiBfbXVzdF8gaGF2ZSBiZWVuIGluaXRpYWxpemVkLCAKKyAq
IGVpdGhlciBieSB0aGUgVVRFWFRfSU5JVElBTElaRVIsIG9yIGJ5IGhhdmluZyBiZWVuIG9yaWdp
bmFsbHkgaGVhcC1hbGxvY2F0ZWQKKyAqIGJ5IGFuIG9wZW4gZnVuY3Rpb24uICBQYXNzaW5nIE5V
TEwgd2lsbCBjYXVzZSB0aGUgb3BlbiBmdW5jdGlvbiB0bworICogaGVhcC1hbGxvY2F0ZSBhbmQg
ZnVsbHkgaW5pdGlhbGl6ZSBhIG5ldyBVVGV4dC4KKyAqCisgKi8KKworCisKKyNpbmNsdWRlICJ1
bmljb2RlL3V0eXBlcy5oIgorI2luY2x1ZGUgInVuaWNvZGUvdWNoYXIuaCIKKyNpZiBVX1NIT1df
Q1BMVVNQTFVTX0FQSQorI2luY2x1ZGUgInVuaWNvZGUvbG9jYWxwb2ludGVyLmgiCisjaW5jbHVk
ZSAidW5pY29kZS9yZXAuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3VuaXN0ci5oIgorI2luY2x1ZGUg
InVuaWNvZGUvY2hhcml0ZXIuaCIKKyNlbmRpZgorCisKK1VfQ0RFQ0xfQkVHSU4KKworc3RydWN0
IFVUZXh0OwordHlwZWRlZiBzdHJ1Y3QgVVRleHQgVVRleHQ7IC8qKjwgQyB0eXBlZGVmIGZvciBz
dHJ1Y3QgVVRleHQuIEBzdGFibGUgSUNVIDMuNiAqLworCisKKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAqCisgKiAgIEMgRnVuY3Rpb25zIGZvciBjcmVhdGluZyBVVGV4dCB3cmFw
cGVycyBhcm91bmQgdmFyaW91cyBraW5kcyBvZiB0ZXh0IHN0cmluZ3MuCisgKgorICoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgICogQ2xvc2UgZnVuY3Rpb24gZm9y
IFVUZXh0IGluc3RhbmNlcy4KKyAgKiBDbGVhbnMgdXAsIHJlbGVhc2VzIGFueSByZXNvdXJjZXMg
YmVpbmcgaGVsZCBieSBhbiBvcGVuIFVUZXh0LgorICAqIDxwPgorICAqICAgSWYgdGhlIFVUZXh0
IHdhcyBvcmlnaW5hbGx5IGFsbG9jYXRlZCBieSBvbmUgb2YgdGhlIHV0ZXh0X29wZW4gZnVuY3Rp
b25zLAorICAqICAgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSB1dGV4dCB3aWxsIGFs
c28gYmUgZnJlZWQuCisgICogICBJZiB0aGUgVVRleHQgc3RvcmFnZSBvcmlnaW5hdGVkIHdpdGgg
dGhlIGFwcGxpY2F0aW9uLCBhcyBpdCB3b3VsZCB3aXRoCisgICogICBhIGxvY2FsIG9yIHN0YXRp
YyBpbnN0YW5jZSwgdGhlIHN0b3JhZ2Ugd2lsbCBub3QgYmUgZGVsZXRlZC4KKyAgKgorICAqICAg
QW4gb3BlbiBVVGV4dCBjYW4gYmUgcmVzZXQgdG8gcmVmZXIgdG8gbmV3IHN0cmluZyBieSB1c2lu
ZyBvbmUgb2YgdGhlIHV0ZXh0X29wZW4oKQorICAqICAgZnVuY3Rpb25zIHdpdGhvdXQgZmlyc3Qg
Y2xvc2luZyB0aGUgVVRleHQuICAKKyAgKgorICAqIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJl
IGNsb3NlZC4KKyAgKiBAcmV0dXJuICAgIE5VTEwgaWYgdGhlIFVUZXh0IHN0cnVjdCB3YXMgZGVs
ZXRlZCBieSB0aGUgY2xvc2UuICBJZiB0aGUgVVRleHQgc3RydWN0CisgICogICAgICAgICAgICB3
YXMgb3JpZ2luYWxseSBwcm92aWRlZCBieSB0aGUgY2FsbGVyIHRvIHRoZSBvcGVuIGZ1bmN0aW9u
LCBpdCBpcworICAqICAgICAgICAgICAgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIG1h
eSBiZSBzYWZlbHkgdXNlZCBhZ2FpbiBpbgorICAqICAgICAgICAgICAgYSBzdWJzZXF1ZW50IHV0
ZXh0X29wZW4uCisgICoKKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RBQkxFIFVUZXh0
ICogVV9FWFBPUlQyCit1dGV4dF9jbG9zZShVVGV4dCAqdXQpOworCisjaWYgVV9TSE9XX0NQTFVT
UExVU19BUEkKKworVV9OQU1FU1BBQ0VfQkVHSU4KKworLyoqCisgKiBcY2xhc3MgTG9jYWxVVGV4
dFBvaW50ZXIKKyAqICJTbWFydCBwb2ludGVyIiBjbGFzcywgY2xvc2VzIGEgVVRleHQgdmlhIHV0
ZXh0X2Nsb3NlKCkuCisgKiBGb3IgbW9zdCBtZXRob2RzIHNlZSB0aGUgTG9jYWxQb2ludGVyQmFz
ZSBiYXNlIGNsYXNzLgorICoKKyAqIEBzZWUgTG9jYWxQb2ludGVyQmFzZQorICogQHNlZSBMb2Nh
bFBvaW50ZXIKKyAqIEBzdGFibGUgSUNVIDQuNAorICovCitVX0RFRklORV9MT0NBTF9PUEVOX1BP
SU5URVIoTG9jYWxVVGV4dFBvaW50ZXIsIFVUZXh0LCB1dGV4dF9jbG9zZSk7CisKK1VfTkFNRVNQ
QUNFX0VORAorCisjZW5kaWYKKworLyoqCisgKiBPcGVuIGEgcmVhZC1vbmx5IFVUZXh0IGltcGxl
bWVudGF0aW9uIGZvciBVVEYtOCBzdHJpbmdzLgorICogCisgKiBcaHRtbG9ubHkKKyAqIEFueSBp
bnZhbGlkIFVURi04IGluIHRoZSBpbnB1dCB3aWxsIGJlIGhhbmRsZWQgaW4gdGhpcyB3YXk6Cisg
KiBhIHNlcXVlbmNlIG9mIGJ5dGVzIHRoYXQgaGFzIHRoZSBmb3JtIG9mIGEgdHJ1bmNhdGVkLCBi
dXQgb3RoZXJ3aXNlIHZhbGlkLAorICogVVRGLTggc2VxdWVuY2Ugd2lsbCBiZSByZXBsYWNlZCBi
eSBhIHNpbmdsZSB1bmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlciwgXHVGRkZELiAKKyAqIEFu
eSBvdGhlciBpbGxlZ2FsIGJ5dGVzIHdpbGwgZWFjaCBiZSByZXBsYWNlZCBieSBhIFx1RkZGRC4K
KyAqIFxlbmRodG1sb25seQorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4
dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAg
ICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0
IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJl
ZmVyZW5jZSB0aGUgc3BlY2lmaWVkIFVURi04IHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBV
VEYtOCBzdHJpbmcuICBNdXN0IG5vdCBiZSBOVUxMLgorICogQHBhcmFtIGxlbmd0aCBUaGUgbGVu
Z3RoIG9mIHRoZSBVVEYtOCBzdHJpbmcgaW4gYnl0ZXMsIG9yIC0xIGlmIHRoZSBzdHJpbmcgaXMK
KyAqICAgICAgICAgICAgICAgemVybyB0ZXJtaW5hdGVkLgorICogQHBhcmFtIHN0YXR1cyBFcnJv
cnMgYXJlIHJldHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgIEEgcG9pbnRlciB0byB0aGUg
VVRleHQuICBJZiBhIHByZS1hbGxvY2F0ZWQgVVRleHQgd2FzIHByb3ZpZGVkLCBpdAorICogICAg
ICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4KKyAqIEBzdGFibGUg
SUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlblVURjgo
VVRleHQgKnV0LCBjb25zdCBjaGFyICpzLCBpbnQ2NF90IGxlbmd0aCwgVUVycm9yQ29kZSAqc3Rh
dHVzKTsKKworCisvKioKKyAqIE9wZW4gYSByZWFkLW9ubHkgVVRleHQgZm9yIFVDaGFyICogc3Ry
aW5nLgorICogCisgKiBAcGFyYW0gdXQgICAgIFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJ
ZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJlIGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElm
IG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hp
Y2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUg
c3BlY2lmaWVkIFVDaGFyIHN0cmluZy4KKyAqIEBwYXJhbSBzICAgICAgQSBVQ2hhciAoVVRGLTE2
KSBzdHJpbmcKKyAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGlu
cHV0IHN0cmluZywgb3IgLTEgaWYgdGhlIHN0cmluZyBpcworICogICAgICAgICAgICAgICB6ZXJv
IHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4K
KyAqIEByZXR1cm4gICAgICAgQSBwb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgcHJlLWFsbG9j
YXRlZCBVVGV4dCB3YXMgcHJvdmlkZWQsIGl0CisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlz
IGJlIHVzZWQgYW5kIHJldHVybmVkLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuVUNoYXJzKFVUZXh0ICp1dCwgY29uc3QgVUNo
YXIgKnMsIGludDY0X3QgbGVuZ3RoLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisKKyNpZiBVX1NI
T1dfQ1BMVVNQTFVTX0FQSQorLyoqCisgKiBPcGVuIGEgd3JpdGFibGUgVVRleHQgZm9yIGEgbm9u
LWNvbnN0IFVuaWNvZGVTdHJpbmcuIAorICogCisgKiBAcGFyYW0gdXQgICAgICBQb2ludGVyIHRv
IGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgor
ICogICAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFuIGluaXRpYWxp
emVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAgICAgICAgYmUg
cmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgaW5wdXQgc3RyaW5nLgorICogQHBhcmFt
IHMgICAgICAgQSBVbmljb2RlU3RyaW5nLgorICogQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuCisgKiBAcmV0dXJuICAgICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElm
IGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlucHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgICAg
d2lsbCBhbHdheXMgYmUgdXNlZCBhbmQgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LworVV9TVEFCTEUgVVRleHQgKiBVX0VYUE9SVDIKK3V0ZXh0X29wZW5Vbmljb2RlU3RyaW5nKFVU
ZXh0ICp1dCwgaWN1OjpVbmljb2RlU3RyaW5nICpzLCBVRXJyb3JDb2RlICpzdGF0dXMpOworCisK
Ky8qKgorICogT3BlbiBhIFVUZXh0IGZvciBhIGNvbnN0IFVuaWNvZGVTdHJpbmcuICAgVGhlIHJl
c3VsdGluZyBVVGV4dCB3aWxsIG5vdCBiZSB3cml0YWJsZS4KKyAqIAorICogQHBhcmFtIHV0ICAg
IFBvaW50ZXIgdG8gYSBVVGV4dCBzdHJ1Y3QuICBJZiBOVUxMLCBhIG5ldyBVVGV4dCB3aWxsIGJl
IGNyZWF0ZWQuCisgKiAgICAgICAgICAgICAgIElmIG5vbi1OVUxMLCBtdXN0IHJlZmVyIHRvIGFu
IGluaXRpYWxpemVkIFVUZXh0IHN0cnVjdCwgd2hpY2ggd2lsbCB0aGVuCisgKiAgICAgICAgICAg
ICAgIGJlIHJlc2V0IHRvIHJlZmVyZW5jZSB0aGUgc3BlY2lmaWVkIGlucHV0IHN0cmluZy4KKyAq
IEBwYXJhbSBzICAgICAgQSBjb25zdCBVbmljb2RlU3RyaW5nIHRvIGJlIHdyYXBwZWQuCisgKiBA
cGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAgICAg
UG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1dCwg
dGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5lZC4K
KyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4dCAqIFVfRVhQT1JUMgordXRl
eHRfb3BlbkNvbnN0VW5pY29kZVN0cmluZyhVVGV4dCAqdXQsIGNvbnN0IGljdTo6VW5pY29kZVN0
cmluZyAqcywgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioKKyAqIE9wZW4gYSB3cml0YWJs
ZSBVVGV4dCBpbXBsZW1lbnRhdGlvbiBmb3IgYW4gSUNVIFJlcGxhY2VhYmxlIG9iamVjdC4KKyAq
IEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBuZXcg
VVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwgbXVz
dCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4KKyAq
ICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVwbGFj
ZWFibGUgdGV4dC4KKyAqIEBwYXJhbSByZXAgICAgQSBSZXBsYWNlYWJsZSB0ZXh0IG9iamVjdC4K
KyAqIEBwYXJhbSBzdGF0dXMgRXJyb3JzIGFyZSByZXR1cm5lZCBoZXJlLgorICogQHJldHVybiAg
ICAgICBQb2ludGVyIHRvIHRoZSBVVGV4dC4gIElmIGEgVVRleHQgd2FzIHN1cHBsaWVkIGFzIGlu
cHV0LCB0aGlzCisgKiAgICAgICAgICAgICAgIHdpbGwgYWx3YXlzIGJlIHVzZWQgYW5kIHJldHVy
bmVkLgorICogQHNlZSBSZXBsYWNlYWJsZQorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9vcGVuUmVwbGFjZWFibGUoVVRleHQgKnV0LCBp
Y3U6OlJlcGxhY2VhYmxlICpyZXAsIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogT3Bl
biBhICBVVGV4dCBpbXBsZW1lbnRhdGlvbiBvdmVyIGFuIElDVSBDaGFyYWN0ZXJJdGVyYXRvci4K
KyAqIEBwYXJhbSB1dCAgICBQb2ludGVyIHRvIGEgVVRleHQgc3RydWN0LiAgSWYgTlVMTCwgYSBu
ZXcgVVRleHQgd2lsbCBiZSBjcmVhdGVkLgorICogICAgICAgICAgICAgICBJZiBub24tTlVMTCwg
bXVzdCByZWZlciB0byBhbiBhbHJlYWR5IGV4aXN0aW5nIFVUZXh0LCB3aGljaCB3aWxsIHRoZW4K
KyAqICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gcmVmZXJlbmNlIHRoZSBzcGVjaWZpZWQgcmVw
bGFjZWFibGUgdGV4dC4KKyAqIEBwYXJhbSBjaSAgICAgQSBDaGFyYWN0ZXIgSXRlcmF0b3IuCisg
KiBAcGFyYW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gICAg
ICAgUG9pbnRlciB0byB0aGUgVVRleHQuICBJZiBhIFVUZXh0IHdhcyBzdXBwbGllZCBhcyBpbnB1
dCwgdGhpcworICogICAgICAgICAgICAgICB3aWxsIGFsd2F5cyBiZSB1c2VkIGFuZCByZXR1cm5l
ZC4KKyAqIEBzZWUgUmVwbGFjZWFibGUKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBVVGV4dCAqIFVfRVhQT1JUMgordXRleHRfb3BlbkNoYXJhY3Rlckl0ZXJhdG9yKFVUZXh0ICp1
dCwgaWN1OjpDaGFyYWN0ZXJJdGVyYXRvciAqY2ksIFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNl
bmRpZgorCisKKy8qKgorICAqICBDbG9uZSBhIFVUZXh0LiAgVGhpcyBpcyBtdWNoIGxpa2Ugb3Bl
bmluZyBhIFVUZXh0IHdoZXJlIHRoZSBzb3VyY2UgdGV4dCBpcyBpdHNlbGYKKyAgKiAgYW5vdGhl
ciBVVGV4dC4KKyAgKgorICAqICBBIGRlZXAgY2xvbmUgd2lsbCBjb3B5IGJvdGggdGhlIFVUZXh0
IGRhdGEgc3RydWN0dXJlcyBhbmQgdGhlIHVuZGVybHlpbmcgdGV4dC4KKyAgKiAgVGhlIG9yaWdp
bmFsIGFuZCBjbG9uZWQgVVRleHQgd2lsbCBvcGVyYXRlIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnRs
eTsgbW9kaWZpY2F0aW9ucworICAqICBtYWRlIHRvIHRoZSB0ZXh0IGluIG9uZSB3aWxsIG5vdCBh
ZmZlY3QgdGhlIG90aGVyLiAgVGV4dCBwcm92aWRlcnMgYXJlIG5vdAorICAqICByZXF1aXJlZCB0
byBzdXBwb3J0IGRlZXAgY2xvbmVzLiAgVGhlIHVzZXIgb2YgY2xvbmUoKSBtdXN0IGNoZWNrIHRo
ZSBzdGF0dXMgcmV0dXJuCisgICogIGFuZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgZmFpbHVyZXMu
CisgICoKKyAgKiAgVGhlIHN0YW5kYXJkIFVUZXh0IGltcGxlbWVudGF0aW9ucyBmb3IgVVRGOCwg
VUNoYXIgKiwgVW5pY29kZVN0cmluZyBhbmQKKyAgKiAgUmVwbGFjZWFibGUgYWxsIHN1cHBvcnQg
ZGVlcCBjbG9uaW5nLgorICAqCisgICogIFRoZSBVVGV4dCByZXR1cm5lZCBmcm9tIGEgZGVlcCBj
bG9uZSB3aWxsIGJlIHdyaXRhYmxlLCBhc3N1bWluZyB0aGF0IHRoZSB0ZXh0CisgICogIHByb3Zp
ZGVyIGlzIGFibGUgdG8gc3VwcG9ydCB3cml0aW5nLCBldmVuIGlmIHRoZSBzb3VyY2UgVVRleHQg
aGFkIGJlZW4gbWFkZQorICAqICBub24td3JpdGFibGUgYnkgbWVhbnMgb2YgVVRleHRfZnJlZXpl
KCkuCisgICoKKyAgKiAgQSBzaGFsbG93IGNsb25lIHJlcGxpY2F0ZXMgb25seSB0aGUgVVRleHQg
ZGF0YSBzdHJ1Y3R1cmVzOyBpdCBkb2VzIG5vdCBtYWtlCisgICogIGEgY29weSBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0LiAgU2hhbGxvdyBjbG9uZXMgY2FuIGJlIHVzZWQgYXMgYW4gZWZmaWNpZW50
IHdheSB0byAKKyAgKiAgaGF2ZSBtdWx0aXBsZSBpdGVyYXRvcnMgYWN0aXZlIGluIGEgc2luZ2xl
IHRleHQgc3RyaW5nIHRoYXQgaXMgbm90IGJlaW5nCisgICogIG1vZGlmaWVkLgorICAqCisgICog
IEEgc2hhbGxvdyBjbG9uZSBvcGVyYXRpb24gd2lsbCBub3QgZmFpbCwgYmFycmluZyB0cnVseSBl
eGNlcHRpb25hbCBjb25kaXRpb25zIHN1Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFp
bHVyZXMuCisgICoKKyAgKiAgU2hhbGxvdyBVVGV4dCBjbG9uZXMgc2hvdWxkIGJlIGF2b2lkZWQg
aWYgdGhlIFVUZXh0IGZ1bmN0aW9ucyB0aGF0IG1vZGlmeSB0aGUKKyAgKiAgdGV4dCBhcmUgZXhw
ZWN0ZWQgdG8gYmUgdXNlZCwgZWl0aGVyIG9uIHRoZSBvcmlnaW5hbCBvciB0aGUgY2xvbmVkIFVU
ZXh0LgorICAqICBBbnkgc3VjaCBtb2RpZmljYXRpb25zICBjYW4gY2F1c2UgdW5wcmVkaWN0YWJs
ZSBiZWhhdmlvci4gIFJlYWQgT25seQorICAqICBzaGFsbG93IGNsb25lcyBwcm92aWRlIHNvbWUg
cHJvdGVjdGlvbiBhZ2FpbnN0IGVycm9ycyBvZiB0aGlzIHR5cGUgYnkKKyAgKiAgZGlzYWJsaW5n
IHRleHQgbW9kaWZpY2F0aW9uIHZpYSB0aGUgY2xvbmVkIFVUZXh0LgorICAqCisgICogIEEgc2hh
bGxvdyBjbG9uZSBtYWRlIHdpdGggdGhlIHJlYWRPbmx5IHBhcmFtZXRlciA9PSBGQUxTRSB3aWxs
IHByZXNlcnZlIHRoZSAKKyAgKiAgdXRleHRfaXNXcml0YWJsZSgpIHN0YXRlIG9mIHRoZSBzb3Vy
Y2Ugb2JqZWN0LiAgTm90ZSwgaG93ZXZlciwgdGhhdAorICAqICB3cml0ZSBvcGVyYXRpb25zIG11
c3QgYmUgYXZvaWRlZCB3aGlsZSBtb3JlIHRoYW4gb25lIFVUZXh0IGV4aXN0cyB0aGF0IHJlZmVy
CisgICogIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgdGV4dC4KKyAgKgorICAqICBBIFVUZXh0IGFu
ZCBpdHMgY2xvbmUgbWF5IGJlIHNhZmVseSBjb25jdXJyZW50bHkgYWNjZXNzZWQgYnkgc2VwYXJh
dGUgdGhyZWFkcy4KKyAgKiAgVGhpcyBpcyB0cnVlIGZvciByZWFkIGFjY2VzcyBvbmx5IHdpdGgg
c2hhbGxvdyBjbG9uZXMsIGFuZCBmb3IgYm90aCByZWFkIGFuZAorICAqICB3cml0ZSBhY2Nlc3Mg
d2l0aCBkZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBU
ZXh0IFByb3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25z
dHJhaW50IGlzIG1ldC4KKyAgKgorICAqICBAcGFyYW0gZGVzdCAgIEEgVVRleHQgc3RydWN0IHRv
IGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGNsb25lIG9wZXJhdGlvbiwKKyAg
KiAgICAgICAgICAgICAgICBvciBOVUxMIGlmIHRoZSBjbG9uZSBmdW5jdGlvbiBzaG91bGQgaGVh
cC1hbGxvY2F0ZSBhIG5ldyBVVGV4dCBzdHJ1Y3QuCisgICogICAgICAgICAgICAgICAgSWYgbm9u
LU5VTEwsIG11c3QgcmVmZXIgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBVVGV4dCwgd2hpY2ggd2ls
bCB0aGVuCisgICogICAgICAgICAgICAgICAgYmUgcmVzZXQgdG8gYmVjb21lIHRoZSBjbG9uZS4K
KyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQgdG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0g
ZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAgY2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cg
Y2xvbmUuCisgICogIEBwYXJhbSByZWFkT25seSBUUlVFIHRvIHJlcXVlc3QgdGhhdCB0aGUgY2xv
bmVkIFVUZXh0IGhhdmUgcmVhZCBvbmx5IGFjY2VzcyB0byB0aGUgCisgICogICAgICAgICAgICAg
ICAgdW5kZXJseWluZyB0ZXh0LiAgCisKKyAgKiAgQHBhcmFtIHN0YXR1cyBFcnJvcnMgYXJlIHJl
dHVybmVkIGhlcmUuICBGb3IgZGVlcCBjbG9uZXMsIFVfVU5TVVBQT1JURURfRVJST1IKKyAgKiAg
ICAgICAgICAgICAgICB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHByb3ZpZGVyIGlzIHVu
YWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5hbCB0ZXh0LgorICAq
ICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBOVUxMIGlmIHRoZSBj
bG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqICBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1VfU1RB
QkxFIFVUZXh0ICogVV9FWFBPUlQyCit1dGV4dF9jbG9uZShVVGV4dCAqZGVzdCwgY29uc3QgVVRl
eHQgKnNyYywgVUJvb2wgZGVlcCwgVUJvb2wgcmVhZE9ubHksIFVFcnJvckNvZGUgKnN0YXR1cyk7
CisKKworLyoqCisgICogIENvbXBhcmUgdHdvIFVUZXh0IG9iamVjdHMgZm9yIGVxdWFsaXR5Lgor
ICAqICBVVGV4dHMgYXJlIGVxdWFsIGlmIHRoZXkgYXJlIGl0ZXJhdGluZyBvdmVyIHRoZSBzYW1l
IHRleHQsIGFuZAorICAqICAgIGhhdmUgdGhlIHNhbWUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpdGhp
biB0aGUgdGV4dC4KKyAgKiAgICBJZiBlaXRoZXIgb3IgYm90aCBvZiB0aGUgcGFyYW1ldGVycyBh
cmUgTlVMTCwgdGhlIGNvbXBhcmlzb24gaXMgRkFMU0UuCisgICoKKyAgKiAgQHBhcmFtIGEgICBU
aGUgZmlyc3Qgb2YgdGhlIHR3byBVVGV4dHMgdG8gY29tcGFyZS4KKyAgKiAgQHBhcmFtIGIgICBU
aGUgb3RoZXIgVVRleHQgdG8gYmUgY29tcGFyZWQuCisgICogIEByZXR1cm4gICAgVFJVRSBpZiB0
aGUgdHdvIFVUZXh0cyBhcmUgZXF1YWwuCisgICogIEBzdGFibGUgSUNVIDMuNgorICAqLworVV9T
VEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9lcXVhbHMoY29uc3QgVVRleHQgKmEsIGNvbnN0
IFVUZXh0ICpiKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9u
cyB0byB3b3JrIHdpdGggdGhlIHRleHQgcmVwcmVzZXRlZCBieSBhIFVUZXh0IHdyYXBwZXIKKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKgorICAqIEdldCB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LiAgRGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXJpc3RpY3MKKyAgKiBvZiB0aGUgdW5k
ZXJseWluZyB0ZXh0IHJlcHJlc2VudGF0aW9uLCB0aGlzIG1heSBiZSBleHBlbnNpdmUuICAKKyAg
KiBAc2VlICB1dGV4dF9pc0xlbmd0aEV4cGVuc2l2ZSgpCisgICoKKyAgKgorICAqIEBwYXJhbSB1
dCAgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LCBleHByZXNzZWQgaW4gbmF0aXZlIHVuaXRzLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCitVX1NUQUJMRSBpbnQ2NF90IFVfRVhQT1JUMgordXRleHRfbmF0aXZlTGVuZ3Ro
KFVUZXh0ICp1dCk7CisKKy8qKgorICogIFJldHVybiBUUlVFIGlmIGNhbGN1bGF0aW5nIHRoZSBs
ZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgZXhwZW5zaXZlLgorICogIEZpbmRpbmcgdGhlIGxl
bmd0aCBvZiBOVUwgdGVybWluYXRlZCBzdHJpbmdzIGlzIGNvbnNpZGVyZWQgdG8gYmUgZXhwZW5z
aXZlLgorICoKKyAqICBOb3RlIHRoYXQgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gbWF5IGNo
YW5nZQorICogIGFzIHRoZSByZXN1bHQgb2Ygb3RoZXIgb3BlcmF0aW9ucyBvbiBhIFVUZXh0Lgor
ICogIE9uY2UgdGhlIGxlbmd0aCBvZiBhIHN0cmluZyBoYXMgYmVlbiBkaXNjb3ZlcmVkLCBpdCB3
aWxsIG5vIGxvbmdlcgorICogIGJlIGV4cGVuc2l2ZSB0byByZXBvcnQgaXQuCisgKgorICogQHBh
cmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICogQHJldHVybiBUUlVFIGlmIGRldGVy
bWluaW5nIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgY291bGQgYmUgdGltZSBjb25zdW1pbmcuCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9p
c0xlbmd0aEV4cGVuc2l2ZShjb25zdCBVVGV4dCAqdXQpOworCisvKioKKyAqIFJldHVybnMgdGhl
IGNvZGUgcG9pbnQgYXQgdGhlIHJlcXVlc3RlZCBpbmRleCwKKyAqIG9yIFVfU0VOVElORUwgKC0x
KSBpZiBpdCBpcyBvdXQgb2YgYm91bmRzLgorICoKKyAqIElmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
cG9pbnRzIHRvIHRoZSBpbnRlcmlvciBvZiBhIG11bHRpLXVuaXQKKyAqIGNoYXJhY3RlciAtIG9u
ZSBvZiB0aGUgdHJhaWwgYnl0ZXMgb2YgYSBVVEYtOCBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUgLQor
ICogdGhlIGNvbXBsZXRlIGNvZGUgcG9pbnQgd2lsbCBiZSByZXR1cm5lZC4KKyAqCisgKiBUaGUg
aXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgcmV0dXJu
ZWQgY29kZSBwb2ludC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJvdWdobHkgZXF1aXZhbGVu
dCB0byB0aGUgdGhlIHNlcXVlbmNlCisgKiAgICB1dGV4dF9zZXROYXRpdmVJbmRleChpbmRleCk7
CisgKiAgICB1dGV4dF9jdXJyZW50MzIoKTsKKyAqIChUaGVyZSBpcyBhIHN1YnRsZSBkaWZmZXJl
bmNlIGlmIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzIGJ5IGJlaW5nIGxlc3MgdGhhbiB6ZXJv
IC0gCisgKiB1dGV4dF9zZXROYXRpdmVJbmRleChuZWdhdGl2ZSB2YWx1ZSkgc2V0cyB0aGUgaW5k
ZXggdG8gemVybywgYWZ0ZXIgd2hpY2ggdXRleHRfY3VycmVudCgpCisgKiB3aWxsIHJldHVybiB0
aGUgY2hhciBhdCB6ZXJvLiAgdXRleHRfY2hhcjMyQXQobmVnYXRpdmUgaW5kZXgpLCBvbiB0aGUg
b3RoZXIgaGFuZCwgd2lsbAorICogcmV0dXJuIHRoZSBVX1NFTlRJTkVMIHZhbHVlIG9mIC0xLikK
KyAqIAorICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkCisgKiBAcGFyYW0gbmF0
aXZlSW5kZXggdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIHRvIGJlIGFjY2Vzc2Vk
LiAgSWYgdGhlIGluZGV4IHBvaW50cworICogICAgICAgIHRvIG90aGVyIHRoYW4gdGhlIGZpcnN0
IHVuaXQgb2YgYSBtdWx0aS11bml0IGNoYXJhY3RlciwgaXQgd2lsbCBiZSBhZGp1c3RlZAorICog
ICAgICAgIHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICogQHJldHVybiB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1dGV4dF9jaGFyMzJBdChVVGV4dCAqdXQsIGlu
dDY0X3QgbmF0aXZlSW5kZXgpOworCisKKy8qKgorICoKKyAqIEdldCB0aGUgY29kZSBwb2ludCBh
dCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24sCisgKiBvciBVX1NFTlRJTkVMICgtMSkg
aWYgdGhlIGl0ZXJhdGlvbiBoYXMgcmVhY2hlZCB0aGUgZW5kIG9mCisgKiB0aGUgaW5wdXQgdGV4
dC4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBAcmV0dXJu
IHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYXQgdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24u
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0
ZXh0X2N1cnJlbnQzMihVVGV4dCAqdXQpOworCisKKy8qKgorICogR2V0IHRoZSBjb2RlIHBvaW50
IGF0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiBvZiB0aGUgVVRleHQsIGFuZAorICog
YWR2YW5jZSB0aGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0IGluZGV4IGZvbGxvd2luZyB0aGUgY2hh
cmFjdGVyLgorICoKKyAqIElmIHRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0
ICh0aGUgaW5kZXggZm9sbG93aW5nCisgKiB0aGUgbGFzdCBjaGFyYWN0ZXIsIHdoaWNoIGlzIGFs
c28gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCksIAorICogcmV0dXJuIFVfU0VOVElORUwgKC0xKSBh
bmQgZG8gbm90IGFkdmFuY2UgdGhlIGluZGV4LiAKKyAqCisgKiBUaGlzIGlzIGEgcG9zdC1pbmNy
ZW1lbnQgb3BlcmF0aW9uLgorICoKKyAqIEFuIGlubGluZSBtYWNybyB2ZXJzaW9uIG9mIHRoaXMg
ZnVuY3Rpb24sIFVURVhUX05FWFQzMigpLCAKKyAqIGlzIGF2YWlsYWJsZSBmb3IgcGVyZm9ybWFu
Y2UgY3JpdGljYWwgdXNlLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3Nl
ZC4KKyAqIEByZXR1cm4gdGhlIFVuaWNvZGUgY29kZSBwb2ludCBhdCB0aGUgaXRlcmF0aW9uIHBv
c2l0aW9uLgorICogQHNlZSBVVEVYVF9ORVhUMzIKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitV
X1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4dDMyKFVUZXh0ICp1dCk7CisKKwor
LyoqCisgKiAgTW92ZSB0aGUgaXRlcmF0b3IgcG9zaXRpb24gdG8gdGhlIGNoYXJhY3RlciAoY29k
ZSBwb2ludCkgd2hvc2UKKyAqICBpbmRleCBwcmVjZWRlcyB0aGUgY3VycmVudCBwb3NpdGlvbiwg
YW5kIHJldHVybiB0aGF0IGNoYXJhY3Rlci4KKyAqICBUaGlzIGlzIGEgcHJlLWRlY3JlbWVudCBv
cGVyYXRpb24uCisgKgorICogIElmIHRoZSBpbml0aWFsIHBvc2l0aW9uIGlzIGF0IHRoZSBzdGFy
dCBvZiB0aGUgdGV4dCAoaW5kZXggb2YgMCkgCisgKiAgcmV0dXJuIFVfU0VOVElORUwgKC0xKSwg
YW5kIGxlYXZlIHRoZSBwb3NpdGlvbiB1bmNoYW5nZWQuCisgKgorICogIEFuIGlubGluZSBtYWNy
byB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24sIFVURVhUX1BSRVZJT1VTMzIoKSwgCisgKiAgaXMg
YXZhaWxhYmxlIGZvciBwZXJmb3JtYW5jZSBjcml0aWNhbCB1c2UuCisgKgorICogIEBwYXJhbSB1
dCB0aGUgdGV4dCB0byBiZSBhY2Nlc3NlZC4KKyAqICBAcmV0dXJuIHRoZSBwcmV2aW91cyBVQ2hh
cjMyIGNvZGUgcG9pbnQsIG9yIFVfU0VOVElORUwgKC0xKSAKKyAqICAgICAgICAgIGlmIHRoZSBp
dGVyYXRpb24gaGFzIHJlYWNoZWQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICogIEBzZWUgVVRF
WFRfUFJFVklPVVMzMgorICogIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVQ2hhcjMy
IFVfRVhQT1JUMgordXRleHRfcHJldmlvdXMzMihVVGV4dCAqdXQpOworCisKKy8qKgorICAqIFNl
dCB0aGUgaXRlcmF0aW9uIGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYXQgdGhhdCBp
bmRleC4gCisgICogTGVhdmUgdGhlIGl0ZXJhdGlvbiBpbmRleCBhdCB0aGUgc3RhcnQgb2YgdGhl
IGZvbGxvd2luZyBjb2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9z
dCBlZmZpY2llbnQgYW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBmb3J3YXJkIGl0
ZXJhdGlvbi4gIFRoZSByZXN1bHRzIGFyZSBpZGVudGljYWwgdG8gdGhlIHRob3NlCisgICogZnJv
bSB0aGUgc2VxdWVuY2UKKyAgKiBcY29kZQorICAqICAgIHV0ZXh0X3NldEluZGV4KCk7CisgICog
ICAgdXRleHRfbmV4dDMyKCk7CisgICogXGVuZGNvZGUKKyAgKgorICAqICBAcGFyYW0gdXQgdGhl
IHRleHQgdG8gYmUgYWNjZXNzZWQuCisgICogIEBwYXJhbSBuYXRpdmVJbmRleCBJdGVyYXRpb24g
aW5kZXgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIHRleHQgcHJvdmlkZXIuCisgICogIEBy
ZXR1cm4gQ29kZSBwb2ludCB3aGljaCBzdGFydHMgYXQgb3IgYmVmb3JlIGluZGV4LAorICAqICAg
ICAgICAgb3IgVV9TRU5USU5FTCAoLTEpIGlmIGl0IGlzIG91dCBvZiBib3VuZHMuCisgICogQHN0
YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBVQ2hhcjMyIFVfRVhQT1JUMgordXRleHRfbmV4
dDMyRnJvbShVVGV4dCAqdXQsIGludDY0X3QgbmF0aXZlSW5kZXgpOworCisKKworLyoqCisgICog
U2V0IHRoZSBpdGVyYXRpb24gaW5kZXgsIGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgcHJlY2Vk
aW5nIHRoZQorICAqIG9uZSBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwgaW5kZXguICBMZWF2ZSB0
aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisgICogYXQgdGhlIHN0YXJ0IG9mIHRoZSByZXR1cm5lZCBj
b2RlIHBvaW50LgorICAqCisgICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgbW9zdCBlZmZpY2llbnQg
YW5kIGNvbnZlbmllbnQgd2F5IHRvCisgICogYmVnaW4gYSBiYWNrd2FyZHMgaXRlcmF0aW9uLgor
ICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEBwYXJhbSBu
YXRpdmVJbmRleCBJdGVyYXRpb24gaW5kZXggaW4gdGhlIG5hdGl2ZSB1bml0cyBvZiB0aGUgdGV4
dCBwcm92aWRlci4KKyAgKiBAcmV0dXJuIENvZGUgcG9pbnQgcHJlY2VkaW5nIHRoZSBvbmUgYXQg
dGhlIGluaXRpYWwgaW5kZXgsCisgICogICAgICAgICBvciBVX1NFTlRJTkVMICgtMSkgaWYgaXQg
aXMgb3V0IG9mIGJvdW5kcy4KKyAgKgorICAqIEBzdGFibGUgSUNVIDMuNAorICAqLworVV9TVEFC
TEUgVUNoYXIzMiBVX0VYUE9SVDIKK3V0ZXh0X3ByZXZpb3VzMzJGcm9tKFVUZXh0ICp1dCwgaW50
NjRfdCBuYXRpdmVJbmRleCk7CisKKy8qKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBw
b3NpdGlvbiwgd2hpY2ggY2FuIHJhbmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRo
ZSB0ZXh0LgorICAqIFRoZSBwb3NpdGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1
dCB0ZXh0LCBpbiB3aGF0ZXZlciBmb3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRG
LTggZm9yIGV4YW1wbGUpLCBhbmQgbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0
aGUgY29ycmVzcG9uZGluZyBVQ2hhciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQg
cG9zaXRpb24gd2lsbCBhbHdheXMgYmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnku
IAorICAqCisgICogQHBhcmFtIHV0IHRoZSB0ZXh0IHRvIGJlIGFjY2Vzc2VkLgorICAqIEByZXR1
cm4gdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhl
IHRleHQgcHJvdmlkZXIuCisgICogQHN0YWJsZSBJQ1UgMy40CisgICovCitVX1NUQUJMRSBpbnQ2
NF90IFVfRVhQT1JUMgordXRleHRfZ2V0TmF0aXZlSW5kZXgoY29uc3QgVVRleHQgKnV0KTsKKwor
LyoqCisgKiBTZXQgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBuZWFyZXN0
IGNvZGUgcG9pbnQKKyAqIGJvdW5kYXJ5IGF0IG9yIHByZWNlZGluZyB0aGUgc3BlY2lmaWVkIGlu
ZGV4LgorICogVGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFs
IGlucHV0IHRleHQuCisgKiBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCBpdCB3aWxsIGJl
IHBpbm5lZCB0byBiZSB3aXRoaW4KKyAqIHRoZSByYW5nZSBvZiB0aGUgaW5wdXQgdGV4dC4KKyAq
IDxwPgorICogSXQgd2lsbCB1c3VhbGx5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGJlZ2luIGFuIGl0
ZXJhdGlvbgorICogdXNpbmcgdGhlIGZ1bmN0aW9ucyB1dGV4dF9uZXh0MzJGcm9tKCkgb3IgdXRl
eHRfcHJldmlvdXMzMkZyb20oKQorICogcmF0aGVyIHRoYW4gc2V0SW5kZXgoKS4KKyAqIDxwPgor
ICogTW92aW5nIHRoZSBpbmRleCBwb3NpdGlvbiB0byBhbiBhZGphY2VudCBjaGFyYWN0ZXIgaXMg
YmVzdCBkb25lCisgKiB3aXRoIHV0ZXh0X25leHQzMigpLCB1dGV4dF9wcmV2aW91czMyKCkgb3Ig
dXRleHRfbW92ZUluZGV4MzIoKS4KKyAqIEF0dGVtcHRpbmcgdG8gZG8gZGlyZWN0IGFyaXRobWV0
aWMgb24gdGhlIGluZGV4IHBvc2l0aW9uIGlzCisgKiBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0
aGF0IHRoZSBzaXplIChpbiBuYXRpdmUgdW5pdHMpIG9mIGEKKyAqIGNoYXJhY3RlciBkZXBlbmRz
IG9uIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0ZXIKKyAqIChV
VEYtOCwgVVRGLTE2LCBVVEYtMzIsIGFyYml0cmFyeSBjb2RlcGFnZSksIGFuZCBpcyBub3QKKyAq
IGVhc2lseSBrbm93YWJsZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNz
ZWQuCisgKiBAcGFyYW0gbmF0aXZlSW5kZXggdGhlIG5hdGl2ZSB1bml0IGluZGV4IG9mIHRoZSBu
ZXcgaXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxF
IHZvaWQgVV9FWFBPUlQyCit1dGV4dF9zZXROYXRpdmVJbmRleChVVGV4dCAqdXQsIGludDY0X3Qg
bmF0aXZlSW5kZXgpOworCisvKioKKyAqIE1vdmUgdGhlIGl0ZXJhdG9yIHBvc3Rpb24gYnkgZGVs
dGEgY29kZSBwb2ludHMuICBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzCisgKiBpcyBhIHNpZ25l
ZCBudW1iZXI7IGEgbmVnYXRpdmUgZGVsdGEgd2lsbCBtb3ZlIHRoZSBpdGVyYXRvciBiYWNrd2Fy
ZHMsCisgKiB0b3dhcmRzIHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KKyAqIDxwPgorICogVGhlIGlu
ZGV4IGlzIG1vdmVkIGJ5IDxjb2RlPmRlbHRhPC9jb2RlPiBjb2RlIHBvaW50cworICogZm9yd2Fy
ZCBvciBiYWNrd2FyZCwgYnV0IG5vIGZ1cnRoZXIgYmFja3dhcmQgdGhhbiB0byAwIGFuZAorICog
bm8gZnVydGhlciBmb3J3YXJkIHRoYW4gdG8gdXRleHRfbmF0aXZlTGVuZ3RoKCkuCisgKiBUaGUg
cmVzdWx0aW5nIGluZGV4IHZhbHVlIHdpbGwgYmUgaW4gYmV0d2VlbiAwIGFuZCBsZW5ndGgsIGlu
Y2x1c2l2ZS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8gYmUgYWNjZXNzZWQuCisgKiBA
cGFyYW0gZGVsdGEgdGhlIHNpZ25lZCBudW1iZXIgb2YgY29kZSBwb2ludHMgdG8gbW92ZSB0aGUg
aXRlcmF0aW9uIHBvc2l0aW9uLgorICogQHJldHVybiBUUlVFIGlmIHRoZSBwb3NpdGlvbiBjb3Vs
ZCBiZSBtb3ZlZCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBwb3NpdGlvbnMgd2hpbGUKKyAqICAg
ICAgICAgICAgICBzdGF5aW5nIHdpdGhpbiB0aGUgcmFuZ2UgWzAgLSB0ZXh0IGxlbmd0aF0uCisg
KiBAc3RhYmxlIElDVSAzLjQKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1dGV4dF9t
b3ZlSW5kZXgzMihVVGV4dCAqdXQsIGludDMyX3QgZGVsdGEpOworCisvKioKKyAqIEdldCB0aGUg
bmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgcHJlY2VlZGluZyB0aGUgY3VycmVudCBwb3Np
dGlvbi4KKyAqIElmIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgYWxyZWFkeSBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHRleHQsIHplcm8KKyAqIGlzIHJldHVybmVkLgorICogVGhlIHZhbHVlIHJldHVy
bmVkIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2J0YWluZWQgZnJvbSB0aGUgZm9sbG93aW5nIHNlcXVl
bmNlLAorICogYnV0IHdpdGhvdXQgdGhlIHNpZGUgZWZmZWN0IG9mIGNoYW5naW5nIHRoZSBpdGVy
YXRpb24gcG9zaXRpb24uCisgKiAgIAorICogXGNvZGUKKyAqICAgIFVUZXh0ICAqdXQgPSB3aGF0
ZXZlcjsKKyAqICAgICAgLi4uCisgKiAgICB1dGV4dF9wcmV2aW91cyh1dCkKKyAqICAgIHV0ZXh0
X2dldE5hdGl2ZUluZGV4KHV0KTsKKyAqIFxlbmRjb2RlCisgKgorICogVGhpcyBmdW5jdGlvbiBp
cyBtb3N0IHVzZWZ1bCBkdXJpbmcgZm9yd2FyZHMgaXRlcmF0aW9uLCB3aGVyZSBpdCB3aWxsIGdl
dCB0aGUKKyAqICAgbmF0aXZlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgbW9zdCByZWNlbnRseSBy
ZXR1cm5lZCBmcm9tIHV0ZXh0X25leHQoKS4KKyAqCisgKiBAcGFyYW0gdXQgdGhlIHRleHQgdG8g
YmUgYWNjZXNzZWQKKyAqIEByZXR1cm4gdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVy
IHByZWNlZWRpbmcgdGhlIGN1cnJlbnQgaW5kZXggcG9zaXRpb24sCisgKiAgICAgICAgIG9yIHpl
cm8gaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0Lgor
ICogQHN0YWJsZSBJQ1UgMy42CisgKi8KK1VfU1RBQkxFIGludDY0X3QgVV9FWFBPUlQyCit1dGV4
dF9nZXRQcmV2aW91c05hdGl2ZUluZGV4KFVUZXh0ICp1dCk7IAorCisKKy8qKgorICoKKyAqIEV4
dHJhY3QgdGV4dCBmcm9tIGEgVVRleHQgaW50byBhIFVDaGFyIGJ1ZmZlci4gIFRoZSByYW5nZSBv
ZiB0ZXh0IHRvIGJlIGV4dHJhY3RlZAorICogaXMgc3BlY2lmaWVkIGluIHRoZSBuYXRpdmUgaW5k
aWNlcyBvZiB0aGUgVVRleHQgcHJvdmlkZXIuICBUaGVzZSBtYXkgbm90IG5lY2Vzc2FyaWx5Cisg
KiBiZSBVVEYtMTYgaW5kaWNlcy4KKyAqIDxwPgorICogVGhlIHNpemUgKG51bWJlciBvZiAxNiBi
aXQgVUNoYXJzKSBvZiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQgaXMgcmV0dXJuZWQuICBUaGUK
KyAqIGZ1bGwgbnVtYmVyIG9mIFVDaGFycyBpcyByZXR1cm5lZCwgZXZlbiB3aGVuIHRoZSBleHRy
YWN0ZWQgdGV4dCBpcyB0cnVuY2F0ZWQKKyAqIGJlY2F1c2UgdGhlIHNwZWNpZmllZCBidWZmZXIg
c2l6ZSBpcyB0b28gc21hbGwuCisgKiA8cD4KKyAqIFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwg
KGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlmIHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQor
ICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUg
ZGVzdGluYXRpb24gYnVmZmVyLiAgVGhpcworICogdGVybWluYXRpbmcgTlVMIGlzIG5vdCBpbmNs
dWRlZCBpbiB0aGUgcmV0dXJuZWQgbGVuZ3RoLgorICogPHA+CisgKiBUaGUgaXRlcmF0aW9uIGlu
ZGV4IGlzIGxlZnQgYXQgdGhlIHBvc2l0aW9uIGZvbGxvd2luZyB0aGUgbGFzdCBleHRyYWN0ZWQg
Y2hhcmFjdGVyLgorICoKKyAqIEBwYXJhbSAgdXQgICAgdGhlIFVUZXh0IGZyb20gd2hpY2ggdG8g
ZXh0cmFjdCBkYXRhLgorICogQHBhcmFtICBuYXRpdmVTdGFydCB0aGUgbmF0aXZlIGluZGV4IG9m
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gZXh0cmFjdC5cCisgKiAgICAgICAgICAgICAgIElmIHRo
ZSBzcGVjaWZpZWQgaW5kZXggaXMgb3V0IG9mIHJhbmdlLAorICogICAgICAgICAgICAgICBpdCB3
aWxsIGJlIHBpbm5lZCB0byB0byBiZSB3aXRoaW4gMCA8PSBpbmRleCA8PSB0ZXh0TGVuZ3RoCisg
KiBAcGFyYW0gIG5hdGl2ZUxpbWl0IHRoZSBuYXRpdmUgc3RyaW5nIGluZGV4IG9mIHRoZSBwb3Np
dGlvbiBmb2xsb3dpbmcgdGhlIGxhc3QKKyAqICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4
dHJhY3QuICBJZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG91dCBvZiByYW5nZSwKKyAqICAgICAg
ICAgICAgICAgaXQgd2lsbCBiZSBwaW5uZWQgdG8gdG8gYmUgd2l0aGluIDAgPD0gaW5kZXggPD0g
dGV4dExlbmd0aC4KKyAqICAgICAgICAgICAgICAgbmF0aXZlTGltaXQgbXVzdCBiZSA+PSBuYXRp
dmVTdGFydC4KKyAqIEBwYXJhbSAgZGVzdCAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRv
IHdoaWNoIHRoZSBleHRyYWN0ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFj
aXR5ICBUaGUgc2l6ZSwgaW4gVUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5
IGJlIHplcm8KKyAqICAgICAgICAgICAgICAgZm9yIHByZWNvbXB1dGluZyB0aGUgcmVxdWlyZWQg
c2l6ZS4KKyAqIEBwYXJhbSAgc3RhdHVzIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAg
ICAgICAgIFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOiB0aGUgZXh0cmFjdGVkIHRleHQgd2FzIHRy
dW5jYXRlZCBiZWNhdXNlIHRoZSAKKyAqICAgICAgICAgYnVmZmVyIHdhcyB0b28gc21hbGwuICBS
ZXR1cm5zIG51bWJlciBvZiBVQ2hhcnMgZm9yIHByZWZsaWdodGluZy4KKyAqIEByZXR1cm4gTnVt
YmVyIG9mIFVDaGFycyBpbiB0aGUgZGF0YSB0byBiZSBleHRyYWN0ZWQuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJM
RSBpbnQzMl90IFVfRVhQT1JUMgordXRleHRfZXh0cmFjdChVVGV4dCAqdXQsCisgICAgICAgICAg
ICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBuYXRpdmVMaW1pdCwKKyAgICAgICAgICAg
ICBVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAgVUVycm9y
Q29kZSAqc3RhdHVzKTsKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg
KiAgI2RlZmluZSBpbmxpbmUgdmVyc2lvbnMgb2Ygc2VsZWN0ZWQgcGVyZm9ybWFuY2UtY3JpdGlj
YWwgdGV4dCBhY2Nlc3MgZnVuY3Rpb25zCisgKiAgICAgICAgICBDYXV0aW9uOiAgZG8gbm90IHVz
ZSBhdXRvIGluY3JlbWVudCsrIG9yIGRlY3JlbWVudC0tIGV4cHJlc3Npb25zCisgKiAgICAgICAg
ICAgICAgICAgICAgYXMgcGFyYW1ldGVycyB0byB0aGVzZSBtYWNyb3MuCisgKgorICogICAgICAg
ICAgRm9yIG1vc3QgdXNlLCB3aGVyZSB0aGVyZSBpcyBubyBleHRyZW1lIHBlcmZvcm1hbmNlIGNv
bnN0cmFpbnQsIHRoZQorICogICAgICAgICAgbm9ybWFsLCBub24taW5saW5lIGZ1bmN0aW9ucyBh
cmUgYSBiZXR0ZXIgY2hvaWNlLiAgVGhlIHJlc3VsdGluZyBjb2RlCisgKiAgICAgICAgICB3aWxs
IGJlIHNtYWxsZXIsIGFuZCwgaWYgdGhlIG5lZWQgZXZlciBhcmlzZXMsIGVhc2llciB0byBkZWJ1
Zy4KKyAqCisgKiAgICAgICAgICBUaGVzZSBhcmUgaW1wbGVtZW50ZWQgYXMgI2RlZmluZXMgcmF0
aGVyIHRoYW4gcmVhbCBmdW5jdGlvbnMKKyAqICAgICAgICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8g
ZnVsbHkgcG9ydGFibGUgd2F5IHRvIGRvIGlubGluZSBmdW5jdGlvbnMgaW4gcGxhaW4gQy4KKyAq
CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIFVfSElERV9JTlRFUk5B
TF9BUEkKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfY3VycmVudDMyKCksIGZvciBw
ZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29kZSBwb2lu
dCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LgorICogUmV0
dXJucyBVX1NFTlRJTkVMICgtMSkgaWYgdGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhl
CisgKiB0ZXh0LgorICoKKyAqIEBpbnRlcm5hbCBJQ1UgNC40IHRlY2hub2xvZ3kgcHJldmlldwor
ICovCisjZGVmaW5lIFVURVhUX0NVUlJFTlQzMih1dCkgIFwKKyAgICAoKHV0KS0+Y2h1bmtPZmZz
ZXQgPCAodXQpLT5jaHVua0xlbmd0aCAmJiAoKHV0KS0+Y2h1bmtDb250ZW50cylbKHV0KS0+Y2h1
bmtPZmZzZXRdPDB4ZDgwMCA/IFwKKyAgICAoKHV0KS0+Y2h1bmtDb250ZW50cylbKCh1dCktPmNo
dW5rT2Zmc2V0KV0gOiB1dGV4dF9jdXJyZW50MzIodXQpKQorI2VuZGlmICAvKiBVX0hJREVfSU5U
RVJOQUxfQVBJICovCisKKy8qKgorICogaW5saW5lIHZlcnNpb24gb2YgdXRleHRfbmV4dDMyKCks
IGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqIEdldCB0aGUgY29k
ZSBwb2ludCBhdCB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gb2YgdGhlIFVUZXh0LCBh
bmQKKyAqIGFkdmFuY2UgdGhlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBpbmRleCBmb2xsb3dpbmcg
dGhlIGNoYXJhY3Rlci4KKyAqIFRoaXMgaXMgYSBwb3N0LWluY3JlbWVudCBvcGVyYXRpb24uCisg
KiBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIGVuZCBv
ZiB0aGUKKyAqIHRleHQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KKyNkZWZpbmUgVVRF
WFRfTkVYVDMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8ICh1dCktPmNodW5rTGVu
Z3RoICYmICgodXQpLT5jaHVua0NvbnRlbnRzKVsodXQpLT5jaHVua09mZnNldF08MHhkODAwID8g
XAorICAgICgodXQpLT5jaHVua0NvbnRlbnRzKVsoKHV0KS0+Y2h1bmtPZmZzZXQpKytdIDogdXRl
eHRfbmV4dDMyKHV0KSkKKworLyoqCisgKiBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4dF9wcmV2aW91
czMyKCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICoKKyAqICBNb3Zl
IHRoZSBpdGVyYXRvciBwb3NpdGlvbiB0byB0aGUgY2hhcmFjdGVyIChjb2RlIHBvaW50KSB3aG9z
ZQorICogIGluZGV4IHByZWNlZGVzIHRoZSBjdXJyZW50IHBvc2l0aW9uLCBhbmQgcmV0dXJuIHRo
YXQgY2hhcmFjdGVyLgorICogIFRoaXMgaXMgYSBwcmUtZGVjcmVtZW50IG9wZXJhdGlvbi4KKyAq
ICBSZXR1cm5zIFVfU0VOVElORUwgKC0xKSBpZiB0aGUgcG9zaXRpb24gaXMgYXQgdGhlIHN0YXJ0
IG9mIHRoZSAgdGV4dC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworI2RlZmluZSBVVEVY
VF9QUkVWSU9VUzMyKHV0KSAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA+IDAgJiYgXAorICAg
ICAodXQpLT5jaHVua0NvbnRlbnRzWyh1dCktPmNodW5rT2Zmc2V0LTFdIDwgMHhkODAwID8gXAor
ICAgICAgICAgICh1dCktPmNodW5rQ29udGVudHNbLS0oKHV0KS0+Y2h1bmtPZmZzZXQpXSAgOiAg
dXRleHRfcHJldmlvdXMzMih1dCkpCisKKy8qKgorICAqICBpbmxpbmUgdmVyc2lvbiBvZiB1dGV4
dF9nZXROYXRpdmVJbmRleCgpLCBmb3IgcGVyZm9ybWFuY2UtY3JpdGljYWwgc2l0dWF0aW9ucy4K
KyAgKgorICAqIEdldCB0aGUgY3VycmVudCBpdGVyYXRvciBwb3NpdGlvbiwgd2hpY2ggY2FuIHJh
bmdlIGZyb20gMCB0byAKKyAgKiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LgorICAqIFRoZSBwb3Np
dGlvbiBpcyBhIG5hdGl2ZSBpbmRleCBpbnRvIHRoZSBpbnB1dCB0ZXh0LCBpbiB3aGF0ZXZlciBm
b3JtYXQgaXQKKyAgKiBtYXkgaGF2ZSAocG9zc2libHkgVVRGLTggZm9yIGV4YW1wbGUpLCBhbmQg
bWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMKKyAgKiB0aGUgY29ycmVzcG9uZGluZyBVQ2hh
ciAoVVRGLTE2KSBpbmRleC4KKyAgKiBUaGUgcmV0dXJuZWQgcG9zaXRpb24gd2lsbCBhbHdheXMg
YmUgYWxpZ25lZCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkuIAorICAqCisgICogQHN0YWJsZSBJ
Q1UgMy42CisgICovCisjZGVmaW5lIFVURVhUX0dFVE5BVElWRUlOREVYKHV0KSAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICgodXQpLT5jaHVua09mZnNldCA8PSAodXQpLT5uYXRpdmVJbmRl
eGluZ0xpbWl0PyAgIFwKKyAgICAgICAgKHV0KS0+Y2h1bmtOYXRpdmVTdGFydCsodXQpLT5jaHVu
a09mZnNldCA6ICAgICBcCisgICAgICAgICh1dCktPnBGdW5jcy0+bWFwT2Zmc2V0VG9OYXRpdmUo
dXQpKSAgICAKKworLyoqCisgICogIGlubGluZSB2ZXJzaW9uIG9mIHV0ZXh0X3NldE5hdGl2ZUlu
ZGV4KCksIGZvciBwZXJmb3JtYW5jZS1jcml0aWNhbCBzaXR1YXRpb25zLgorICAqCisgICogU2V0
IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUgbmVhcmVzdCBjb2RlIHBvaW50
CisgICogYm91bmRhcnkgYXQgb3IgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgaW5kZXguCisgICog
VGhlIGluZGV4IGlzIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdpbmFsIGlucHV0IHRl
eHQuCisgICogSWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZSwgaXQgd2lsbCBiZSBwaW5uZWQg
dG8gYmUgd2l0aGluCisgICogdGhlIHJhbmdlIG9mIHRoZSBpbnB1dCB0ZXh0LgorICAqCisgICog
QHN0YWJsZSBJQ1UgMy44CisgICovCisjZGVmaW5lIFVURVhUX1NFVE5BVElWRUlOREVYKHV0LCBp
eCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7IGludDY0X3QgX19vZmZzZXQgPSAoaXgp
IC0gKHV0KS0+Y2h1bmtOYXRpdmVTdGFydDsgXAorICAgICAgaWYgKF9fb2Zmc2V0Pj0wICYmIF9f
b2Zmc2V0PD0oaW50NjRfdCkodXQpLT5uYXRpdmVJbmRleGluZ0xpbWl0KSB7IFwKKyAgICAgICAg
ICAodXQpLT5jaHVua09mZnNldD0oaW50MzJfdClfX29mZnNldDsgXAorICAgICAgfSBlbHNlIHsg
XAorICAgICAgICAgIHV0ZXh0X3NldE5hdGl2ZUluZGV4KCh1dCksIChpeCkpOyB9IH0KKworCisK
Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIEZ1bmN0aW9ucyByZWxhdGVk
IHRvIHdyaXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSB0ZXh0LgorICogICBUaGVzZSB3aWxsIHdvcmsg
b25seSB3aXRoIG1vZGlmaWFibGUgVVRleHRzLiAgQXR0ZW1wdGluZyB0bworICogICBtb2RpZnkg
YSByZWFkLW9ubHkgVVRleHQgd2lsbCByZXR1cm4gYW4gZXJyb3Igc3RhdHVzLgorICoKKyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqCisgKiAgUmV0dXJuIFRSVUUgaWYgdGhl
IHRleHQgY2FuIGJlIHdyaXR0ZW4gKG1vZGlmaWVkKSB3aXRoIHV0ZXh0X3JlcGxhY2UoKSBvcgor
ICogIHV0ZXh0X2NvcHkoKS4gIEZvciB0aGUgdGV4dCB0byBiZSB3cml0YWJsZSwgdGhlIHRleHQg
cHJvdmlkZXIgbXVzdAorICogIGJlIG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzIHdyaXRpbmcgYW5k
IHRoZSBVVGV4dCBtdXN0IG5vdCBiZSBmcm96ZW4uCisgKgorICogIEF0dGVtcHRpbmcgdG8gbW9k
aWZ5IHRleHQgd2hlbiB1dGV4dF9pc1dyaXRlYWJsZSgpIGlzIEZBTFNFIHdpbGwgZmFpbCAtCisg
KiAgdGhlIHRleHQgd2lsbCBub3QgYmUgbW9kaWZpZWQsIGFuZCBhbiBlcnJvciB3aWxsIGJlIHJl
dHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uCisgKiAgdGhhdCBhdHRlbXB0ZWQgdGhlIG1vZGlmaWNh
dGlvbi4KKyAqCisgKiBAcGFyYW0gIHV0ICAgdGhlIFVUZXh0IHRvIGJlIHRlc3RlZC4KKyAqIEBy
ZXR1cm4gVFJVRSBpZiB0aGUgdGV4dCBpcyBtb2RpZmlhYmxlLgorICoKKyAqIEBzZWUgICAgdXRl
eHRfZnJlZXplKCkKKyAqIEBzZWUgICAgdXRleHRfcmVwbGFjZSgpCisgKiBAc2VlICAgIHV0ZXh0
X2NvcHkoKQorICogQHN0YWJsZSBJQ1UgMy40CisgKgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VY
UE9SVDIKK3V0ZXh0X2lzV3JpdGFibGUoY29uc3QgVVRleHQgKnV0KTsKKworCisvKioKKyAgKiBU
ZXN0IHdoZXRoZXIgdGhlcmUgaXMgbWV0YSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGV4dC4K
KyAgKiBAc2VlIFJlcGxhY2VhYmxlOjpoYXNNZXRhRGF0YSgpCisgICoKKyAgKiBAcGFyYW0gdXQg
VGhlIFVUZXh0IHRvIGJlIHRlc3RlZAorICAqIEByZXR1cm4gVFJVRSBpZiB0aGUgdW5kZXJseWlu
ZyB0ZXh0IGluY2x1ZGVzIG1ldGEgZGF0YS4KKyAgKiBAc3RhYmxlIElDVSAzLjQKKyAgKi8KK1Vf
U1RBQkxFIFVCb29sIFVfRVhQT1JUMgordXRleHRfaGFzTWV0YURhdGEoY29uc3QgVVRleHQgKnV0
KTsKKworCisvKioKKyAqIFJlcGxhY2UgYSByYW5nZSBvZiB0aGUgb3JpZ2luYWwgdGV4dCB3aXRo
IGEgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBMZWF2ZXMgdGhlIGN1cnJlbnQgaXRlcmF0aW9u
IHBvc2l0aW9uIGF0IHRoZSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlCisgKiAgbmV3bHkgaW5zZXJ0
ZWQgcmVwbGFjZW1lbnQgdGV4dC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxh
YmxlIG9uIFVUZXh0IHR5cGVzIHRoYXQgc3VwcG9ydCB3cml0aW5nLAorICogdGhhdCBpcywgb25l
cyB3aGVyZSB1dGV4dF9pc1dyaXRhYmxlKCkgcmV0dXJucyBUUlVFLgorICoKKyAqIFdoZW4gdXNp
bmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgc2hvdWxkIGJlIG9ubHkgYSBzaW5nbGUgVVRleHQgb3Bl
bmVkIG9udG8gdGhlCisgKiB1bmRlcmx5aW5nIG5hdGl2ZSB0ZXh0IHN0cmluZy4gIEJlaGF2aW9y
IGFmdGVyIGEgcmVwbGFjZSBvcGVyYXRpb24KKyAqIG9uIGEgVVRleHQgaXMgdW5kZWZpbmVkIGZv
ciBhbnkgb3RoZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlm
aWVkIHN0cmluZy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgICAgICB0aGUgVVRleHQgcmVw
cmVzZW50aW5nIHRoZSB0ZXh0IHRvIGJlIG9wZXJhdGVkIG9uLgorICogQHBhcmFtIG5hdGl2ZVN0
YXJ0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHJlZ2lvbiB0byBi
ZSByZXBsYWNlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICAgICAgdGhlIG5hdGl2ZSBpbmRleCBv
ZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICog
QHBhcmFtIHJlcGxhY2VtZW50VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAor
ICogQHBhcmFtIHJlcGxhY2VtZW50TGVuZ3RoIGxlbmd0aCBvZiB0aGUgcmVwbGFjZW1lbnQgdGV4
dCwgb3IgLTEgaWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVz
ICAgICAgICAgICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGlu
Y2x1ZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgor
ICoKKyAqIEByZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0
cyBieSB3aGljaAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9y
IGNvbnRyYWN0ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIGludDMy
X3QgVV9FWFBPUlQyCit1dGV4dF9yZXBsYWNlKFVUZXh0ICp1dCwKKyAgICAgICAgICAgICBpbnQ2
NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICpyZXBsYWNlbWVudFRleHQsIGludDMyX3QgcmVwbGFjZW1lbnRMZW5ndGgsCisgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisKKy8qKgorICoKKyAqIENvcHkgb3Ig
bW92ZSBhIHN1YnN0cmluZyBmcm9tIG9uZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUg
dGV4dCwKKyAqIHdoaWxlIHJldGFpbmluZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRo
ZSB0ZXh0LgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVy
IHN1YnN0cmluZ3MuCisgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0
aGUgc291cmNlIHJhbmdlLgorICoKKyAqIFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBp
cyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3
cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4KKyAqCisgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlz
IGxlZnQgZm9sbG93aW5nIHRoZSBuZXdseSBpbnNlcnRlZCB0ZXh0CisgKiBhdCB0aGUgZGVzdGlu
YXRpb24gcG9zaXRpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBv
biBVVGV4dCB0eXBlcyB0aGF0IHN1cHBvcnQgd3JpdGluZywKKyAqIHRoYXQgaXMsIG9uZXMgd2hl
cmUgdXRleHRfaXNXcml0YWJsZSgpIHJldHVybnMgVFJVRS4KKyAqCisgKiBXaGVuIHVzaW5nIHRo
aXMgZnVuY3Rpb24sIHRoZXJlIHNob3VsZCBiZSBvbmx5IGEgc2luZ2xlIFVUZXh0IG9wZW5lZCBv
bnRvIHRoZQorICogdW5kZXJseWluZyBuYXRpdmUgdGV4dCBzdHJpbmcuICBCZWhhdmlvciBhZnRl
ciBhIGNvcHkgb3BlcmF0aW9uCisgKiBvbiBhIFVUZXh0IGlzIHVuZGVmaW5lZCBpbiBhbnkgb3Ro
ZXIgYWRkaXRpb25hbCBVVGV4dHMgdGhhdCByZWZlciB0byB0aGUKKyAqIG1vZGlmaWVkIHN0cmlu
Zy4KKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgIFRoZSBVVGV4dCByZXByZXNlbnRpbmcgdGhl
IHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQgIFRoZSBuYXRp
dmUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgY29waWVkIG9yIG1vdmVk
CisgKiBAcGFyYW0gbmF0aXZlTGltaXQgIFRoZSBuYXRpdmUgaW5kZXggb2YgdGhlIGNoYXJhY3Rl
ciBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlIHJlZ2lvbgorICogICAgICAgICAgICAgICAgICAgICB0
byBiZSBjb3BpZWQuCisgKiBAcGFyYW0gZGVzdEluZGV4ICAgIFRoZSBuYXRpdmUgZGVzdGluYXRp
b24gaW5kZXggdG8gd2hpY2ggdGhlIHNvdXJjZSBzdWJzdHJpbmcgaXMKKyAqICAgICAgICAgICAg
ICAgICAgICAgY29waWVkIG9yIG1vdmVkLgorICogQHBhcmFtIG1vdmUgICAgICAgICBJZiBUUlVF
LCB0aGVuIHRoZSBzdWJzdHJpbmcgaXMgbW92ZWQsIG5vdCBjb3BpZWQvZHVwbGljYXRlZC4KKyAq
IEBwYXJhbSBzdGF0dXMgICAgICAgcmVjZWl2ZXMgYW55IGVycm9yIHN0YXR1cy4gIFBvc3NpYmxl
IGVycm9ycyBpbmNsdWRlIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICogICAgICAgICAgICAgICAg
ICAgICAgIAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQy
Cit1dGV4dF9jb3B5KFVUZXh0ICp1dCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBp
bnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgIGludDY0X3QgZGVzdEluZGV4LAorICAgICAg
ICAgIFVCb29sIG1vdmUsCisgICAgICAgICAgVUVycm9yQ29kZSAqc3RhdHVzKTsKKworCisvKioK
KyAgKiAgPHA+CisgICogIEZyZWV6ZSBhIFVUZXh0LiAgVGhpcyBwcmV2ZW50cyBhbnkgbW9kaWZp
Y2F0aW9uIHRvIHRoZSB1bmRlcmx5aW5nIHRleHQgaXRzZWxmCisgICogIGJ5IG1lYW5zIG9mIGZ1
bmN0aW9ucyBvcGVyYXRpbmcgb24gdGhpcyBVVGV4dC4KKyAgKiAgPC9wPgorICAqICA8cD4KKyAg
KiAgT25jZSBmcm96ZW4sIGEgVVRleHQgY2FuIG5vdCBiZSB1bmZyb3plbi4gIFRoZSBpbnRlbnQg
aXMgdG8gZW5zdXJlCisgICogIHRoYXQgYSB0aGUgdGV4dCB1bmRlcmx5aW5nIGEgZnJvemVuIFVU
ZXh0IHdyYXBwZXIgY2Fubm90IGJlIG1vZGlmaWVkIHZpYSB0aGF0IFVUZXh0LgorICAqICA8L3A+
CisgICogIDxwPgorICAqICBDYXV0aW9uOiAgZnJlZXppbmcgYSBVVGV4dCB3aWxsIGRpc2FibGUg
Y2hhbmdlcyBtYWRlIHZpYSB0aGUgc3BlY2lmaWMKKyAgKiAgIGZyb3plbiBVVGV4dCB3cmFwcGVy
IG9ubHk7IGl0IHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYWJpbGl0eSB0bworICAq
ICAgZGlyZWN0bHkgbW9kaWZ5IHRoZSB0ZXh0IGJ5IGJ5cGFzc2luZyB0aGUgVVRleHQuICBBbnkg
c3VjaCBiYWNrZG9vciBtb2RpZmljYXRpb25zCisgICogICBhcmUgYWx3YXlzIGFuIGVycm9yIHdo
aWxlIFVUZXh0IGFjY2VzcyBpcyBvY2N1cmluZyBiZWNhdXNlIHRoZSB1bmRlcmx5aW5nCisgICog
ICB0ZXh0IGNhbiBnZXQgb3V0IG9mIHN5bmMgd2l0aCBVVGV4dCdzIGJ1ZmZlcmluZy4KKyAgKiAg
PC9wPgorICAqCisgICogIEBwYXJhbSB1dCAgVGhlIFVUZXh0IHRvIGJlIGZyb3plbi4KKyAgKiAg
QHNlZSAgIHV0ZXh0X2lzV3JpdGFibGUoKQorICAqICBAc3RhYmxlIElDVSAzLjYKKyAgKi8KK1Vf
U1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1dGV4dF9mcmVlemUoVVRleHQgKnV0KTsKKworCisvKioK
KyAqIFVUZXh0IHByb3ZpZGVyIHByb3BlcnRpZXMgKGJpdCBmaWVsZCBpbmRleGVzKS4KKyAqCisg
KiBAc2VlIFVUZXh0CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLworZW51bSB7CisgICAgLyoqCisg
ICAgICogSXQgaXMgcG90ZW50aWFsbHkgdGltZSBjb25zdW1pbmcgZm9yIHRoZSBwcm92aWRlciB0
byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjQKKyAgICAgKi8KKyAgICBVVEVYVF9QUk9WSURFUl9MRU5HVEhfSVNfRVhQRU5TSVZFID0gMSwK
KyAgICAvKioKKyAgICAgKiBUZXh0IGNodW5rcyByZW1haW4gdmFsaWQgYW5kIHVzYWJsZSB1bnRp
bCB0aGUgdGV4dCBvYmplY3QgaXMgbW9kaWZpZWQgb3IKKyAgICAgKiBkZWxldGVkLCBub3QganVz
dCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSBhY2Nlc3MoKSBmdW5jdGlvbiBpcyBjYWxsZWQKKyAg
ICAgKiAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLgorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAg
ICAqLworICAgIFVURVhUX1BST1ZJREVSX1NUQUJMRV9DSFVOS1MgPSAyLAorICAgIC8qKgorICAg
ICAqIFRoZSBwcm92aWRlciBzdXBwb3J0cyBtb2RpZnlpbmcgdGhlIHRleHQgdmlhIHRoZSByZXBs
YWNlKCkgYW5kIGNvcHkoKQorICAgICAqIGZ1bmN0aW9ucy4KKyAgICAgKiBAc2VlIFJlcGxhY2Vh
YmxlCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgVVRFWFRfUFJPVklERVJf
V1JJVEFCTEUgPSAzLAorICAgIC8qKgorICAgICAqIFRoZXJlIGlzIG1ldGEgZGF0YSBhc3NvY2lh
dGVkIHdpdGggdGhlIHRleHQuCisgICAgICogQHNlZSBSZXBsYWNlYWJsZTo6aGFzTWV0YURhdGEo
KQorICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAqLyAKKyAgICBVVEVYVF9QUk9WSURFUl9I
QVNfTUVUQV9EQVRBID0gNCwKKyAgICAvKioKKyAgICAgKiBUZXh0IHByb3ZpZGVyIG93bnMgdGhl
IHRleHQgc3RvcmFnZS4KKyAgICAgKiAgR2VuZXJhbGx5IG9jY3VycyBhcyB0aGUgcmVzdWx0IG9m
IGEgZGVlcCBjbG9uZSBvZiB0aGUgVVRleHQuCisgICAgICogIFdoZW4gY2xvc2luZyB0aGUgVVRl
eHQsIHRoZSBhc3NvY2lhdGVkIHRleHQgbXVzdAorICAgICAqICBhbHNvIGJlIGNsb3NlZC9kZWxl
dGVkL2ZyZWVkLyB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZS4KKyAgICAgKiBAc3RhYmxlIElDVSAz
LjYKKyAgICAgKi8KKyAgICAgVVRFWFRfUFJPVklERVJfT1dOU19URVhUID0gNQorfTsKKworLyoq
CisgICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVVRleHQuY2xvbmUoKS4KKyAgKgor
ICAqICBjbG9uZSBhIFVUZXh0LiAgTXVjaCBsaWtlIG9wZW5pbmcgYSBVVGV4dCB3aGVyZSB0aGUg
c291cmNlIHRleHQgaXMgaXRzZWxmCisgICogIGFub3RoZXIgVVRleHQuCisgICoKKyAgKiAgQSBk
ZWVwIGNsb25lIHdpbGwgY29weSBib3RoIHRoZSBVVGV4dCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRo
ZSB1bmRlcmx5aW5nIHRleHQuCisgICogIFRoZSBvcmlnaW5hbCBhbmQgY2xvbmVkIFVUZXh0IHdp
bGwgb3BlcmF0ZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50bHk7IG1vZGlmaWNhdGlvbnMKKyAgKiAg
bWFkZSB0byB0aGUgdGV4dCBpbiBvbmUgd2lsbCBub3QgZWZmZWN0IHRoZSBvdGhlci4gIFRleHQg
cHJvdmlkZXJzIGFyZSBub3QKKyAgKiAgcmVxdWlyZWQgdG8gc3VwcG9ydCBkZWVwIGNsb25lcy4g
IFRoZSB1c2VyIG9mIGNsb25lKCkgbXVzdCBjaGVjayB0aGUgc3RhdHVzIHJldHVybgorICAqICBh
bmQgYmUgcHJlcGFyZWQgdG8gaGFuZGxlIGZhaWx1cmVzLgorICAqCisgICogIEEgc2hhbGxvdyBj
bG9uZSByZXBsaWNhdGVzIG9ubHkgdGhlIFVUZXh0IGRhdGEgc3RydWN0dXJlczsgaXQgZG9lcyBu
b3QgbWFrZQorICAqICBhIGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgdGV4dC4gIFNoYWxsb3cgY2xv
bmVzIGNhbiBiZSB1c2VkIGFzIGFuIGVmZmljaWVudCB3YXkgdG8gCisgICogIGhhdmUgbXVsdGlw
bGUgaXRlcmF0b3JzIGFjdGl2ZSBpbiBhIHNpbmdsZSB0ZXh0IHN0cmluZyB0aGF0IGlzIG5vdCBi
ZWluZworICAqICBtb2RpZmllZC4KKyAgKgorICAqICBBIHNoYWxsb3cgY2xvbmUgb3BlcmF0aW9u
IG11c3Qgbm90IGZhaWwgZXhjZXB0IGZvciB0cnVseSBleGNlcHRpb25hbCBjb25kaXRpb25zIHN1
Y2gKKyAgKiAgYXMgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICoKKyAgKiAgQSBVVGV4
dCBhbmQgaXRzIGNsb25lIG1heSBiZSBzYWZlbHkgY29uY3VycmVudGx5IGFjY2Vzc2VkIGJ5IHNl
cGFyYXRlIHRocmVhZHMuCisgICogIFRoaXMgaXMgdHJ1ZSBmb3IgYm90aCBzaGFsbG93IGFuZCBk
ZWVwIGNsb25lcy4KKyAgKiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBUZXh0IFBy
b3ZpZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgdGhyZWFkIHNhZmV0eQorICAqICBjb25zdHJhaW50
IGlzIG1ldC4KKworICAqCisgICogIEBwYXJhbSBkZXN0ICAgQSBVVGV4dCBzdHJ1Y3QgdG8gYmUg
ZmlsbGVkIGluIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgY2xvbmUgb3BlcmF0aW9uLAorICAqICAg
ICAgICAgICAgICAgIG9yIE5VTEwgaWYgdGhlIGNsb25lIGZ1bmN0aW9uIHNob3VsZCBoZWFwLWFs
bG9jYXRlIGEgbmV3IFVUZXh0IHN0cnVjdC4KKyAgKiAgQHBhcmFtIHNyYyAgICBUaGUgVVRleHQg
dG8gYmUgY2xvbmVkLgorICAqICBAcGFyYW0gZGVlcCAgIFRSVUUgdG8gcmVxdWVzdCBhIGRlZXAg
Y2xvbmUsIEZBTFNFIGZvciBhIHNoYWxsb3cgY2xvbmUuCisgICogIEBwYXJhbSBzdGF0dXMgRXJy
b3JzIGFyZSByZXR1cm5lZCBoZXJlLiAgRm9yIGRlZXAgY2xvbmVzLCBVX1VOU1VQUE9SVEVEX0VS
Uk9SCisgICogICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJldHVybmVkIGlmIHRoZSB0ZXh0IHBy
b3ZpZGVyIGlzIHVuYWJsZSB0byBjbG9uZSB0aGUKKyAgKiAgICAgICAgICAgICAgICBvcmlnaW5h
bCB0ZXh0LgorICAqICBAcmV0dXJuICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGNsb25lLCBvciBO
VUxMIGlmIHRoZSBjbG9uZSBvcGVyYXRpb24gZmFpbGVkLgorICAqCisgICogQHN0YWJsZSBJQ1Ug
My40CisgICovCit0eXBlZGVmIFVUZXh0ICogVV9DQUxMQ09OVgorVVRleHRDbG9uZShVVGV4dCAq
ZGVzdCwgY29uc3QgVVRleHQgKnNyYywgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSAqc3RhdHVzKTsK
KworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm5hdGl2ZUxl
bmd0aCgpLgorICoKKyAqIEBwYXJhbSB1dCB0aGUgVVRleHQgdG8gZ2V0IHRoZSBsZW5ndGggb2Yu
CisgKiBAcmV0dXJuIHRoZSBsZW5ndGgsIGluIHRoZSBuYXRpdmUgdW5pdHMgb2YgdGhlIG9yaWdp
bmFsIHRleHQgc3RyaW5nLgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgaW50NjRfdCBVX0NBTExDT05WCitVVGV4dE5hdGl2ZUxlbmd0aChVVGV4dCAqdXQp
OworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0LmFjY2Vzcygp
LiAgR2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdGV4dCBjaHVuaworICogIGNvbnRhaW5pbmcg
dGhlIHRleHQgYXQgYSByZXF1ZXN0ZWQgbmF0aXZlIGluZGV4LiAgVGhlIFVUZXh0J3MgaXRlcmF0
aW9uCisgKiAgcG9zaXRpb24gd2lsbCBiZSBsZWZ0IGF0IHRoZSByZXF1ZXN0ZWQgaW5kZXguICBJ
ZiB0aGUgaW5kZXggaXMgb3V0CisgKiAgb2YgYm91bmRzLCB0aGUgaXRlcmF0aW9uIHBvc2l0aW9u
IHdpbGwgYmUgbGVmdCBhdCB0aGUgc3RhcnQgb3IgZW5kCisgKiAgb2YgdGhlIHN0cmluZywgYXMg
YXBwcm9wcmlhdGUuCisgKgorICogIENodW5rcyBtdXN0IGJlZ2luIGFuZCBlbmQgb24gY29kZSBw
b2ludCBib3VuZGFyaWVzLiAgQSBzaW5nbGUgY29kZSBwb2ludAorICogIGNvbXByaXNlZCBvZiBt
dWx0aXBsZSBzdG9yYWdlIHVuaXRzIG11c3QgbmV2ZXIgc3BhbiBhIGNodW5rIGJvdW5kYXJ5Lgor
ICoKKyAqCisgKiBAcGFyYW0gdXQgICAgICAgICAgdGhlIFVUZXh0IGJlaW5nIGFjY2Vzc2VkLgor
ICogQHBhcmFtIG5hdGl2ZUluZGV4IFJlcXVlc3RlZCBpbmRleCBvZiB0aGUgdGV4dCB0byBiZSBh
Y2Nlc3NlZC4KKyAqIEBwYXJhbSBmb3J3YXJkICAgICBJZiBUUlVFLCB0aGVuIHRoZSByZXR1cm5l
ZCBjaHVuayBtdXN0IGNvbnRhaW4gdGV4dAorICogICAgICAgICAgICAgICAgICAgIHN0YXJ0aW5n
IGZyb20gdGhlIGluZGV4LCBzbyB0aGF0IHN0YXJ0PD1pbmRleDxsaW1pdC4KKyAqICAgICAgICAg
ICAgICAgICAgICBJZiBGQUxTRSwgdGhlbiB0aGUgcmV0dXJuZWQgY2h1bmsgbXVzdCBjb250YWlu
IHRleHQKKyAqICAgICAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGluZGV4LCBzbyB0aGF0IHN0
YXJ0PGluZGV4PD1saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBUcnVlIGlmIHRoZSByZXF1
ZXN0ZWQgaW5kZXggY291bGQgYmUgYWNjZXNzZWQuICBUaGUgY2h1bmsKKyAqICAgICAgICAgICAg
ICAgICAgICB3aWxsIGNvbnRhaW4gdGhlIHJlcXVlc3RlZCB0ZXh0LgorICogICAgICAgICAgICAg
ICAgICAgIEZhbHNlIHZhbHVlIGlmIGEgY2h1bmsgY2Fubm90IGJlIGFjY2Vzc2VkCisgKiAgICAg
ICAgICAgICAgICAgICAgKHRoZSByZXF1ZXN0ZWQgaW5kZXggaXMgb3V0IG9mIGJvdW5kcykuCisg
KgorICogQHNlZSBVVGV4dAorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgVUJvb2wg
VV9DQUxMQ09OVgorVVRleHRBY2Nlc3MoVVRleHQgKnV0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBV
VGV4dC5leHRyYWN0KCkuCisgKgorICogRXh0cmFjdCB0ZXh0IGZyb20gYSBVVGV4dCBpbnRvIGEg
VUNoYXIgYnVmZmVyLiAgVGhlIHJhbmdlIG9mIHRleHQgdG8gYmUgZXh0cmFjdGVkCisgKiBpcyBz
cGVjaWZpZWQgaW4gdGhlIG5hdGl2ZSBpbmRpY2VzIG9mIHRoZSBVVGV4dCBwcm92aWRlci4gIFRo
ZXNlIG1heSBub3QgbmVjZXNzYXJpbHkKKyAqIGJlIFVURi0xNiBpbmRpY2VzLgorICogPHA+Cisg
KiBUaGUgc2l6ZSAobnVtYmVyIG9mIDE2IGJpdCBVQ2hhcnMpIGluIHRoZSBkYXRhIHRvIGJlIGV4
dHJhY3RlZCBpcyByZXR1cm5lZC4gIFRoZQorICogZnVsbCBhbW91bnQgaXMgcmV0dXJuZWQsIGV2
ZW4gd2hlbiB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBzaXplIGlzIHNtYWxsZXIuCisgKiA8cD4KKyAq
IFRoZSBleHRyYWN0ZWQgc3RyaW5nIHdpbGwgKGlmIHlvdSBhcmUgYSB1c2VyKSAvIG11c3QgKGlm
IHlvdSBhcmUgYSB0ZXh0IHByb3ZpZGVyKQorICogYmUgTlVMLXRlcm1pbmF0ZWQgaWYgdGhlcmUg
aXMgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICoKKyAqIEBw
YXJhbSAgdXQgICAgICAgICAgICB0aGUgVVRleHQgZnJvbSB3aGljaCB0byBleHRyYWN0IGRhdGEu
CisgKiBAcGFyYW0gIG5hdGl2ZVN0YXJ0ICAgdGhlIG5hdGl2ZSBpbmRleCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjZXIgdG8gZXh0cmFjdC4KKyAqIEBwYXJhbSAgbmF0aXZlTGltaXQgICB0aGUgbmF0aXZl
IHN0cmluZyBpbmRleCBvZiB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBsYXN0CisgKiAgICAg
ICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHRvIGV4dHJhY3QuCisgKiBAcGFyYW0gIGRlc3Qg
ICAgICAgICAgdGhlIFVDaGFyIChVVEYtMTYpIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSBleHRyYWN0
ZWQgdGV4dCBpcyBwbGFjZWQKKyAqIEBwYXJhbSAgZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSwgaW4g
VUNoYXJzLCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgTWF5IGJlIHplcm8KKyAqICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgcHJlY29tcHV0aW5nIHRoZSByZXF1aXJlZCBzaXplLgorICog
QHBhcmFtICBzdGF0dXMgICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBzdGF0dXMuCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgSWYgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I6IFJldHVybnMgbnVt
YmVyIG9mIFVDaGFycyBmb3IKKyAqICAgICAgICAgICAgICAgICAgICAgICBwcmVmbGlnaHRpbmcu
CisgKiBAcmV0dXJuIE51bWJlciBvZiBVQ2hhcnMgaW4gdGhlIGRhdGEuICBEb2VzIG5vdCBpbmNs
dWRlIGEgdHJhaWxpbmcgTlVMLgorICoKKyAqIEBzdGFibGUgSUNVIDMuNAorICovCit0eXBlZGVm
IGludDMyX3QgVV9DQUxMQ09OVgorVVRleHRFeHRyYWN0KFVUZXh0ICp1dCwKKyAgICAgICAgICAg
ICBpbnQ2NF90IG5hdGl2ZVN0YXJ0LCBpbnQ2NF90IG5hdGl2ZUxpbWl0LAorICAgICAgICAgICAg
IFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAgICBVRXJyb3JD
b2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVU
ZXh0LnJlcGxhY2UoKS4KKyAqCisgKiBSZXBsYWNlIGEgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIHRl
eHQgd2l0aCBhIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogTGVhdmVzIHRoZSBjdXJyZW50IGl0
ZXJhdGlvbiBwb3NpdGlvbiBhdCB0aGUgcG9zaXRpb24gZm9sbG93aW5nIHRoZQorICogIG5ld2x5
IGluc2VydGVkIHJlcGxhY2VtZW50IHRleHQuCisgKgorICogVGhpcyBmdW5jdGlvbiBuZWVkIG9u
bHkgYmUgaW1wbGVtZW50ZWQgb24gVVRleHQgdHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisg
KgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNp
bmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUKKyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3Ry
aW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRl
eHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlv
biBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRvIGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVu
ZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJlIGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3Bl
cmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAgICAgICAgICAgICAgIHRoZSBVVGV4dCByZXByZXNl
bnRpbmcgdGhlIHRleHQgdG8gYmUgb3BlcmF0ZWQgb24uCisgKiBAcGFyYW0gbmF0aXZlU3RhcnQg
ICAgICB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSByZWdpb24gdG8gYmUgcmVwbGFjZWQK
KyAqIEBwYXJhbSBuYXRpdmVMaW1pdCAgICAgIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZv
bGxvd2luZyB0aGUgcmVnaW9uIHRvIGJlIHJlcGxhY2VkLgorICogQHBhcmFtIHJlcGxhY2VtZW50
VGV4dCAgcG9pbnRlciB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dAorICogQHBhcmFtIHJlcGxhY21l
bnRMZW5ndGggbGVuZ3RoIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGluIFVDaGFycywgb3IgLTEg
aWYgdGhlIHRleHQgaXMgTlVMIHRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgICAg
ICByZWNlaXZlcyBhbnkgZXJyb3Igc3RhdHVzLiAgUG9zc2libGUgZXJyb3JzIGluY2x1ZGUKKyAq
ICAgICAgICAgICAgICAgICAgICAgICAgIFVfTk9fV1JJVEVfUEVSTUlTU0lPTgorICoKKyAqIEBy
ZXR1cm4gVGhlIHNpZ25lZCBudW1iZXIgb2YgKG5hdGl2ZSkgc3RvcmFnZSB1bml0cyBieSB3aGlj
aAorICogICAgICAgICB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGV4cGFuZGVkIG9yIGNvbnRyYWN0
ZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8KK3R5cGVkZWYgaW50MzJfdCBVX0NBTExD
T05WCitVVGV4dFJlcGxhY2UoVVRleHQgKnV0LAorICAgICAgICAgICAgIGludDY0X3QgbmF0aXZl
U3RhcnQsIGludDY0X3QgbmF0aXZlTGltaXQsCisgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnJl
cGxhY2VtZW50VGV4dCwgaW50MzJfdCByZXBsYWNtZW50TGVuZ3RoLAorICAgICAgICAgICAgIFVF
cnJvckNvZGUgKnN0YXR1cyk7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBm
b3IgVVRleHQuY29weSgpLgorICoKKyAqIENvcHkgb3IgbW92ZSBhIHN1YnN0cmluZyBmcm9tIG9u
ZSBwb3NpdGlvbiB0byBhbm90aGVyIHdpdGhpbiB0aGUgdGV4dCwKKyAqIHdoaWxlIHJldGFpbmlu
ZyBhbnkgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXh0LgorICogVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmluZ3MuCisgKiBUaGUgZGVz
dGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICoKKyAq
IFRoZSB0ZXh0IHRvIGJlIGNvcGllZCBvciBtb3ZlZCBpcyBpbnNlcnRlZCBhdCBkZXN0SW5kZXg7
CisgKiBpdCBkb2VzIG5vdCByZXBsYWNlIG9yIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgdGV4dC4K
KyAqCisgKiBUaGlzIGZ1bmN0aW9uIG5lZWQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgVVRleHQg
dHlwZXMgdGhhdCBzdXBwb3J0IHdyaXRpbmcuCisgKgorICogV2hlbiB1c2luZyB0aGlzIGZ1bmN0
aW9uLCB0aGVyZSBzaG91bGQgYmUgb25seSBhIHNpbmdsZSBVVGV4dCBvcGVuZWQgb250byB0aGUK
KyAqIHVuZGVybHlpbmcgbmF0aXZlIHRleHQgc3RyaW5nLiAgVGhlIGZ1bmN0aW9uIGlzIHJlc3Bv
bnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKyAqIHRleHQgY2h1bmsgd2l0aGluIHRoZSBVVGV4dCB0
byByZWZsZWN0IHRoZSB1cGRhdGVkIGl0ZXJhdGlvbiBwb3NpdGlvbiwKKyAqIHRha2luZyBpbnRv
IGFjY291bnQgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgc3RyaW5nJ3Mgc3RydWN0dXJl
IGNhdXNlZAorICogYnkgdGhlIHJlcGxhY2Ugb3BlcmF0aW9uLgorICoKKyAqIEBwYXJhbSB1dCAg
ICAgICAgICAgVGhlIFVUZXh0IHJlcHJlc2VudGluZyB0aGUgdGV4dCB0byBiZSBvcGVyYXRlZCBv
bi4KKyAqIEBwYXJhbSBuYXRpdmVTdGFydCAgVGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUg
cmVnaW9uIHRvIGJlIGNvcGllZCBvciBtb3ZlZAorICogQHBhcmFtIG5hdGl2ZUxpbWl0ICBUaGUg
aW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJlZ2lvbiB0byBiZSByZXBsYWNl
ZC4KKyAqIEBwYXJhbSBuYXRpdmVEZXN0ICAgVGhlIGRlc3RpbmF0aW9uIGluZGV4IHRvIHdoaWNo
IHRoZSBzb3VyY2Ugc3Vic3RyaW5nIGlzIGNvcGllZCBvciBtb3ZlZC4KKyAqIEBwYXJhbSBtb3Zl
ICAgICAgICAgSWYgVFJVRSwgdGhlbiB0aGUgc3Vic3RyaW5nIGlzIG1vdmVkLCBub3QgY29waWVk
L2R1cGxpY2F0ZWQuCisgKiBAcGFyYW0gc3RhdHVzICAgICAgIHJlY2VpdmVzIGFueSBlcnJvciBz
dGF0dXMuICBQb3NzaWJsZSBlcnJvcnMgaW5jbHVkZSBVX05PX1dSSVRFX1BFUk1JU1NJT04KKyAq
CisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRlZiB2b2lkIFVfQ0FMTENPTlYKK1VUZXh0
Q29weShVVGV4dCAqdXQsCisgICAgICAgICAgaW50NjRfdCBuYXRpdmVTdGFydCwgaW50NjRfdCBu
YXRpdmVMaW1pdCwKKyAgICAgICAgICBpbnQ2NF90IG5hdGl2ZURlc3QsCisgICAgICAgICAgVUJv
b2wgbW92ZSwKKyAgICAgICAgICBVRXJyb3JDb2RlICpzdGF0dXMpOworCisvKioKKyAqIEZ1bmN0
aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVUZXh0Lm1hcE9mZnNldFRvTmF0aXZlKCkuCisgKiBN
YXAgZnJvbSB0aGUgY3VycmVudCBVQ2hhciBvZmZzZXQgd2l0aGluIHRoZSBjdXJyZW50IHRleHQg
Y2h1bmsgdG8KKyAqICB0aGUgY29ycmVzcG9uZGluZyBuYXRpdmUgaW5kZXggaW4gdGhlIG9yaWdp
bmFsIHNvdXJjZSB0ZXh0LgorICoKKyAqIFRoaXMgaXMgcmVxdWlyZWQgb25seSBmb3IgdGV4dCBw
cm92aWRlcnMgdGhhdCBkbyBub3QgdXNlIG5hdGl2ZSBVVEYtMTYgaW5kZXhlcy4KKyAqCisgKiBA
cGFyYW0gdXQgICAgIHRoZSBVVGV4dC4KKyAqIEByZXR1cm4gQWJzb2x1dGUgKG5hdGl2ZSkgaW5k
ZXggY29ycmVzcG9uZGluZyB0byBjaHVua09mZnNldCBpbiB0aGUgY3VycmVudCBjaHVuay4KKyAq
ICAgICAgICAgVGhlIHJldHVybmVkIG5hdGl2ZSBpbmRleCBzaG91bGQgYWx3YXlzIGJlIHRvIGEg
Y29kZSBwb2ludCBib3VuZGFyeS4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAqLwordHlwZWRl
ZiBpbnQ2NF90IFVfQ0FMTENPTlYKK1VUZXh0TWFwT2Zmc2V0VG9OYXRpdmUoY29uc3QgVVRleHQg
KnV0KTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC5tYXBJ
bmRleFRvVVRGMTYoKS4KKyAqIE1hcCBmcm9tIGEgbmF0aXZlIGluZGV4IHRvIGEgVUNoYXIgb2Zm
c2V0IHdpdGhpbiBhIHRleHQgY2h1bmsuCisgKiBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgdGhl
IG5hdGl2ZSBpbmRleCBkb2VzIG5vdCBmYWxsIHdpdGhpbiB0aGUKKyAqICAgY3VycmVudCBjaHVu
ay4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIG9ubHkgZm9yIHRleHQgcHJvdmlk
ZXJzIHRoYXQgZG8gbm90IHVzZSBuYXRpdmUgVVRGLTE2IGluZGV4ZXMuCisgKgorICogQHBhcmFt
IHV0ICAgICAgICAgIFRoZSBVVGV4dCBjb250YWluaW5nIHRoZSB0ZXh0IGNodW5rLgorICogQHBh
cmFtIG5hdGl2ZUluZGV4IEFic29sdXRlIChuYXRpdmUpIHRleHQgaW5kZXgsIGNodW5rLT5zdGFy
dDw9aW5kZXg8PWNodW5rLT5saW1pdC4KKyAqIEByZXR1cm4gICAgICAgICAgICBDaHVuay1yZWxh
dGl2ZSBVVEYtMTYgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBuYXRpdmUK
KyAqICAgICAgICAgICAgICAgICAgICBpbmRleC4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjQKKyAq
LwordHlwZWRlZiBpbnQzMl90IFVfQ0FMTENPTlYKK1VUZXh0TWFwTmF0aXZlSW5kZXhUb1VURjE2
KGNvbnN0IFVUZXh0ICp1dCwgaW50NjRfdCBuYXRpdmVJbmRleCk7CisKKworLyoqCisgKiBGdW5j
dGlvbiB0eXBlIGRlY2xhcmF0aW9uIGZvciBVVGV4dC51dGV4dENsb3NlKCkuCisgKgorICogQSBU
ZXh0IFByb3ZpZGVyIGNsb3NlIGZ1bmN0aW9uIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHByb3ZpZGVy
IHR5cGVzIHRoYXQgbWFrZQorICogIGFsbG9jYXRpb25zIGluIHRoZWlyIG9wZW4gZnVuY3Rpb24g
KG9yIG90aGVyIGZ1bmN0aW9ucykgdGhhdCBtdXN0IGJlIAorICogIGNsZWFuZWQgd2hlbiB0aGUg
VVRleHQgaXMgY2xvc2VkLgorICoKKyAqIFRoZSBhbGxvY2F0aW9uIG9mIHRoZSBVVGV4dCBzdHJ1
Y3QgaXRzZWxmIGFuZCBhbnkgImV4dHJhIiBzdG9yYWdlCisgKiBhc3NvY2lhdGVkIHdpdGggdGhl
IFVUZXh0IGlzIGhhbmRsZWQgYnkgdGhlIGNvbW1vbiBVVGV4dCBpbXBsZW1lbnRhdGlvbgorICog
YW5kIGRvZXMgbm90IHJlcXVpcmUgcHJvdmlkZXIgc3BlY2lmaWMgY2xlYW51cCBpbiBhIGNsb3Nl
IGZ1bmN0aW9uLgorICoKKyAqIE1vc3QgVVRleHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb25zIGRv
IG5vdCBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSB1dCBB
IFVUZXh0IG9iamVjdCB0byBiZSBjbG9zZWQuCisgKgorICogQHN0YWJsZSBJQ1UgMy40CisgKi8K
K3R5cGVkZWYgdm9pZCBVX0NBTExDT05WCitVVGV4dENsb3NlKFVUZXh0ICp1dCk7CisKKworLyoq
CisgICogICAocHVibGljKSAgRnVuY3Rpb24gZGlzcGF0Y2ggdGFibGUgZm9yIFVUZXh0LgorICAq
ICAgICAgICAgICAgIENvbmNlcHR1YWxseSB2ZXJ5IG11Y2ggbGlrZSBhIEMrKyBWaXJ0dWFsIEZ1
bmN0aW9uIFRhYmxlLgorICAqICAgICAgICAgICAgIFRoaXMgc3RydWN0IGRlZmluZXMgdGhlIG9y
Z2FuaXphdGlvbiBvZiB0aGUgdGFibGUuCisgICogICAgICAgICAgICAgRWFjaCB0ZXh0IHByb3Zp
ZGVyIGltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBhbgorICAqICAgICAgICAgICAgICBhY3R1
YWwgdGFibGUgdGhhdCBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlv
bnMKKyAgKiAgICAgICAgICAgICAgZm9yIHRoZSB0eXBlIG9mIHRleHQgYmVpbmcgaGFuZGxlZC4K
KyAgKiAgIEBzdGFibGUgSUNVIDMuNgorICAqLworc3RydWN0IFVUZXh0RnVuY3MgeworICAgIC8q
KgorICAgICAqICAgKHB1YmxpYykgIEZ1bmN0aW9uIHRhYmxlIHNpemUsIHNpemVvZihVVGV4dEZ1
bmNzKQorICAgICAqICAgICAgICAgICAgIEludGVuZGVkIGZvciB1c2Ugc2hvdWxkIHRoZSB0YWJs
ZSBncm93IHRvIGFjY29tb2RhdGUgYWRkZWQKKyAgICAgKiAgICAgICAgICAgICBmdW5jdGlvbnMg
aW4gdGhlIGZ1dHVyZSwgdG8gYWxsb3cgdGVzdHMgZm9yIG9sZGVyIGZvcm1hdAorICAgICAqICAg
ICAgICAgICAgIGZ1bmN0aW9uIHRhYmxlcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBleHRlbnNp
b25zLgorICAgICAqCisgICAgICogICAgICAgICAgICAgRmllbGRzIGFyZSBwbGFjZWQgZm9yIG9w
dGltYWwgYWxpZ25tZW50IG9uCisgICAgICogICAgICAgICAgICAgMzIvNjQvMTI4LWJpdC1wb2lu
dGVyIG1hY2hpbmVzLCBieSBub3JtYWxseSBncm91cGluZyB0b2dldGhlcgorICAgICAqICAgICAg
ICAgICAgIDQgMzItYml0IGZpZWxkcywKKyAgICAgKiAgICAgICAgICAgICA0IHBvaW50ZXJzLAor
ICAgICAqICAgICAgICAgICAgIDIgNjQtYml0IGZpZWxkcworICAgICAqICAgICAgICAgICAgIGlu
IHNlcXVlbmNlLgorICAgICAqICAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgaW50MzJf
dCAgICAgICB0YWJsZVNpemU7CisKKyAgICAvKioKKyAgICAgICogICAocHJpdmF0ZSkgIEFsaWdu
bWVudCBwYWRkaW5nLgorICAgICAgKiAgICAgICAgICAgICAgRG8gbm90IHVzZSwgcmVzZXJ2ZWQg
Zm9yIHVzZSBieSB0aGUgVVRleHQgZnJhbWV3b3JrIG9ubHkuCisgICAgICAqICAgQGludGVybmFs
CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgcmVzZXJ2ZWQxLCAvKiogQGludGVybmFsICov
IHJlc2VydmVkMiwgLyoqIEBpbnRlcm5hbCAqLyByZXNlcnZlZDM7CisKKworICAgIC8qKgorICAg
ICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0Q2xvbmUKKyAgICAgKgorICAg
ICAqIEBzZWUgVVRleHRDbG9uZQorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAg
IFVUZXh0Q2xvbmUgKmNsb25lOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgZnVuY3Rpb24g
cG9pbnRlciBmb3IgVVRleHRMZW5ndGgKKyAgICAgKiBNYXkgYmUgZXhwZW5zaXZlIHRvIGNvbXB1
dGUhCisgICAgICoKKyAgICAgKiBAc2VlIFVUZXh0TGVuZ3RoCisgICAgICogQHN0YWJsZSBJQ1Ug
My42CisgICAgICovCisgICAgVVRleHROYXRpdmVMZW5ndGggKm5hdGl2ZUxlbmd0aDsKKworICAg
IC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9uIHBvaW50ZXIgZm9yIFVUZXh0QWNjZXNzLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dEFjY2VzcworICAgICAqIEBzdGFibGUgSUNVIDMuNgor
ICAgICAqLworICAgIFVUZXh0QWNjZXNzICphY2Nlc3M7CisKKyAgICAvKioKKyAgICAgKiAocHVi
bGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dEV4dHJhY3QuCisgICAgICoKKyAgICAgKiBA
c2VlIFVUZXh0RXh0cmFjdAorICAgICAqIEBzdGFibGUgSUNVIDMuNgorICAgICAqLworICAgIFVU
ZXh0RXh0cmFjdCAqZXh0cmFjdDsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIEZ1bmN0aW9u
IHBvaW50ZXIgZm9yIFVUZXh0UmVwbGFjZS4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRSZXBs
YWNlCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRSZXBsYWNlICpy
ZXBsYWNlOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3Ig
VVRleHRDb3B5LgorICAgICAqCisgICAgICogQHNlZSBVVGV4dENvcHkKKyAgICAgKiBAc3RhYmxl
IElDVSAzLjYKKyAgICAgKi8KKyAgICBVVGV4dENvcHkgKmNvcHk7CisKKyAgICAvKioKKyAgICAg
KiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZvciBVVGV4dE1hcE9mZnNldFRvTmF0aXZlLgor
ICAgICAqCisgICAgICogQHNlZSBVVGV4dE1hcE9mZnNldFRvTmF0aXZlCisgICAgICogQHN0YWJs
ZSBJQ1UgMy42CisgICAgICovCisgICAgVVRleHRNYXBPZmZzZXRUb05hdGl2ZSAqbWFwT2Zmc2V0
VG9OYXRpdmU7CisKKyAgICAvKioKKyAgICAgKiAocHVibGljKSBGdW5jdGlvbiBwb2ludGVyIGZv
ciBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNi4KKyAgICAgKgorICAgICAqIEBzZWUgVVRleHRN
YXBOYXRpdmVJbmRleFRvVVRGMTYKKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAg
ICBVVGV4dE1hcE5hdGl2ZUluZGV4VG9VVEYxNiAqbWFwTmF0aXZlSW5kZXhUb1VURjE2OworCisg
ICAgLyoqCisgICAgICogKHB1YmxpYykgRnVuY3Rpb24gcG9pbnRlciBmb3IgVVRleHRDbG9zZS4K
KyAgICAgICoKKyAgICAgICogQHNlZSBVVGV4dENsb3NlCisgICAgICAqIEBzdGFibGUgSUNVIDMu
NgorICAgICAgKi8KKyAgICBVVGV4dENsb3NlICAqY2xvc2U7CisKKyAgICAvKioKKyAgICAgICog
KHByaXZhdGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAg
ICAgKi8KKyAgICBVVGV4dENsb3NlICAqc3BhcmUxOworICAgIAorICAgIC8qKgorICAgICAgKiAo
cHJpdmF0ZSkgIFNwYXJlIGZ1bmN0aW9uIHBvaW50ZXIKKyAgICAgICogQGludGVybmFsCisgICAg
ICAqLworICAgIFVUZXh0Q2xvc2UgICpzcGFyZTI7CisKKyAgICAvKioKKyAgICAgICogKHByaXZh
dGUpICBTcGFyZSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAqIEBpbnRlcm5hbAorICAgICAgKi8K
KyAgICBVVGV4dENsb3NlICAqc3BhcmUzOworCit9OworLyoqCisgKiBGdW5jdGlvbiBkaXNwYXRj
aCB0YWJsZSBmb3IgVVRleHQKKyAqIEBzZWUgVVRleHRGdW5jcworICovCit0eXBlZGVmIHN0cnVj
dCBVVGV4dEZ1bmNzIFVUZXh0RnVuY3M7CisKKyAvKioKKyAgKiAgIFVUZXh0IHN0cnVjdC4gIFBy
b3ZpZGVzIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBVVGV4dCBhY2Nlc3MgY29k
ZQorICAqICAgICAgICAgICAgICAgICAgYW5kIHRoZSBVVGV4dCBwcm92aWRlciBjb2RlIHRoYXQg
d29ya3Mgb24gc3BlY2lmaWMga2luZHMgb2YKKyAgKiAgICAgICAgICAgICAgICAgIHRleHQgIChV
VEYtOCwgbm9uY29udGlndW91cyBVVEYtMTYsIHdoYXRldmVyLikKKyAgKgorICAqICAgICAgICAg
ICAgICAgICAgQXBwbGljYXRpb25zIHRoYXQgYXJlIHVzaW5nIHByZWRlZmluZWQgdHlwZXMgb2Yg
dGV4dCBwcm92aWRlcnMKKyAgKiAgICAgICAgICAgICAgICAgIHRvIHBhc3MgdGV4dCBkYXRhIHRv
IElDVSBzZXJ2aWNlcyB3aWxsIGhhdmUgbm8gbmVlZCB0byB2aWV3IHRoZQorICAqICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzIG9mIHRoZSBVVGV4dCBzdHJ1Y3RzIHRoYXQgdGhleSBvcGVuLgor
ICAqCisgICogQHN0YWJsZSBJQ1UgMy42CisgICovCitzdHJ1Y3QgVVRleHQgeworICAgIC8qKgor
ICAgICAqICAgICAocHJpdmF0ZSkgIE1hZ2ljLiAgVXNlZCB0byBoZWxwIGRldGVjdCB3aGVuIFVU
ZXh0IGZ1bmN0aW9ucyBhcmUgaGFuZGVkCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBp
bnZhbGlkIG9yIHVuaXRpYWxpemVkIFVUZXh0IHN0cnVjdHMuCisgICAgICogICAgICAgICAgICAg
ICAgICAgICAgICB1dGV4dF9vcGVuWFlaKCkgZnVuY3Rpb25zIHRha2UgYW4gaW5pdGlhbGl6ZWQs
CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IG9wZW4s
IFVUZXh0IHN0cnVjdCBhcyBhbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
YWwgZmlsbC1pbiBwYXJhbWV0ZXIuICBUaGlzIG1hZ2ljIGZpZWxkCisgICAgICogICAgICAgICAg
ICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNoZWNrIGZvciB0aGF0IGluaXRpYWxpemF0aW9uLgor
ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCBwcm92aWRlciBjbG9zZSBmdW5jdGlv
bnMgbXVzdCBOT1QgY2xlYXIKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWdp
YyBmaWVsZCBiZWNhdXNlIHRoYXQgd291bGQgcHJldmVudAorICAgICAqICAgICAgICAgICAgICAg
ICAgICAgICAgcmV1c2Ugb2YgdGhlIFVUZXh0IHN0cnVjdC4KKyAgICAgKiBAaW50ZXJuYWwKKyAg
ICAgKi8KKyAgICB1aW50MzJfdCAgICAgICBtYWdpYzsKKworCisgICAgLyoqCisgICAgICogICAg
IChwcml2YXRlKSAgRmxhZ3MgZm9yIG1hbmFnaW5nIHRoZSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5n
IG9mCisgICAgICogICAgICAgICAgICAgICAgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFVU
ZXh0LgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIGludDMyX3QgICAgICAgIGZsYWdz
OworCisKKyAgICAvKioKKyAgICAgICogIFRleHQgcHJvdmlkZXIgcHJvcGVydGllcy4gIFRoaXMg
c2V0IG9mIGZsYWdzIGlzIG1haW50YWludGVkIGJ5IHRoZQorICAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dCBwcm92aWRlciBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICogIEBz
dGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICAgcHJvdmlkZXJQcm9w
ZXJ0aWVzOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgc2l6ZU9mU3RydWN0PXNpemVvZihV
VGV4dCkKKyAgICAgKiBBbGxvd3MgcG9zc2libGUgYmFja3dhcmQgY29tcGF0aWJsZSBleHRlbnNp
b24uCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgKi8KKyAgICBpbnQzMl90
ICAgICAgICAgc2l6ZU9mU3RydWN0OworICAgIAorICAgIC8qIC0tLS0tLSAxNiBieXRlIGFsaWdu
bWVudCBib3VuZGFyeSAtLS0tLS0tLS0tLSAgKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAg
KHByb3RlY3RlZCkgTmF0aXZlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgcG9zaXRpb24g
Zm9sbG93aW5nCisgICAgICAqICAgICAgICAgICAgICB0aGUgY3VycmVudCBjaHVuay4KKyAgICAg
ICogIEBzdGFibGUgSUNVIDMuNgorICAgICAgKi8KKyAgICBpbnQ2NF90ICAgICAgICAgY2h1bmtO
YXRpdmVMaW1pdDsKKworICAgIC8qKgorICAgICAqICAgKHByb3RlY3RlZCkgIFNpemUgaW4gYnl0
ZXMgb2YgdGhlIGV4dHJhIHNwYWNlIChwRXh0cmEpLgorICAgICAqICBAc3RhYmxlIElDVSAzLjQK
KyAgICAgKi8KKyAgICBpbnQzMl90ICAgICAgICBleHRyYVNpemU7CisKKyAgICAvKioKKyAgICAg
ICogICAgKHByb3RlY3RlZCkgVGhlIGhpZ2hlc3QgY2h1bmsgb2Zmc2V0IHdoZXJlIG5hdGl2ZSBp
bmRleGluZyBhbmQKKyAgICAgICogICAgY2h1bmsgKFVURi0xNikgaW5kZXhpbmcgY29ycmVzcG9u
ZC4gIEZvciBVVEYtMTYgc291cmNlcywgdmFsdWUKKyAgICAgICogICAgd2lsbCBiZSBlcXVhbCB0
byBjaHVua0xlbmd0aC4KKyAgICAgICoKKyAgICAgICogICAgQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBuYXRpdmVJbmRleGluZ0xpbWl0OworCisgICAgLyog
LS0tLSAxNiBieXRlIGFsaWdubWVudCBib3VuZGFyeS0tLS0tLSAqLworICAgIAorICAgIC8qKgor
ICAgICAqICAocHJvdGVjdGVkKSBOYXRpdmUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBp
biB0aGUgdGV4dCBjaHVuay4KKyAgICAgKiAgQHN0YWJsZSBJQ1UgMy42CisgICAgICovCisgICAg
aW50NjRfdCAgICAgICAgIGNodW5rTmF0aXZlU3RhcnQ7CisKKyAgICAvKioKKyAgICAgKiAgKHBy
b3RlY3RlZCkgQ3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gd2l0aGluIHRoZSB0ZXh0IGNodW5r
IChVVEYtMTYgYnVmZmVyKS4KKyAgICAgKiAgVGhpcyBpcyB0aGUgaW5kZXggdG8gdGhlIGNoYXJh
Y3RlciB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdXRleHRfbmV4dDMyKCkuCisgICAgICogIEBz
dGFibGUgSUNVIDMuNgorICAgICAqLworICAgIGludDMyX3QgICAgICAgICBjaHVua09mZnNldDsK
KworICAgIC8qKgorICAgICAqICAocHJvdGVjdGVkKSBMZW5ndGggdGhlIHRleHQgY2h1bmsgKFVU
Ri0xNiBidWZmZXIpLCBpbiBVQ2hhcnMuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAgICAq
LworICAgIGludDMyX3QgICAgICAgICBjaHVua0xlbmd0aDsKKworICAgIC8qIC0tLS0gMTYgIGJ5
dGUgYWxpZ25tZW50IGJvdW5kYXJ5LS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAqICAocHJv
dGVjdGVkKSAgcG9pbnRlciB0byBhIGNodW5rIG9mIHRleHQgaW4gVVRGLTE2IGZvcm1hdC4KKyAg
ICAgKiAgTWF5IHJlZmVyIGVpdGhlciB0byBvcmlnaW5hbCBzdG9yYWdlIG9mIHRoZSBzb3VyY2Ug
b2YgdGhlIHRleHQsIG9yCisgICAgICogIGlmIGNvbnZlcnNpb24gd2FzIHJlcXVpcmVkLCB0byBh
IGJ1ZmZlciBvd25lZCBieSB0aGUgVVRleHQuCisgICAgICogIEBzdGFibGUgSUNVIDMuNgorICAg
ICAqLworICAgIGNvbnN0IFVDaGFyICAgICpjaHVua0NvbnRlbnRzOworCisgICAgIC8qKgorICAg
ICAgKiAocHVibGljKSAgICAgUG9pbnRlciB0byBEaXNwYXRjaCB0YWJsZSBmb3IgYWNjZXNzaW5n
IGZ1bmN0aW9ucyBmb3IgdGhpcyBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICAqLworICAgIGNvbnN0IFVUZXh0RnVuY3MgICAgICpwRnVuY3M7CisKKyAgICAvKioKKyAgICAg
KiAgKHByb3RlY3RlZCkgIFBvaW50ZXIgdG8gYWRkaXRpb25hbCBzcGFjZSByZXF1ZXN0ZWQgYnkg
dGhlCisgICAgICogICAgICAgICAgICAgICB0ZXh0IHByb3ZpZGVyIGR1cmluZyB0aGUgdXRleHRf
b3BlbiBvcGVyYXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgdm9p
ZCAgICAgICAgICAqcEV4dHJhOworCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRl
ciB0byBzdHJpbmcgb3IgdGV4dC1jb250YWluaW4gb2JqZWN0IG9yIHNpbWlsYXIuCisgICAgICog
VGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSB0ZXh0IHRoYXQgdGhpcyBVVGV4dCBpcyB3cmFwcGlu
ZywgaW4gYSBmb3JtYXQKKyAgICAgKiAgdGhhdCBpcyBrbm93biB0byB0aGUgdGV4dCBwcm92aWRl
ciBmdW5jdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICovCisgICAgY29uc3Qg
dm9pZCAgICpjb250ZXh0OworCisgICAgLyogLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tICovCisKKyAgICAvKioKKyAgICAgKiAocHJvdGVjdGVkKSBQb2ludGVyIGZpZWxkcyBhdmFp
bGFibGUgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAgKiBOb3QgdXNlZCBieSBV
VGV4dCBjb21tb24gY29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSAzLjYKKyAgICAgKi8KKyAgICBj
b25zdCB2b2lkICAgICAqcDsgCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgUG9pbnRlciBm
aWVsZHMgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisgICAgICogTm90
IHVzZWQgYnkgVVRleHQgY29tbW9uIGNvZGUuCisgICAgICogQHN0YWJsZSBJQ1UgMy42CisgICAg
ICovCisgICAgY29uc3Qgdm9pZCAgICAgKnE7CisgICAgIC8qKgorICAgICAqIChwcm90ZWN0ZWQp
IFBvaW50ZXIgZmllbGRzIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgor
ICAgICAqIE5vdCB1c2VkIGJ5IFVUZXh0IGNvbW1vbiBjb2RlLgorICAgICAqIEBzdGFibGUgSUNV
IDMuNgorICAgICAgKi8KKyAgICBjb25zdCB2b2lkICAgICAqcjsKKworICAgIC8qKgorICAgICAg
KiAgUHJpdmF0ZSBmaWVsZCByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSB0aGUgVVRleHQgZnJh
bWV3b3JrCisgICAgICAqICAgICBpdHNlbGYuICBUaGlzIGlzIG5vdCB0byBiZSB0b3VjaGVkIGJ5
IHRoZSB0ZXh0IHByb3ZpZGVycy4KKyAgICAgICogQGludGVybmFsIElDVSAzLjQKKyAgICAgICov
CisgICAgdm9pZCAgICAgICAgICAgKnByaXZQOworCisKKyAgICAvKiAtLS0gMTYgYnl0ZSBhbGln
bm1lbnQgYm91bmRhcnktLS0gKi8KKyAgICAKKworICAgIC8qKgorICAgICAgKiAocHJvdGVjdGVk
KSBJbnRlZ2VyIGZpZWxkIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIHRleHQgcHJvdmlkZXIuCisg
ICAgICAqIE5vdCB1c2VkIGJ5IHRoZSBVVGV4dCBmcmFtZXdvcmssIG9yIGJ5IHRoZSBjbGllbnQg
KHVzZXIpIG9mIHRoZSBVVGV4dC4KKyAgICAgICogQHN0YWJsZSBJQ1UgMy40CisgICAgICAqLwor
ICAgIGludDY0X3QgICAgICAgICBhOworCisgICAgLyoqCisgICAgICAqIChwcm90ZWN0ZWQpIElu
dGVnZXIgZmllbGQgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgdGV4dCBwcm92aWRlci4KKyAgICAg
ICogTm90IHVzZWQgYnkgdGhlIFVUZXh0IGZyYW1ld29yaywgb3IgYnkgdGhlIGNsaWVudCAodXNl
cikgb2YgdGhlIFVUZXh0LgorICAgICAgKiBAc3RhYmxlIElDVSAzLjQKKyAgICAgICovCisgICAg
aW50MzJfdCAgICAgICAgIGI7CisKKyAgICAvKioKKyAgICAgICogKHByb3RlY3RlZCkgSW50ZWdl
ciBmaWVsZCByZXNlcnZlZCBmb3IgdXNlIGJ5IHRoZSB0ZXh0IHByb3ZpZGVyLgorICAgICAgKiBO
b3QgdXNlZCBieSB0aGUgVVRleHQgZnJhbWV3b3JrLCBvciBieSB0aGUgY2xpZW50ICh1c2VyKSBv
ZiB0aGUgVVRleHQuCisgICAgICAqIEBzdGFibGUgSUNVIDMuNAorICAgICAgKi8KKyAgICBpbnQz
Ml90ICAgICAgICAgYzsKKworICAgIC8qICAtLS0tIDE2IGJ5dGUgYWxpZ25tZW50IGJvdW5kYXJ5
LS0tLSAqLworCisKKyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9y
IGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAg
VGhpcyBpcyBub3QgdG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAq
IEBpbnRlcm5hbCBJQ1UgMy40CisgICAgICAqLworICAgIGludDY0X3QgICAgICAgICBwcml2QTsK
KyAgICAvKioKKyAgICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2Ug
YnkgdGhlIFVUZXh0IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3Qg
dG8gYmUgdG91Y2hlZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJ
Q1UgMy40CisgICAgICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QjsKKyAgICAvKioKKyAg
ICAgICogIFByaXZhdGUgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgdGhlIFVUZXh0
IGZyYW1ld29yaworICAgICAgKiAgICAgaXRzZWxmLiAgVGhpcyBpcyBub3QgdG8gYmUgdG91Y2hl
ZCBieSB0aGUgdGV4dCBwcm92aWRlcnMuCisgICAgICAqIEBpbnRlcm5hbCBJQ1UgMy40CisgICAg
ICAqLworICAgIGludDMyX3QgICAgICAgICBwcml2QzsKK307CisKKworLyoqCisgKiAgQ29tbW9u
IGZ1bmN0aW9uIGZvciB1c2UgYnkgVGV4dCBQcm92aWRlciBpbXBsZW1lbnRhdGlvbnMgdG8gYWxs
b2NhdGUgYW5kL29yIGluaXRpYWxpemUKKyAqICBhIG5ldyBVVGV4dCBzdHJ1Y3QuICBUbyBiZSBj
YWxsZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHV0ZXh0X29wZW4oKSBmdW5jdGlvbnMuCisg
KiAgSWYgdGhlIHN1cHBsaWVkIFVUZXh0IHBhcmFtZXRlciBpcyBudWxsLCBhIG5ldyBVVGV4dCBz
dHJ1Y3Qgd2lsbCBiZSBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCisgKiAgSWYgdGhlIHN1cHBsaWVk
IFVUZXh0IGlzIGFscmVhZHkgb3BlbiwgdGhlIHByb3ZpZGVyJ3MgY2xvc2UgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQKKyAqICBzbyB0aGF0IHRoZSBzdHJ1Y3QgY2FuIGJlIHJldXNlZCBieSB0aGUg
b3BlbiB0aGF0IGlzIGluIHByb2dyZXNzLgorICoKKyAqIEBwYXJhbSB1dCAgIHBvaW50ZXIgdG8g
YSBVVGV4dCBzdHJ1Y3QgdG8gYmUgcmUtdXNlZCwgb3IgbnVsbCBpZiBhIG5ldyBVVGV4dAorICog
ICAgICAgICAgICAgc2hvdWxkIGJlIGFsbG9jYXRlZC4KKyAqIEBwYXJhbSBleHRyYVNwYWNlIFRo
ZSBhbW91bnQgb2YgYWRkaXRpb25hbCBzcGFjZSB0byBiZSBhbGxvY2F0ZWQgYXMgcGFydAorICog
ICAgICAgICAgICAgb2YgdGhpcyBVVGV4dCwgZm9yIHVzZSBieSB0eXBlcyBvZiBwcm92aWRlcnMg
dGhhdCByZXF1aXJlCisgKiAgICAgICAgICAgICBhZGRpdGlvbmFsIHN0b3JhZ2UuCisgKiBAcGFy
YW0gc3RhdHVzIEVycm9ycyBhcmUgcmV0dXJuZWQgaGVyZS4KKyAqIEByZXR1cm4gcG9pbnRlciB0
byB0aGUgVVRleHQsIGFsbG9jYXRlZCBpZiBuZWNlc3NhcnksIHdpdGggZXh0cmEgc3BhY2Ugc2V0
IHVwIGlmIHJlcXVlc3RlZC4KKyAqIEBzdGFibGUgSUNVIDMuNAorICovCitVX1NUQUJMRSBVVGV4
dCAqIFVfRVhQT1JUMgordXRleHRfc2V0dXAoVVRleHQgKnV0LCBpbnQzMl90IGV4dHJhU3BhY2Us
IFVFcnJvckNvZGUgKnN0YXR1cyk7CisKKyNpZm5kZWYgVV9ISURFX0lOVEVSTkFMX0FQSQorLyoq
CisgICogQGludGVybmFsCisgICogIFZhbHVlIHVzZWQgdG8gaGVscCBpZGVudGlmeSBjb3JyZWN0
bHkgaW5pdGlhbGl6ZWQgVVRleHQgc3RydWN0cy4KKyAgKiAgTm90ZTogIG11c3QgYmUgcHVibGlj
bHkgdmlzaWJsZSBzbyB0aGF0IFVURVhUX0lOSVRJQUxJWkVSIGNhbiBhY2Nlc3MgaXQuCisgICov
CitlbnVtIHsKKyAgICBVVEVYVF9NQUdJQyA9IDB4MzQ1YWQ4MmMKK307CisjZW5kaWYgIC8qIFVf
SElERV9JTlRFUk5BTF9BUEkgKi8KKworLyoqCisgKiBpbml0aWFsaXplciB0byBiZSB1c2VkIHdp
dGggbG9jYWwgKHN0YWNrKSBpbnN0YW5jZXMgb2YgYSBVVGV4dAorICogIHN0cnVjdC4gIFVUZXh0
IHN0cnVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgcGFzc2luZworICogIHRoZW0gdG8g
b25lIG9mIHRoZSB1dGV4dF9vcGVuIGZ1bmN0aW9ucy4KKyAqCisgKiBAc3RhYmxlIElDVSAzLjYK
KyAqLworI2RlZmluZSBVVEVYVF9JTklUSUFMSVpFUiB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgIFVURVhUX01BR0lDLCAgICAgICAg
ICAvKiBtYWdpYyAgICAgICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAg
ICAgICAgICAgICAgICAgLyogZmxhZ3MgICAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAg
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHByb3ZpZGVyUHJvcHMgICAgICAgICovIFwK
KyAgICAgICAgICAgICAgICAgIHNpemVvZihVVGV4dCksICAgICAgICAvKiBzaXplT2ZTdHJ1Y3Qg
ICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyog
Y2h1bmtOYXRpdmVMaW1pdCAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAg
ICAgICAgICAgIC8qIGV4dHJhU2l6ZSAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAg
IDAsICAgICAgICAgICAgICAgICAgICAvKiBuYXRpdmVJbmRleGluZ0xpbWl0ICAqLyBcCisgICAg
ICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogY2h1bmtOYXRpdmVTdGFydCAg
ICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIGNodW5r
T2Zmc2V0ICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAvKiBjaHVua0xlbmd0aCAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxM
LCAgICAgICAgICAgICAgICAgLyogY2h1bmtDb250ZW50cyAgICAgICAgKi8gXAorICAgICAgICAg
ICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgIC8qIHBGdW5jcyAgICAgICAgICAgICAgICov
IFwKKyAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwRXh0cmEgICAg
ICAgICAgICAgICAqLyBcCisgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAg
LyogY29udGV4dCAgICAgICAgICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgTlVMTCwgTlVM
TCwgTlVMTCwgICAgIC8qIHAsIHEsIHIgICAgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAg
ICAgIE5VTEwsICAgICAgICAgICAgICAgICAvKiBwcml2UCAgICAgICAgICAgICAgICAqLyBcCisg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAgICAgICAgICAgICAgLyogYSwgYiwgYyAgICAgICAg
ICAgICAgKi8gXAorICAgICAgICAgICAgICAgICAgMCwgMCwgMCAgICAgICAgICAgICAgIC8qIHBy
aXZBLEIsQywgICAgICAgICAgICovIFwKKyAgICAgICAgICAgICAgICAgIH0KKworCitVX0NERUNM
X0VORAorCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDIxNTU5NjY3NDg0Njgy
MTRjMDM2NThkMDNhNWQ3NzQ2ZmZlODA4YTQuLjZlY2RjZTZiZTdmZTg0ZTFmMGVhMjgyM2NiOGM5
MzVlYjlkNzIwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xNDAsNiArMTQwLDcgQEAgc2V0
KFdURl9IRUFERVJTCiAgICAgdGV4dC9DU3RyaW5nLmgKICAgICB0ZXh0L0ludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uaAogICAgIHRleHQvTENoYXIuaAorICAgIHRleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmgKICAgICB0ZXh0L1N0cmluZ0J1ZmZlci5oCiAgICAgdGV4dC9TdHJpbmdDb21t
b24uaAogICAgIHRleHQvU3RyaW5nSGFzaC5oCkBAIC0xNDcsOSArMTQ4LDE1IEBAIHNldChXVEZf
SEVBREVSUwogICAgIHRleHQvU3RyaW5nVmlldy5oCiAgICAgdGV4dC9TeW1ib2xJbXBsLmgKICAg
ICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmgKKyAgICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKKyAg
ICB0ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaAogICAgIHRleHQvVW5pcXVlZFN0
cmluZ0ltcGwuaAogICAgIHRleHQvV1RGU3RyaW5nLmgKIAorICAgIHRleHQvaWN1L1VUZXh0UHJv
dmlkZXIuaAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaAorICAgIHRleHQvaWN1
L1VUZXh0UHJvdmlkZXJVVEYxNi5oCisKICAgICB0aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCiAK
ICAgICB1bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgKQEAgLTIyMSw4ICsyMjgsMTMgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAogICAgIHRleHQvU3RyaW5nVmll
dy5jcHAKICAgICB0ZXh0L1N5bWJvbFJlZ2lzdHJ5LmNwcAorICAgIHRleHQvVGV4dEJyZWFrSXRl
cmF0b3IuY3BwCiAgICAgdGV4dC9XVEZTdHJpbmcuY3BwCiAKKyAgICB0ZXh0L2ljdS9VVGV4dFBy
b3ZpZGVyLmNwcAorICAgIHRleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisgICAgdGV4
dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmNwcAorCiAgICAgdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuY3BwCiAKICAgICB1bmljb2RlL1VURjguY3BwCkBAIC0yMzQsNiArMjQ2LDcgQEAgc2V0KFdU
Rl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V1RGX0RJUn0vd3RmIgogICAgICIke1dURl9E
SVJ9L3d0Zi9kdG9hIgogICAgICIke1dURl9ESVJ9L3d0Zi90ZXh0IgorICAgICIke1dURl9ESVJ9
L3d0Zi90ZXh0L2ljdSIKICAgICAiJHtXVEZfRElSfS93dGYvdGhyZWFkcyIKICAgICAiJHtXVEZf
RElSfS93dGYvdW5pY29kZSIKICAgICAiJHtUSElSRFBBUlRZX0RJUn0iCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDcxYTUyYWU1ZTFlMjdhNGM4ODk1NjU3Y2Q0ZTA1ZjM4YmM2YTBhOWUu
LmJhMTU0NzQ4NzAxOWIyMWMzN2NmOTZmOWUwOTM3MmI4ZGQxZGM4OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC0xLDYgKzEsOCBAQAogbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAg
ICBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNVbml4LmNwcAogCisgICAgdGV4dC9lZmwv
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKKwogICAgIGVmbC9EaXNwYXRjaFF1
ZXVlRWZsLmNwcAogICAgIGVmbC9NYWluVGhyZWFkRWZsLmNwcAogICAgIGVmbC9SdW5Mb29wRWZs
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyMGI5Yjk5M2E3YWE3ZjhjNTY1Y2Iy
ODMyNDZjY2JmZDViMDc1NDAyLi5mNjE5ZGQ1N2M3Nzg4ZGUyYzk1MzcyZDJiYWVhOTk4MGY3NmI1
N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOCw2ICs4LDggQEAgbGlzdChBUFBF
TkQgV1RGX1NPVVJDRVMKICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcAogICAgIGdsaWIvUnVu
TG9vcEdMaWIuY3BwCiAgICAgUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzVW5peC5jcHAK
KworICAgIHRleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwCiApCiAK
IGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
Y2UzZGRiY2IwODFiZjczNzllNTM1N2QxN2JiOWJiYmRhZDBhOTNlOS4uNDkzYjc5OGQ2MzY2NTJm
MjMyZWEzZjk2ZDdjZjg5Zjg5MzIzYjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTE4LDYgKzE4LDggQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBTY2hlZHVsZVBhaXJD
Ri5jcHAKICAgICBTY2hlZHVsZVBhaXJNYWMubW0KIAorICAgIHRleHQvbWFjL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KKwogICAgIGNmL1J1bkxvb3BDRi5jcHAKIAogICAgIGNv
Y29hL1dvcmtRdWV1ZUNvY29hLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAzYjNm
OThiYmNjZmQ5MDI5Njk0ZmRlMjUyNjExMjdhNjEyYmRjMzIzLi5hMGJkMTMyYzNlNGMxNzIzYjg5
MTVkMTBiYjk0MzQ0ZWZkZTAyOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMSw1
ICsxLDcgQEAKIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCi0gICAgUExhdGZvcm1Vc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzV2luLmNwcAorICAgIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc1dp
bi5jcHAKKworICAgIHRleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3Bw
CiAKICAgICB0ZXh0L2NmL0F0b21pY1N0cmluZ0ltcGxDRi5jcHAKICAgICB0ZXh0L2NmL1N0cmlu
Z0NGLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlueUxSVUNhY2hlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAppbmRleCA2NzhmOGJmZDEyMGEzYTM2MTFiM2NjZThl
MWNlOThmZWM5YWFjMDJkLi45MWIzMWY5ZGRmOTAwYTY2Zjk3ODg4YjljM2YxMWZiYjU2NjEyNTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaW55TFJVQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaW55TFJVQ2FjaGUuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5
cGVuYW1lIFZhbHVlVHlwZT4KIHN0cnVjdCBUaW55TFJVQ2FjaGVQb2xpY3kgewpAQCAtNzgsNCAr
NzgsNyBAQCBwcml2YXRlOgogCiB9CiAKK3VzaW5nIFdURjo6VGlueUxSVUNhY2hlOwordXNpbmcg
V1RGOjpUaW55TFJVQ2FjaGVQb2xpY3k7CisKICNlbmRpZiAvLyBUaW55TFJVQ2FjaGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDc2NjA3ZDJhOTNkNWY4YjEwNDQ3MGVkODdjNDRkOWNjZjA4OTMxOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKQEAg
LTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCisjZGVmaW5lIExpbmVCcmVh
a0l0ZXJhdG9yUG9vbElDVV9oCisKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKyNpbmNsdWRlIDx1bmljb2Rl
L3VicmsuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNz
IExpbmVCcmVha0l0ZXJhdG9yUG9vbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGluZUJy
ZWFrSXRlcmF0b3JQb29sKTsKK3B1YmxpYzoKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2woKSB7
IH0KKworICAgIHN0YXRpYyBMaW5lQnJlYWtJdGVyYXRvclBvb2wmIHNoYXJlZFBvb2woKQorICAg
IHsKKyAgICAgICAgc3RhdGljIFdURjo6VGhyZWFkU3BlY2lmaWM8TGluZUJyZWFrSXRlcmF0b3JQ
b29sPiogcG9vbCA9IG5ldyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9v
bD47CisgICAgICAgIHJldHVybiAqKnBvb2w7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBt
YWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGxv
Y2FsZVdpdGhLZXl3b3JkOworICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmQobG9jYWxl
KTsKKyAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBwZW5kTGl0ZXJhbCgiQGJyZWFrPSIpOwor
ICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTRMb29zZToKKyAg
ICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoImxvb3NlIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5v
cm1hbDoKKyAgICAgICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIm5vcm1h
bCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTRTdHJpY3Q6CisgICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRl
cmFsKCJzdHJpY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBsb2NhbGVXaXRoS2V5d29yZC50b1N0cmluZygpOworICAgIH0KKworICAgIFRleHRCcmVh
a0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVy
YXRvck1vZGUgbW9kZSwgYm9vbCBpc0NKSykKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZyBs
b2NhbGVXaXRoT3B0aW9uYWxCcmVha0tleXdvcmQ7CisgICAgICAgIGlmIChtb2RlID09IExpbmVC
cmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICAgICAgbG9jYWxlV2l0aE9wdGlvbmFsQnJl
YWtLZXl3b3JkID0gbG9jYWxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbGVXaXRo
T3B0aW9uYWxCcmVha0tleXdvcmQgPSBtYWtlTG9jYWxlV2l0aEJyZWFrS2V5d29yZChsb2NhbGUs
IG1vZGUpOworCisgICAgICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IDA7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb29sLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAobV9wb29sW2ldLmZpcnN0ID09IGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29y
ZCkgeworICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gbV9wb29sW2ldLnNlY29uZDsKKyAgICAg
ICAgICAgICAgICBtX3Bvb2wucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpdGVyYXRvcikgeworICAgICAg
ICAgICAgaXRlcmF0b3IgPSBvcGVuTGluZUJyZWFrSXRlcmF0b3IobG9jYWxlV2l0aE9wdGlvbmFs
QnJlYWtLZXl3b3JkLCBtb2RlLCBpc0NKSyk7CisgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKCFt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworICAgICAgICBtX3ZlbmRlZEl0
ZXJhdG9ycy5zZXQoaXRlcmF0b3IsIGxvY2FsZVdpdGhPcHRpb25hbEJyZWFrS2V5d29yZCk7Cisg
ICAgICAgIHJldHVybiBpdGVyYXRvcjsKKyAgICB9CisKKyAgICB2b2lkIHB1dChUZXh0QnJlYWtJ
dGVyYXRvciogaXRlcmF0b3IpCisgICAgeworICAgICAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBt
X3ZlbmRlZEl0ZXJhdG9ycy5jb250YWlucyhpdGVyYXRvcikpOworCisgICAgICAgIGlmIChtX3Bv
b2wuc2l6ZSgpID09IGNhcGFjaXR5KSB7CisgICAgICAgICAgICBjbG9zZUxpbmVCcmVha0l0ZXJh
dG9yKG1fcG9vbFswXS5zZWNvbmQpOworICAgICAgICAgICAgbV9wb29sLnJlbW92ZSgwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1fcG9vbC5hcHBlbmQoRW50cnkobV92ZW5kZWRJdGVyYXRvcnMu
dGFrZShpdGVyYXRvciksIGl0ZXJhdG9yKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgY2FwYWNpdHkgPSA0OworCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8QXRv
bWljU3RyaW5nLCBUZXh0QnJlYWtJdGVyYXRvcio+IEVudHJ5OworICAgIHR5cGVkZWYgVmVjdG9y
PEVudHJ5LCBjYXBhY2l0eT4gUG9vbDsKKyAgICBQb29sIG1fcG9vbDsKKyAgICBIYXNoTWFwPFRl
eHRCcmVha0l0ZXJhdG9yKiwgQXRvbWljU3RyaW5nPiBtX3ZlbmRlZEl0ZXJhdG9yczsKKworICAg
IGZyaWVuZCBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVha0l0ZXJhdG9yUG9vbD46Om9wZXJh
dG9yIExpbmVCcmVha0l0ZXJhdG9yUG9vbCooKTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ODI0ZTY0MThm
NDI4MmIzZjlkMzUxZTU1MjBjNWRmY2MyYmEyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDkyOSBAQAorLyoK
KyAqIChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorCisj
aW5jbHVkZSAiTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCisjaW5jbHVkZSAiVVRleHRQcm92
aWRlckxhdGluMS5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVmlldy5oPgorCisvLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJldHRlciBuYW1lCisjZGVmaW5l
IEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkpCisKK25hbWVz
cGFjZSBXVEYgeworCisvLyBJdGVyYXRvciBpbml0aWFsaXphdGlvbgorCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIGluaXRpYWxpemVJdGVyYXRvcihVQnJlYWtJdGVyYXRvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbG9jYWxlID0gY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkpCit7CisgICAg
VUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJr
X29wZW4odHlwZSwgbG9jYWxlLCAwLCAwLCAmb3BlblN0YXR1cykpOworICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNVIGNvdWxkIG5vdCBvcGVuIGEgYnJl
YWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShvcGVuU3RhdHVzKSwgb3BlblN0YXR1
cyk7CisgICAgcmV0dXJuIGl0ZXJhdG9yOworfQorCisjaWYgIVBMQVRGT1JNKElPUykKKworc3Rh
dGljIFRleHRCcmVha0l0ZXJhdG9yKiBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoY29uc3Qg
Y2hhciogYnJlYWtSdWxlcykKK3sKKyAgICBVUGFyc2VFcnJvciBwYXJzZVN0YXR1czsKKyAgICBV
RXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gc3RybGVuKGJyZWFrUnVsZXMpOworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0g
U3RyaW5nVmlldyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYnJlYWtSdWxlcyksIGxl
bmd0aCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3BlblJ1
bGVzKHVwY29udmVydGVkQ2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCAmcGFyc2VTdGF0dXMsICZv
cGVuU3RhdHVzKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1
cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBpdGVyYXRvcjogJXMgKCVkKSIsIHVfZXJy
b3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9
CisKKyNlbmRpZgorCisKKy8vIEl0ZXJhdG9yIHRleHQgc2V0dGluZworCitzdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIHNldFRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVyYXRvciYgaXRlcmF0
b3IsIFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKKyAg
ICAgICAgVVRleHRXaXRoQnVmZmVyIHRleHRMb2NhbDsKKyAgICAgICAgdGV4dExvY2FsLnRleHQg
PSBVVEVYVF9JTklUSUFMSVpFUjsKKyAgICAgICAgdGV4dExvY2FsLnRleHQuZXh0cmFTaXplID0g
c2l6ZW9mKHRleHRMb2NhbC5idWZmZXIpOworICAgICAgICB0ZXh0TG9jYWwudGV4dC5wRXh0cmEg
PSB0ZXh0TG9jYWwuYnVmZmVyOworCisgICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuTGF0aW4xVVRleHRQcm92aWRl
cigmdGV4dExvY2FsLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCAmb3Bl
blN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAg
ICAgIExPR19FUlJPUigidVRleHRPcGVuTGF0aW4xIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9w
ZW5TdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVi
cmtfc2V0VVRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciks
IHRleHQsICZzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3Rh
dHVzKSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJ1YnJrX3NldFVUZXh0IGZhaWxlZCB3aXRo
IHN0YXR1cyAlZCIsIHNldFRleHRTdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKworICAgICAgICB1dGV4dF9jbG9zZSh0ZXh0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBVRXJyb3JDb2RlIHNldFRleHRTdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAg
IHVicmtfc2V0VGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9y
KSwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCksICZzZXRUZXh0U3RhdHVz
KTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShzZXRUZXh0U3RhdHVzKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiAmaXRlcmF0b3I7Cit9CisKK3N0YXRp
YyBUZXh0QnJlYWtJdGVyYXRvciogc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yJiBpdGVyYXRvciwgU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IFVDaGFyKiBw
cmlvckNvbnRleHQsIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0aCkKK3sKKyAgICBpZiAoc3Ry
aW5nLmlzOEJpdCgpKSB7CisgICAgICAgIFVUZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7CisgICAg
ICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRfSU5JVElBTElaRVI7CisgICAgICAgIHRleHRMb2Nh
bC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0ZXh0TG9jYWwuYnVmZmVyKTsKKyAgICAgICAgdGV4
dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExvY2FsLmJ1ZmZlcjsKKworICAgICAgICBVRXJyb3JD
b2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFVUZXh0KiB0ZXh0ID0gb3Bl
bkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5n
dGgsICZvcGVuU3RhdHVzKTsKKyAgICAgICAgaWYgKFVfRkFJTFVSRShvcGVuU3RhdHVzKSkgewor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJvcGVuTGF0aW4xQ29udGV4dEF3YXJlVVRleHRQcm92aWRl
ciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVz
ID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJrX3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8
VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJP
UigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgdXRleHRf
Y2xvc2UodGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgVVRleHQgdGV4dExvY2FsID0gVVRF
WFRfSU5JVElBTElaRVI7CisKKyAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5VVEYxNkNvbnRleHRBd2FyZVVUZXh0
UHJvdmlkZXIoJnRleHRMb2NhbCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3Ro
KCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3BlblN0YXR1cyk7CisgICAg
ICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
b3BlblVURjE2Q29udGV4dEF3YXJlVVRleHRQcm92aWRlciBmYWlsZWQgd2l0aCBzdGF0dXMgJWQi
LCBvcGVuU3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAg
ICAgVUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1YnJr
X3NldFVUZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0
ZXh0LCAmc2V0VGV4dFN0YXR1cyk7CisgICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1
cykpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBz
dGF0dXMgJWQiLCBzZXRUZXh0U3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7CisgICAgfQorCisgICAgcmV0
dXJuICZpdGVyYXRvcjsKK30KKworCisvLyBTdGF0aWMgaXRlcmF0b3JzCisKK1RleHRCcmVha0l0
ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1dvcmRCcmVha0l0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfV09SRCk7CisgICAgaWYgKCFzdGF0aWNXb3JkQnJlYWtJdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4dEZvckl0ZXJhdG9y
KCpzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciwgc3RyaW5nKTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIHNlbnRlbmNlQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBzdGF0
aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRpY1NlbnRlbmNlQnJlYWtJdGVyYXRvciA9IGluaXRp
YWxpemVJdGVyYXRvcihVQlJLX1NFTlRFTkNFKTsKKyAgICBpZiAoIXN0YXRpY1NlbnRlbmNlQnJl
YWtJdGVyYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0VGV4
dEZvckl0ZXJhdG9yKCpzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Cit9CisK
K1RleHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworI2lmICFQTEFURk9STShJT1MpCisgICAgLy8gVGhpcyBydWxlIHNldCBpcyBiYXNl
ZCBvbiBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgcnVsZXMgb2YgSUNVIDQuMAorICAgIC8vIDxo
dHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvaWN1L3RhZ3MvcmVsZWFzZS00
LTAvc291cmNlL2RhdGEvYnJraXRyL2NoYXIudHh0Pi4KKyAgICAvLyBUaGUgbWFqb3IgZGlmZmVy
ZW5jZXMgZnJvbSB0aGUgb3JpZ2luYWwgb25lcyBhcmUgbGlzdGVkIGJlbG93OgorICAgIC8vICog
UmVwbGFjZWQgJ1tccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gU3BhY2luZ01hcmt9XScgd2l0
aCAnW1xwe0dlbmVyYWxfQ2F0ZWdvcnkgPSBTcGFjaW5nIE1hcmt9IC0gJEV4dGVuZF0nIGZvciBJ
Q1UgMy44IG9yIGVhcmxpZXI7CisgICAgLy8gKiBSZW1vdmVkIHJ1bGVzIHRoYXQgcHJldmVudCBh
IGN1cnNvciBmcm9tIG1vdmluZyBhZnRlciBwcmVwZW5kIGNoYXJhY3RlcnMgKEJ1ZyAyNDM0Mik7
CisgICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3Zpbmcg
YWZ0ZXIgdmlyYW1hIHNpZ25zIG9mIEluZGljIGxhbmd1YWdlcyBleGNlcHQgVGFtaWwgKEJ1ZyAx
NTc5MCksIGFuZDsKKyAgICAvLyAqIEFkZGVkIHJ1bGVzIHRoYXQgcHJldmVudCBhIGN1cnNvciBm
cm9tIG1vdmluZyBiZWZvcmUgSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2FyYSB2b2ljZWQgbWFy
a3MuCisgICAgLy8gKiBBZGRlZCBydWxlcyBmb3IgcmVnaW9uYWwgaW5kaWNhdG9yIHN5bWJvbHMu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtSdWxlcyA9CisgICAgICAgICIkQ1IgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENSfV07IgorICAgICAgICAiJExGICAgICAgPSBb
XFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMRn1dOyIKKyAgICAgICAgIiRDb250cm9sID0g
W1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gQ29udHJvbH1dOyIKKyAgICAgICAgIiRWb2lj
ZU1hcmtzID0gW1xcdUZGOUVcXHVGRjlGXTsiIC8vIEphcGFuZXNlIGhhbGYtd2lkdGgga2F0YWth
bmEgdm9pY2VkIG1hcmtzCisgICAgICAgICIkRXh0ZW5kICA9IFtcXHB7R3JhcGhlbWVfQ2x1c3Rl
cl9CcmVhayA9IEV4dGVuZH0gJFZvaWNlTWFya3MgLSBbXFx1MEUzMCBcXHUwRTMyIFxcdTBFNDUg
XFx1MEVCMCBcXHUwRUIyXV07IgorICAgICAgICAiJFNwYWNpbmdNYXJrID0gW1tcXHB7R2VuZXJh
bF9DYXRlZ29yeSA9IFNwYWNpbmcgTWFya31dIC0gJEV4dGVuZF07IgorICAgICAgICAiJEwgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMfV07IgorICAgICAgICAiJFYgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBWfV07IgorICAgICAgICAiJFQgICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBUfV07IgorICAgICAgICAiJExWICAg
ICAgPSBbXFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVn1dOyIKKyAgICAgICAgIiRMVlQg
ICAgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFrID0gTFZUfV07IgorICAgICAgICAiJEhp
bjAgICAgPSBbXFx1MDkwNS1cXHUwOTM5XTsiIC8vIERldmFuYWdhcmkgTGV0dGVyIEEsLi4uLEhh
CisgICAgICAgICIkSGluViAgICA9IFxcdTA5NEQ7IiAvLyBEZXZhbmFnYXJpIFNpZ24gVmlyYW1h
CisgICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5MzldOyIgLy8gRGV2YW5hZ2FyaSBM
ZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkQmVuMCAgICA9IFtcXHUwOTg1LVxcdTA5QjldOyIg
Ly8gQmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRCZW5WICAgID0gXFx1MDlDRDsi
IC8vIEJlbmdhbGkgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRCZW4xICAgID0gW1xcdTA5OTUtXFx1
MDlCOV07IiAvLyBCZW5nYWxpIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRQYW4wICAgID0g
W1xcdTBBMDUtXFx1MEEzOV07IiAvLyBHdXJtdWtoaSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAg
IiRQYW5WICAgID0gXFx1MEE0RDsiIC8vIEd1cm11a2hpIFNpZ24gVmlyYW1hCisgICAgICAgICIk
UGFuMSAgICA9IFtcXHUwQTE1LVxcdTBBMzldOyIgLy8gR3VybXVraGkgTGV0dGVyIEthLC4uLixI
YQorICAgICAgICAiJEd1ajAgICAgPSBbXFx1MEE4NS1cXHUwQUI5XTsiIC8vIEd1amFyYXRpIExl
dHRlciBBLC4uLixIYQorICAgICAgICAiJEd1alYgICAgPSBcXHUwQUNEOyIgLy8gR3VqYXJhdGkg
U2lnbiBWaXJhbWEKKyAgICAgICAgIiRHdWoxICAgID0gW1xcdTBBOTUtXFx1MEFCOV07IiAvLyBH
dWphcmF0aSBMZXR0ZXIgS2EsLi4uLEhhCisgICAgICAgICIkT3JpMCAgICA9IFtcXHUwQjA1LVxc
dTBCMzldOyIgLy8gT3JpeWEgTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkT3JpViAgICA9IFxc
dTBCNEQ7IiAvLyBPcml5YSBTaWduIFZpcmFtYQorICAgICAgICAiJE9yaTEgICAgPSBbXFx1MEIx
NS1cXHUwQjM5XTsiIC8vIE9yaXlhIExldHRlciBLYSwuLi4sSGEKKyAgICAgICAgIiRUZWwwICAg
ID0gW1xcdTBDMDUtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEEsLi4uLEhhCisgICAgICAg
ICIkVGVsViAgICA9IFxcdTBDNEQ7IiAvLyBUZWx1Z3UgU2lnbiBWaXJhbWEKKyAgICAgICAgIiRU
ZWwxICAgID0gW1xcdTBDMTQtXFx1MEMzOV07IiAvLyBUZWx1Z3UgTGV0dGVyIEthLC4uLixIYQor
ICAgICAgICAiJEthbjAgICAgPSBbXFx1MEM4NS1cXHUwQ0I5XTsiIC8vIEthbm5hZGEgTGV0dGVy
IEEsLi4uLEhhCisgICAgICAgICIkS2FuViAgICA9IFxcdTBDQ0Q7IiAvLyBLYW5uYWRhIFNpZ24g
VmlyYW1hCisgICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1LVxcdTBDQjldOyIgLy8gS2FubmFk
YSBMZXR0ZXIgQSwuLi4sSGEKKyAgICAgICAgIiRNYWwwICAgID0gW1xcdTBEMDUtXFx1MEQzOV07
IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkTWFsViAgICA9IFxcdTBE
NEQ7IiAvLyBNYWxheWFsYW0gU2lnbiBWaXJhbWEKKyAgICAgICAgIiRNYWwxICAgID0gW1xcdTBE
MTUtXFx1MEQzOV07IiAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCisgICAgICAgICIkUkkg
ICAgICA9IFtcXFUwMDAxRjFFNi1cXFUwMDAxRjFGRl07IiAvLyBFbW9qaSByZWdpb25hbCBpbmRp
Y2F0b3JzCisgICAgICAgICIkWldKICAgICA9IFxcdTIwMEQ7IiAvLyBaZXJvIHdpZHRoIGpvaW5l
cgorICAgICAgICAiJEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgLy8gRW1vamktc3R5bGUgdmFyaWF0
aW9uIHNlbGVjdG9yCisjaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkRW1v
amlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0Njkg
XFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBa
V0ogc2VxdWVuY2VzCisgICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjZGOSBc
XHUyNzBBLVxcdTI3MEQgXFxVMDAwMUYzODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAw
MUYzQ0EgXFxVMDAwMUYzQ0IgXFxVMDAwMUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxV
MDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0Nzgg
XFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEtXFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0
ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1NzUgXFxVMDAwMUY1OTAgXFxVMDAwMUY1OTUgXFxVMDAw
MUY1OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxV
MDAwMUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzAgXFxVMDAwMUY5MThd
IDsiIC8vIEVtb2ppIHRoYXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKKyNlbHNlCisgICAg
ICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxV
MDAwMUY0OEJdOyIgLy8gRW1vamkgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBaV0ogc2VxdWVuY2VzCisg
ICAgICAgICIkRW1vamlGb3JNb2RzID0gW1xcdTI2MUQgXFx1MjcwQS1cXHUyNzBDIFxcVTAwMDFG
Mzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0M3IFxcVTAwMDFGM0NBIFxcVTAw
MDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxc
VTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgx
LVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFG
NTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAw
MDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwXSA7IiAvLyBFbW9qaSB0
aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZW5kaWYKKyAgICAgICAgIiRFbW9qaU1v
ZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIgLy8gRml0enBhdHJpY2sgbW9kaWZpZXJz
CisgICAgICAgICIhIWNoYWluOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAg
ICAgIiEhUklOb0NoYWluOyIKKyNlbmRpZgorICAgICAgICAiISFmb3J3YXJkOyIKKyAgICAgICAg
IiRDUiAkTEY7IgorICAgICAgICAiJEwgKCRMIHwgJFYgfCAkTFYgfCAkTFZUKTsiCisgICAgICAg
ICIoJExWIHwgJFYpICgkViB8ICRUKTsiCisgICAgICAgICIoJExWVCB8ICRUKSAkVDsiCisjaWYg
QURESVRJT05BTF9FTU9KSV9TVVBQT1JUCisgICAgICAgICIkUkkgJFJJICRFeHRlbmQqIC8gJFJJ
OyIKKyAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCo7IgorICAgICAgICAiW14kQ29udHJvbCAkQ1Ig
JExGXSAkRXh0ZW5kOyIKKyAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJFNwYWNpbmdNYXJr
OyIKKyNlbHNlCisgICAgICAgICJbXiRDb250cm9sICRDUiAkTEZdICRFeHRlbmQ7IgorICAgICAg
ICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7IgorICAgICAgICAiJFJJICRSSSAv
ICRSSTsiCisgICAgICAgICIkUkkgJFJJOyIKKyNlbmRpZgorICAgICAgICAiJEhpbjAgJEhpblYg
JEhpbjE7IiAvLyBEZXZhbmFnYXJpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRCZW4wICRC
ZW5WICRCZW4xOyIgLy8gQmVuZ2FsaSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkUGFuMCAk
UGFuViAkUGFuMTsiIC8vIEd1cm11a2hpIFZpcmFtYSAoZm9yd2FyZCkKKyAgICAgICAgIiRHdWow
ICRHdWpWICRHdWoxOyIgLy8gR3VqYXJhdGkgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE9y
aTAgJE9yaVYgJE9yaTE7IiAvLyBPcml5YSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkVGVs
MCAkVGVsViAkVGVsMTsiIC8vIFRlbHVndSBWaXJhbWEgKGZvcndhcmQpCisgICAgICAgICIkS2Fu
MCAkS2FuViAkS2FuMTsiIC8vIEthbm5hZGEgVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAiJE1h
bDAgJE1hbFYgJE1hbDE7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChmb3J3YXJkKQorICAgICAgICAi
JFpXSiAkRW1vamlGb3JTZXFzOyIgLy8gRG9uJ3QgYnJlYWsgaW4gZW1vamkgWldKIHNlcXVlbmNl
cworICAgICAgICAiJEVtb2ppRm9yTW9kcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM7IiAvLyBEb24n
dCBicmVhayBiZXR3ZWVuIHJlbGV2YW50IGVtb2ppIChwb3NzaWJseSB3aXRoIHZhcmlhdGlvbiBz
ZWxlY3RvcikgYW5kIEZpdHpwYXRyaWNrIG1vZGlmaWVyCisgICAgICAgICIhIXJldmVyc2U7Igor
ICAgICAgICAiJExGICRDUjsiCisgICAgICAgICIoJEwgfCAkViB8ICRMViB8ICRMVlQpICRMOyIK
KyAgICAgICAgIigkViB8ICRUKSAoJExWIHwgJFYpOyIKKyAgICAgICAgIiRUICgkTFZUIHwgJFQp
OyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKKyAgICAgICAgIiRFeHRlbmQqICRSSSAk
UkkgLyAkRXh0ZW5kKiAkUkkgJFJJOyIKKyAgICAgICAgIiRFeHRlbmQqICRSSSAkUkk7IgorICAg
ICAgICAiJEV4dGVuZCAgICAgIFteJENvbnRyb2wgJENSICRMRl07IgorICAgICAgICAiJFNwYWNp
bmdNYXJrIFteJENvbnRyb2wgJENSICRMRl07IgorI2Vsc2UKKyAgICAgICAgIiRFeHRlbmQgICAg
ICBbXiRDb250cm9sICRDUiAkTEZdOyIKKyAgICAgICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9s
ICRDUiAkTEZdOyIKKyAgICAgICAgIiRSSSAkUkkgLyAkUkkgJFJJOyIKKyAgICAgICAgIiRSSSAk
Ukk7IgorI2VuZGlmCisgICAgICAgICIkSGluMSAkSGluViAkSGluMDsiIC8vIERldmFuYWdhcmkg
VmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRCZW4xICRCZW5WICRCZW4wOyIgLy8gQmVuZ2Fs
aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFBhbjEgJFBhblYgJFBhbjA7IiAvLyBHdXJt
dWtoaSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJEd1ajEgJEd1alYgJEd1ajA7IiAvLyBH
dWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE9yaTEgJE9yaVYgJE9yaTA7IiAv
LyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJFRlbDEgJFRlbFYgJFRlbDA7
IiAvLyBUZWx1Z3UgVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRLYW4xICRLYW5WICRLYW4w
OyIgLy8gS2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQorICAgICAgICAiJE1hbDEgJE1hbFYgJE1h
bDA7IiAvLyBNYWxheWFsYW0gVmlyYW1hIChiYWNrd2FyZCkKKyAgICAgICAgIiRFbW9qaUZvclNl
cXMgJFpXSjsiIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpXSiBzZXF1ZW5jZXMKKyAgICAgICAg
IiRFbW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2RzOyIgLy8gRG9uJ3QgYnJlYWsgYmV0
d2VlbiByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2YXJpYXRpb24gc2VsZWN0b3IpIGFu
ZCBGaXR6cGF0cmljayBtb2RpZmllcgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAg
ICAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICAgICAiJFJJICRSSSs7IgorICAgICAgICAiWyRF
bW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIhIXNhZmVfZm9y
d2FyZDsiCisgICAgICAgICIkUkkgJFJJKzsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1v
amlWYXIgJEVtb2ppTW9kc10rOyI7CisjZWxzZQorICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlN
b2RzXSsgJEVtb2ppRm9yTW9kczsiCisgICAgICAgICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIg
JEVtb2ppTW9kc10rOyIKKyAgICAgICAgIiEhc2FmZV9yZXZlcnNlOyIKKyAgICAgICAgIiEhc2Fm
ZV9mb3J3YXJkOyI7CisjZW5kaWYKKyAgICBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHN0YXRp
Y0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3JXaXRoUnVsZXMoa1J1
bGVzKTsKKyNlbHNlIC8vIFBMQVRGT1JNKElPUykKKyAgICAvLyBVc2UgdGhlIHNwZWNpYWwgVGhh
aSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBsb2NhbGVzCisgICAgc3RhdGljIFRl
eHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yID0gaW5pdGlhbGl6
ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQorCisgICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzZXRUZXh0Rm9ySXRlcmF0b3IoKnN0YXRpY0N1cnNv
ck1vdmVtZW50SXRlcmF0b3IsIHN0cmluZyk7Cit9CisKK1RleHRCcmVha0l0ZXJhdG9yKiBhY3F1
aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRl
eHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlLCBib29sIGlzQ0pLKQoreworICAg
IFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbDo6c2hh
cmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7CisgICAgaWYgKCFpdGVyYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc2V0Q29udGV4dEF3YXJlVGV4
dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4
dExlbmd0aCk7Cit9CisKK3ZvaWQgcmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0
ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICBBU1NFUlRfQVJHKGl0ZXJhdG9yLCBpdGVyYXRvcik7
CisKKyAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJlZFBvb2woKS5wdXQoaXRlcmF0b3Ip
OworfQorCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9sb2d1ZSA9CisgICAgIiEhY2hhaW47
IgorICAgICIhIUxCQ01Ob0NoYWluOyIKKyAgICAiISFsb29rQWhlYWRIYXJkQnJlYWs7IjsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNCZWZvcmUgPQorICAgIC8vIGV4cGxp
Y2l0bHkgZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lvbnMgcHJpb3IgdG8gNDkgZG9uJ3Qg
c3VwcG9ydCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6CisgICAgIiRD
SiA9IFsiCisjaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNID49IDQpICYmIChVX0lDVV9WRVJT
SU9OX01JTk9SX05VTSA+PSA5KQorICAgICI6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFuZXNl
X1N0YXJ0ZXI6IgorI2Vsc2UKKyAgICAiXFx1MzA0MVxcdTMwNDNcXHUzMDQ1XFx1MzA0N1xcdTMw
NDlcXHUzMDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4RVxcdTMwOTVcXHUzMDk2XFx1MzBB
MVxcdTMwQTNcXHUzMEE1XFx1MzBBNyIKKyAgICAiXFx1MzBBOVxcdTMwQzNcXHUzMEUzXFx1MzBF
NVxcdTMwRTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZDIgorICAgICJcXHUzMUYwXFx1MzFG
MVxcdTMxRjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2XFx1MzFGN1xcdTMxRjhcXHUzMUY5
XFx1MzFGQVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVcXHUzMUZGIgorICAgICJcXHVGRjY3
XFx1RkY2OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNcXHVGRjZEXFx1RkY2RVxcdUZGNkZc
XHVGRjcwIgorI2VuZGlmCisgICAgIl07IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNz
aWdubWVudHNDdXN0b21Mb29zZUNKSyA9CisgICAgIiRCQV9TVUIgPSBbXFx1MjAxMFxcdTIwMTNd
OyIKKyAgICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxcdUZGMDFcXHVGRjFGXTsiCisgICAg
IiRJRF9TVUIgPSAnJzsiCisgICAgIiRJTl9TVUIgPSBbXFx1MjAyNVxcdTIwMjZdOyIKKyAgICAi
JElTX1NVQiA9IFtcXHUwMDNBXFx1MDAzQl07IgorICAgICIkTlNfU1VCID0gW1xcdTIwM0NcXHUy
MDQ3XFx1MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMw
QTBcXHUzMEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYxQlxcdUZGNjVdOyIKKyAgICAiJFBP
X1NVQiA9IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMwXFx1MjAzMlxcdTIwMzNcXHUyMTAz
XFx1RkYwNVxcdUZGRTBdOyIKKyAgICAiJFBSX1NVQiA9IFtcXHUwMDI0XFx1MDBBM1xcdTAwQTVc
XHUyMEFDXFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07IgorICAgICIkSURfQUREID0gWyRD
SiAkQkFfU1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICROU19TVUIgJFBPX1NVQiAkUFJfU1VC
XTsiCisgICAgIiROU19BREQgPSAnJzsiOworCitzdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3Np
Z25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLID0KKyAgICAiJEJBX1NVQiA9ICcnOyIKKyAgICAiJEVY
X1NVQiA9ICcnOyIKKyAgICAiJElEX1NVQiA9ICcnOyIKKyAgICAiJElOX1NVQiA9IFtcXHUyMDI1
XFx1MjAyNl07IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMDVc
XHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07IgorICAgICIkUE9fU1VCID0gJyc7
IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0gWyRDSiAkSU5fU1VCICROU19T
VUJdOyIKKyAgICAiJE5TX0FERCA9ICcnOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNEFz
c2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLID0KKyAgICAiJEJBX1NVQiA9IFtcXHUyMDEwXFx1MjAx
M107IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSURf
U1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gW1xcdTMwMUNc
XHUzMEEwXTsiCisgICAgIiRQT19TVUIgPSAnJzsiCisgICAgIiRQUl9TVUIgPSAnJzsiCisgICAg
IiRJRF9BREQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07IgorICAgICIkTlNfQUREID0gJyc7IjsK
Kworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxOb25DSksg
PQorICAgICIkQkFfU1VCID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VC
ID0gJyc7IgorICAgICIkSU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIk
TlNfU1VCID0gJyc7IgorICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7Igor
ICAgICIkSURfQUREID0gWyRDSl07IgorICAgICIkTlNfQUREID0gJyc7IjsKKworc3RhdGljIGNv
bnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgPQorICAgICIkQkFfU1VC
ID0gJyc7IgorICAgICIkRVhfU1VCID0gJyc7IgorICAgICIkSURfU1VCID0gJyc7IgorICAgICIk
SU5fU1VCID0gJyc7IgorICAgICIkSVNfU1VCID0gJyc7IgorICAgICIkTlNfU1VCID0gJyc7Igor
ICAgICIkUE9fU1VCID0gJyc7IgorICAgICIkUFJfU1VCID0gJyc7IgorICAgICIkSURfQUREID0g
Jyc7IgorICAgICIkTlNfQUREID0gWyRDSl07IjsKKworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tU3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdENKSwor
I2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyAgICAgICAgdWF4MTRBc3Np
Z25tZW50c0N1c3RvbU5vcm1hbENKSworI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVm
YXVsdE5vbkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbVN0cmljdE5vbkNKSworCitzdGF0
aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVyID0KKyAgICAiJEFJID0gWzpMaW5l
QnJlYWsgPSBBbWJpZ3VvdXM6XTsiCisgICAgIiRBTCA9IFs6TGluZUJyZWFrID0gQWxwaGFiZXRp
YzpdOyIKKyAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJlYWtfQWZ0ZXI6XSAtICRCQV9TVUJd
OyIKKyAgICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19CZWZvcmU6XTsiCisgICAgIiRCSyA9
IFs6TGluZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07IgorICAgICIkQjIgPSBbOkxpbmVCcmVh
ayA9IEJyZWFrX0JvdGg6XTsiCisgICAgIiRDQiA9IFs6TGluZUJyZWFrID0gQ29udGluZ2VudF9C
cmVhazpdOyIKKyAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QdW5jdHVhdGlvbjpdOyIK
KyAgICAiJENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdfTWFyazpdOyIKKyAgICAiJENQID0g
WzpMaW5lQnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIKKyAgICAiJENSID0gWzpMaW5lQnJl
YWsgPSBDYXJyaWFnZV9SZXR1cm46XTsiCisgICAgIiRFWCA9IFtbOkxpbmVCcmVhayA9IEV4Y2xh
bWF0aW9uOl0gLSAkRVhfU1VCXTsiCisgICAgIiRHTCA9IFs6TGluZUJyZWFrID0gR2x1ZTpdOyIK
KyNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkgJiYgKFVfSUNVX1ZFUlNJT05fTUlO
T1JfTlVNID49IDkpCisgICAgIiRITCA9IFs6TGluZUJyZWFrID0gSGVicmV3X0xldHRlcjpdOyIK
KyNlbHNlCisgICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpMZXR0ZXI6XV07IgorI2VuZGlmCisg
ICAgIiRIWSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07IgorICAgICIkSDIgPSBbOkxpbmVCcmVh
ayA9IEgyOl07IgorICAgICIkSDMgPSBbOkxpbmVCcmVhayA9IEgzOl07IgorICAgICIkSUQgPSBb
W1tbOkxpbmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pdICRJRF9BRERdIC0gJElEX1NVQl07
IgorICAgICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFyYWJsZTpdIC0gJElOX1NVQl07Igor
ICAgICIkSVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1lcmljOl0gLSAkSVNfU1VCXTsiCisg
ICAgIiRKTCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCisgICAgIiRKViA9IFs6TGluZUJyZWFrID0g
SlY6XTsiCisgICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6XTsiCisgICAgIiRMRiA9IFs6TGlu
ZUJyZWFrID0gTGluZV9GZWVkOl07IgorICAgICIkTkwgPSBbOkxpbmVCcmVhayA9IE5leHRfTGlu
ZTpdOyIKKyAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBOb25zdGFydGVyOl0gLSAkQ0pdICRO
U19BRERdIC0gJE5TX1NVQl07IgorICAgICIkTlUgPSBbOkxpbmVCcmVhayA9IE51bWVyaWM6XTsi
CisgICAgIiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5jdHVhdGlvbjpdOyIKKyAgICAiJFBP
ID0gW1s6TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0gLSAkUE9fU1VCXTsiCisgICAgIiRQ
UiA9IFtbOkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0gLSAkUFJfU1VCXTsiCisgICAgIiRR
VSA9IFs6TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgorICAgICIkUkkgPSBbXFxVMDAwMUYxRTYt
XFxVMDAwMUYxRkZdOyIKKyAgICAiJFNBID0gWzpMaW5lQnJlYWsgPSBDb21wbGV4X0NvbnRleHQ6
XTsiCisgICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9nYXRlOl07IgorICAgICIkU1AgPSBb
OkxpbmVCcmVhayA9IFNwYWNlOl07IgorICAgICIkU1kgPSBbOkxpbmVCcmVhayA9IEJyZWFrX1N5
bWJvbHM6XTsiCisgICAgIiRXSiA9IFs6TGluZUJyZWFrID0gV29yZF9Kb2luZXI6XTsiCisgICAg
IiRYWCA9IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKKyAgICAiJFpXID0gWzpMaW5lQnJlYWsg
PSBaV1NwYWNlOl07IgorICAgICIkWldKID0gXFx1MjAwRDsiCisgICAgIiRFbW9qaVZhciA9IFxc
dUZFMEY7IgorI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkRW1vamlGb3JTZXFz
ID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0
OEIgXFxVMDAwMUY1RThdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI2Rjkg
XFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFGM0MzLVxcVTAwMDFGM0M0IFxcVTAw
MDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAwMDFGNDQzIFxcVTAwMDFGNDQ2LVxc
VTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxcVTAwMDFGNDZFLVxcVTAwMDFGNDc4
IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgzIFxcVTAwMDFGNDg1LVxcVTAwMDFG
NDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFGNTkwIFxcVTAwMDFGNTk1IFxcVTAw
MDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAwMDFGNjRCLVxcVTAwMDFGNjRGIFxc
VTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxcVTAwMDFGNkMwIFxcVTAwMDFGOTE4
XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sgbW9kaWZpZXJzCisjZWxzZQorICAg
ICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NjYtXFxVMDAwMUY0NjkgXFxVMDAw
MUY0OEJdOyIKKyAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUyNjFEIFxcdTI3MEEtXFx1MjcwQyBc
XFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAxRjNDNyBcXFUwMDAxRjND
QSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUwMDAxRjQ1MCBcXFUwMDAx
RjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBcXFUwMDAxRjQ3QyBcXFUw
MDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4NyBcXFUwMDAxRjRBQSBc
XFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0
RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMF0gOyIgLy8g
RW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycworI2VuZGlmCisgICAgIiRFbW9q
aU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIKKyAgICAiJGRpY3Rpb25hcnkgPSBb
OkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKKyAgICAiJEFMUGx1cyA9IFskQUwgJEFJ
ICRTQSAkU0cgJFhYXTsiCisgICAgIiRBTGNtID0gJEFMUGx1cyAkQ00qOyIKKyAgICAiJEJBY20g
PSAkQkEgJENNKjsiCisgICAgIiRCQmNtID0gJEJCICRDTSo7IgorICAgICIkQjJjbSA9ICRCMiAk
Q00qOyIKKyAgICAiJENMY20gPSAkQ0wgJENNKjsiCisgICAgIiRDUGNtID0gJENQICRDTSo7Igor
ICAgICIkRVhjbSA9ICRFWCAkQ00qOyIKKyAgICAiJEdMY20gPSAkR0wgJENNKjsiCisgICAgIiRI
TGNtID0gJEhMICRDTSo7IgorICAgICIkSFljbSA9ICRIWSAkQ00qOyIKKyAgICAiJEgyY20gPSAk
SDIgJENNKjsiCisgICAgIiRIM2NtID0gJEgzICRDTSo7IgorICAgICIkSURjbSA9ICRJRCAkQ00q
OyIKKyAgICAiJElOY20gPSAkSU4gJENNKjsiCisgICAgIiRJU2NtID0gJElTICRDTSo7IgorICAg
ICIkSkxjbSA9ICRKTCAkQ00qOyIKKyAgICAiJEpWY20gPSAkSlYgJENNKjsiCisgICAgIiRKVGNt
ID0gJEpUICRDTSo7IgorICAgICIkTlNjbSA9ICROUyAkQ00qOyIKKyAgICAiJE5VY20gPSAkTlUg
JENNKjsiCisgICAgIiRPUGNtID0gJE9QICRDTSo7IgorICAgICIkUE9jbSA9ICRQTyAkQ00qOyIK
KyAgICAiJFBSY20gPSAkUFIgJENNKjsiCisgICAgIiRRVWNtID0gJFFVICRDTSo7IgorICAgICIk
UkljbSA9ICRRVSAkQ00qOyIKKyAgICAiJFNZY20gPSAkU1kgJENNKjsiCisgICAgIiRXSmNtID0g
JFdKICRDTSo7IjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0Rm9yd2FyZCA9CisgICAgIiEh
Zm9yd2FyZDsiCisgICAgIiRDQU5fQ00gPSBbXiRTUCAkQksgJENSICRMRiAkTkwgJFpXICRDTV07
IgorICAgICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYgJE5MICRaVyAkQ01dOyIKKyAgICAi
JEFMX0ZPTExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCisgICAgIiRBTF9G
T0xMT1dfQ00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kgJFdKICRHTCAkT1AgJFFVICRCQSAk
SFkgJE5TICRJTiAkTlUgJEFMUGx1c107IgorICAgICIkQUxfRk9MTE9XID0gWyRBTF9GT0xMT1df
Tk9DTSAkQUxfRk9MTE9XX0NNXTsiCisgICAgIiRMQjRCcmVha3MgPSBbJEJLICRDUiAkTEYgJE5M
XTsiCisgICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1IgJExGICROTF07IgorICAgICIkTEI4
QnJlYWtzID0gWyRMQjRCcmVha3MgJFpXXTsiCisgICAgIiRMQjhOb25CcmVha3MgPSBbWyRMQjRO
b25CcmVha3NdIC0gWyRaV11dOyIKKyAgICAiJExCMThOb25CcmVha3MgPSBbJExCOE5vbkJyZWFr
cyAtIFskU1BdXTsiCisgICAgIiRMQjE4QnJlYWtzID0gWyRMQjhCcmVha3MgJFNQXTsiCisgICAg
IiRMQjIwTm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0gJENCXTsiCisgICAgIiRBTFBsdXMg
JENNKzsiCisgICAgIiRCQSAkQ00rOyIKKyAgICAiJEJCICRDTSs7IgorICAgICIkQjIgJENNKzsi
CisgICAgIiRDTCAkQ00rOyIKKyAgICAiJENQICRDTSs7IgorICAgICIkRVggJENNKzsiCisgICAg
IiRHTCAkQ00rOyIKKyAgICAiJEhMICRDTSs7IgorICAgICIkSFkgJENNKzsiCisgICAgIiRIMiAk
Q00rOyIKKyAgICAiJEgzICRDTSs7IgorICAgICIkSUQgJENNKzsiCisgICAgIiRJTiAkQ00rOyIK
KyAgICAiJElTICRDTSs7IgorICAgICIkSkwgJENNKzsiCisgICAgIiRKViAkQ00rOyIKKyAgICAi
JEpUICRDTSs7IgorICAgICIkTlMgJENNKzsiCisgICAgIiROVSAkQ00rOyIKKyAgICAiJE9QICRD
TSs7IgorICAgICIkUE8gJENNKzsiCisgICAgIiRQUiAkQ00rOyIKKyAgICAiJFFVICRDTSs7Igor
ICAgICIkU1kgJENNKzsiCisgICAgIiRXSiAkQ00rOyIKKyAgICAiJENSICRMRiB7MTAwfTsiCisg
ICAgIiRMQjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07IgorICAgICIkQ0FOX0NNICRDTSog
JExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRDTSsgJExCNEJyZWFrcyB7MTAwfTsiCisgICAgIiRM
QjROb25CcmVha3MgWyRTUCAkWlddOyIKKyAgICAiJENBTl9DTSAkQ00qIFskU1AgJFpXXTsiCisg
ICAgIiRDTSsgWyRTUCAkWlddOyIKKyAgICAiJEVtb2ppRm9yU2VxcyAkRW1vamlWYXI/ICRFbW9q
aU1vZHM/ICRaV0ogJEVtb2ppRm9yU2VxczsiCisgICAgIiRDQU5fQ00gJENNKzsiCisgICAgIiRD
TSs7IgorICAgICIkQ0FOX0NNICRDTSogJFdKY207IgorICAgICIkTEI4Tm9uQnJlYWtzICRXSmNt
OyIKKyAgICAiJENNKyAkV0pjbTsiCisgICAgIiRXSmNtICRDQU5UX0NNOyIKKyAgICAiJFdKY20g
JENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENBTl9DTSAkQ00qOyIKKyAgICAiJEdMY20gJENB
TlRfQ007IgorICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRTUCAkQkEgJEhZXV0gJENNKiAkR0xj
bTsiCisgICAgIiRDTSsgR0xjbTsiCisgICAgIiRMQjhOb25CcmVha3MgJENMOyIKKyAgICAiJENB
Tl9DTSAkQ00qICRDTDsiCisgICAgIiRDTSsgJENMOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkQ1A7
IgorICAgICIkQ0FOX0NNICRDTSogJENQOyIKKyAgICAiJENNKyAkQ1A7IgorICAgICIkTEI4Tm9u
QnJlYWtzICRFWDsiCisgICAgIiRDQU5fQ00gJENNKiAkRVg7IgorICAgICIkQ00rICRFWDsiCisg
ICAgIiRMQjhOb25CcmVha3MgJElTOyIKKyAgICAiJENBTl9DTSAkQ00qICRJUzsiCisgICAgIiRD
TSsgJElTOyIKKyAgICAiJExCOE5vbkJyZWFrcyAkU1k7IgorICAgICIkQ0FOX0NNICRDTSogJFNZ
OyIKKyAgICAiJENNKyAkU1k7IgorICAgICIkT1BjbSAkU1AqICRDQU5fQ00gJENNKjsiCisgICAg
IiRPUGNtICRTUCogJENBTlRfQ007IgorICAgICIkT1BjbSAkU1ArICRDTSsgJEFMX0ZPTExPVz87
IgorICAgICIkUVVjbSAkU1AqICRPUGNtOyIKKyAgICAiKCRDTGNtIHwgJENQY20pICRTUCogJE5T
Y207IgorICAgICIkQjJjbSAkU1AqICRCMmNtOyIKKyAgICAiJExCMThOb25CcmVha3MgJENNKiAk
UVVjbTsiCisgICAgIiRDTSsgJFFVY207IgorICAgICIkUVVjbSAuPzsiCisgICAgIiRRVWNtICRM
QjE4Tm9uQnJlYWtzICRDTSo7IgorICAgICIkTEIyME5vbkJyZWFrcyAkQ00qICgkQkFjbSB8ICRI
WWNtIHwgJE5TY20pOyAiCisgICAgIiRCQmNtIFteJENCXTsiCisgICAgIiRCQmNtICRMQjIwTm9u
QnJlYWtzICRDTSo7IgorICAgICIkSExjbSAoJEhZY20gfCAkQkFjbSkgW14kQ0JdPzsiCisgICAg
IigkQUxjbSB8ICRITGNtKSAkSU5jbTsiCisgICAgIiRDTSsgJElOY207IgorICAgICIkSURjbSAk
SU5jbTsiCisgICAgIiRJTmNtICRJTmNtOyIKKyAgICAiJE5VY20gJElOY207IgorICAgICIkSURj
bSAkUE9jbTsiCisgICAgIiRBTGNtICROVWNtOyIKKyAgICAiJEhMY20gJE5VY207IgorICAgICIk
Q00rICROVWNtOyIKKyAgICAiJE5VY20gJEFMY207IgorICAgICIkTlVjbSAkSExjbTsiCisgICAg
IiRQUmNtICRJRGNtOyIKKyAgICAiJFBSY20gKCRBTGNtIHwgJEhMY20pOyIKKyAgICAiJFBPY20g
KCRBTGNtIHwgJEhMY20pOyIKKyAgICAiKCRQUmNtIHwgJFBPY20pPyAoJE9QY20gfCAkSFljbSk/
ICROVWNtICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENMY20gfCAkQ1BjbSk/ICgkUFJjbSB8
ICRQT2NtKT87IgorICAgICIkSkxjbSAoJEpMY20gfCAkSlZjbSB8ICRIMmNtIHwgJEgzY20pOyIK
KyAgICAiKCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNtKTsiCisgICAgIigkSlRjbSB8ICRI
M2NtKSAkSlRjbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KSAkSU5jbTsiCisgICAgIigkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2NtKSAk
UE9jbTsiCisgICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwgJEpUY20gfCAkSDJjbSB8ICRIM2Nt
KTsiCisgICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAkSExjbSk7IgorICAgICIkQ00rICgk
QUxjbSB8ICRITGNtKTsiCisgICAgIiRJU2NtICgkQUxjbSB8ICRITGNtKTsiCisgICAgIigkQUxj
bSB8ICRITGNtIHwgJE5VY20pICRPUGNtOyIKKyAgICAiJENNKyAkT1BjbTsiCisgICAgIiRDUGNt
ICgkQUxjbSB8ICRITGNtIHwgJE5VY20pOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJFJJY20gJFJJY207IgorI2VuZGlmCisgICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFy
PyAkRW1vamlNb2RzOyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFJldmVyc2UgPQorICAg
ICIhIXJldmVyc2U7IgorICAgICIkQ00rICRBTFBsdXM7IgorICAgICIkQ00rICRCQTsiCisgICAg
IiRDTSsgJEJCOyIKKyAgICAiJENNKyAkQjI7IgorICAgICIkQ00rICRDTDsiCisgICAgIiRDTSsg
JENQOyIKKyAgICAiJENNKyAkRVg7IgorICAgICIkQ00rICRHTDsiCisgICAgIiRDTSsgJEhMOyIK
KyAgICAiJENNKyAkSFk7IgorICAgICIkQ00rICRIMjsiCisgICAgIiRDTSsgJEgzOyIKKyAgICAi
JENNKyAkSUQ7IgorICAgICIkQ00rICRJTjsiCisgICAgIiRDTSsgJElTOyIKKyAgICAiJENNKyAk
Skw7IgorICAgICIkQ00rICRKVjsiCisgICAgIiRDTSsgJEpUOyIKKyAgICAiJENNKyAkTlM7Igor
ICAgICIkQ00rICROVTsiCisgICAgIiRDTSsgJE9QOyIKKyAgICAiJENNKyAkUE87IgorICAgICIk
Q00rICRQUjsiCisgICAgIiRDTSsgJFFVOyIKKyNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQK
KyAgICAiJENNKyAkUkk7IgorI2VuZGlmCisgICAgIiRDTSsgJFNZOyIKKyAgICAiJENNKyAkV0o7
IgorICAgICIkQ00rOyIKKyAgICAiJEFMX0ZPTExPVyAkQ00rIC8gKFskQksgJENSICRMRiAkTkwg
JFpXIHtlb2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRDTSogKFteJE9QICRDTSAkU1BdIHwg
WyRBTCB7ZW9mfV0pKTsiCisgICAgIlskUFJdIC8gJENNKyBbJEJLICRDUiAkTEYgJE5MICRaVyAk
U1Age2VvZn1dOyIKKyAgICAiJExCNEJyZWFrcyBbJExCNE5vbkJyZWFrcy0kQ01dOyIKKyAgICAi
JExCNEJyZWFrcyAkQ00rICRDQU5fQ007IgorICAgICIkTEYgJENSOyIKKyAgICAiWyRTUCAkWldd
IFskTEI0Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJFNQICRaV10gJENNKyAkQ0FOX0NNOyIKKyAg
ICAiJEVtb2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRFbW9qaVZhcj8gJEVtb2ppRm9yU2Vx
czsiCisgICAgIiRDTSsgJENBTl9DTTsiCisgICAgIiRDTSogJFdKICRDTSogJENBTl9DTTsiCisg
ICAgIiRDTSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIkQ0FOVF9DTSAkQ00qICRX
SjsiCisgICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCisgICAgIiRDTSogJEdMICRDTSogWyRM
QjhOb25CcmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKKyAgICAiJENBTlRfQ00gJENNKiAkR0w7
IgorICAgICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgorICAgICIkQ0wgJENNKyAkQ0FOX0NNOyIK
KyAgICAiJENQICRDTSsgJENBTl9DTTsiCisgICAgIiRFWCAkQ00rICRDQU5fQ007IgorICAgICIk
SVMgJENNKyAkQ0FOX0NNOyIKKyAgICAiJFNZICRDTSsgJENBTl9DTTsiCisgICAgIiRDTCBbJExC
OE5vbkJyZWFrcy0kQ01dOyIKKyAgICAiJENQIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICIk
RVggWyRMQjhOb25CcmVha3MtJENNXTsiCisgICAgIiRJUyBbJExCOE5vbkJyZWFrcy0kQ01dOyIK
KyAgICAiJFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgorICAgICJbJENMICRDUCAkRVggJElTICRT
WV0gJENNKyAkU1ArICRDTSogJE9QOyAiCisgICAgIiRDTSogJENBTl9DTSAkU1AqICRDTSogJE9Q
OyIKKyAgICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCisgICAgIiRBTF9GT0xMT1c/ICRDTSsg
JFNQICRTUCogJENNKiAkT1A7IgorICAgICIkQUxfRk9MTE9XX05PQ00gJENNKyAkU1ArICRDTSog
JE9QOyIKKyAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsgJFNQKyAkQ00qICRPUDsiCisgICAg
IiRTWSAkQ00gJFNQKyAkT1A7IgorICAgICIkQ00qICRPUCAkU1AqICRDTSogJFFVOyIKKyAgICAi
JENNKiAkTlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKKyAgICAiJENNKiAkQjIgJFNQKiAkQ00q
ICRCMjsiCisgICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsiCisgICAgIiRDTSogJFFVICRMQjE4
Tm9uQnJlYWtzOyIKKyAgICAiJENNKiAkQ0FOX0NNICRDTSogJFFVOyIKKyAgICAiJENBTlRfQ00g
JENNKiAkUVU7IgorICAgICIkQ00qICgkQkEgfCAkSFkgfCAkTlMpICRDTSogWyRMQjIwTm9uQnJl
YWtzLSRDTV07IgorICAgICIkQ00qIFskTEIyME5vbkJyZWFrcy0kQ01dICRDTSogJEJCOyIKKyAg
ICAiW14kQ0JdICRDTSogJEJCOyIKKyAgICAiW14kQ0JdICRDTSogKCRIWSB8ICRCQSkgJENNKiAk
SEw7IgorICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwgJEhMKTsiCisgICAgIiRDTSogJElO
ICRDTSogJElEOyIKKyAgICAiJENNKiAkSU4gJENNKiAkSU47IgorICAgICIkQ00qICRJTiAkQ00q
ICROVTsiCisgICAgIiRDTSogJFBPICRDTSogJElEOyIKKyAgICAiJENNKiAkTlUgJENNKiAoJEFM
UGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICROVTsiCisgICAg
IiRDTSogJElEICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAkUFI7
IgorICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQTzsiCisgICAgIigkQ00qICgkUFIg
fCAkUE8pKT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAoJE5VIHwgJElTIHwgJFNZKSkqICRD
TSogJE5VICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQUiB8ICRQTykpPzsiCisgICAgIiRD
TSogKCRIMyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7IgorICAgICIkQ00qICgkSlQgfCAk
SlYpICRDTSogKCRIMiB8ICRKVik7IgorICAgICIkQ00qICRKVCAkQ00qICgkSDMgfCAkSlQpOyIK
KyAgICAiJENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpUIHwgJEpWIHwgJEpMKTsiCisgICAg
IiRDTSogJFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRKViB8ICRKTCk7IgorICAgICIkQ00q
ICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSogJFBSOyIKKyAgICAiJENNKiAoJEFM
UGx1cyB8ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7IgorICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMKSAkQ00qICRJUzsiCisgICAgIiRDTSogJE9QICRDTSogKCRBTFBsdXMgfCAkSEwgfCAkTlUp
OyIKKyAgICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkgJENNKiAkQ1A7IgorI2lmIEFERElU
SU9OQUxfRU1PSklfU1VQUE9SVAorICAgICIkQ00qICRSSSAkQ00qICRSSTsiCisjZW5kaWYKKyAg
ICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1vZHM7IjsKKworc3RhdGljIGNvbnN0
IGNoYXIqIHVheDE0U2FmZUZvcndhcmQgPQorICAgICIhIXNhZmVfZm9yd2FyZDsiCisgICAgIlsk
Q00gJE9QICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAkU1AgJGRpY3Rpb25hcnldKyBbXiRD
TSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRkaWN0aW9uYXJ5XTsiCisgICAgIiRk
aWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiB1YXgxNFNhZmVS
ZXZlcnNlID0KKyAgICAiISFzYWZlX3JldmVyc2U7IgorICAgICIkQ00rIFteJENNICRCSyAkQ1Ig
JExGICROTCAkWlcgJFNQXTsiCisgICAgIiRDTSsgJFNQIC8gLjsiCisgICAgIiRTUCsgJENNKiAk
T1A7IgorICAgICIkU1ArICRDTSogJFFVOyIKKyAgICAiJFNQKyAkQ00qICgkQ0wgfCAkQ1ApOyIK
KyAgICAiJFNQKyAkQ00qICRCMjsiCisgICAgIiRDTSogKCRIWSB8ICRCQSkgJENNKiAkSEw7Igor
ICAgICIoJENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIKKyAgICAiKCRDTCB8ICRDUCkgJENN
KiAoJE5VIHwgJElTIHwgJFNZKTsiCisgICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7CisK
K3N0YXRpYyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMoTGluZUJyZWFrSXRlcmF0
b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgU3RyaW5nQnVpbGRlciBydWxlc0J1aWxk
ZXI7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFByb2xvZ3VlKTsKKyAgICBydWxlc0J1
aWxkZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUpOworICAgIHN3aXRjaCAobW9kZSkg
eworICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQ6CisgICAgICAgIHJ1bGVzQnVp
bGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdENKSyA6IHVh
eDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3NlOgorICAgICAgICBydWxlc0J1aWxk
ZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlQ0pLIDogdWF4MTRB
c3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFw
cGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21Ob3JtYWxDSksgOiB1YXgxNEFzc2ln
bm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaW5l
QnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoKKyAgICAgICAgcnVsZXNCdWlsZGVyLmFwcGVu
ZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJpY3RDSksgOiB1YXgxNEFzc2lnbm1l
bnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJ1bGVz
QnVpbGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVyKTsKKyAgICBydWxlc0J1aWxkZXIu
YXBwZW5kKHVheDE0Rm9yd2FyZCk7CisgICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFJldmVy
c2UpOworICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRTYWZlRm9yd2FyZCk7CisgICAgcnVs
ZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsKKyAgICByZXR1cm4gcnVsZXNCdWls
ZGVyLnRvU3RyaW5nKCk7Cit9CisKKy8vIFJlY29nbml6ZSBCQ1A0NyBjb21wbGlhbnQgcHJpbWFy
eSBsYW5ndWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tvJworLy8gKGluIGFueSBjb21iaW5h
dGlvbiBvZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBzdWJ0YWdzLiBEb24ndAorLy8g
cmVjb2duaXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6aG8nLCAnanBuJywgb3IgJ2tvcicg
c2luY2UgQkNQNDcKKy8vIHJlcXVpcmVzIHVzZSBvZiBzaG9ydGVzdCBsYW5ndWFnZSB0YWcuCiti
b29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQoreworICAgIHNpemVf
dCBsZW5ndGggPSBsb2NhbGUubGVuZ3RoKCk7CisgICAgaWYgKGxlbmd0aCA8IDIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGMxID0gbG9jYWxlWzBdOworICAgIGF1dG8gYzIgPSBs
b2NhbGVbMV07CisgICAgYXV0byBjMyA9IGxlbmd0aCA9PSAyID8gMCA6IGxvY2FsZVsyXTsKKyAg
ICBpZiAoIWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycgfHwgYzMgPT0gJ0AnKSB7CisgICAg
ICAgIGlmIChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQorICAgICAgICAgICAgcmV0dXJuIGMyID09
ICdoJyB8fCBjMiA9PSAnSCc7CisgICAgICAgIGlmIChjMSA9PSAnaicgfHwgYzEgPT0gJ0onKQor
ICAgICAgICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9PSAnQSc7CisgICAgICAgIGlmIChj
MSA9PSAnaycgfHwgYzEgPT0gJ0snKQorICAgICAgICAgICAgcmV0dXJuIGMyID09ICdvJyB8fCBj
MiA9PSAnTyc7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworVGV4dEJyZWFrSXRlcmF0
b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCit7CisgICAgVUJyZWFrSXRlcmF0
b3IqIHVicmtJdGVyOworICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBib29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNFbXB0eSgpOworICAgIGlmIChtb2Rl
ID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQorICAgICAgICB1YnJrSXRlciA9IHVicmtf
b3BlbihVQlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQo
KSA6IGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwLCAwLCAmb3BlblN0YXR1cyk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFVQYXJzZUVycm9yIHBhcnNlU3RhdHVzOworICAgICAgICBhdXRv
IHJ1bGVzID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMobW9kZSwgaXNDSkspOworICAgICAg
ICB1YnJrSXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1ZpZXcocnVsZXMpLnVwY29udmVydGVk
Q2hhcmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0
YXR1cyk7CisgICAgfQorICAgIC8vIGxvY2FsZSBjb21lcyBmcm9tIGEgd2ViIHBhZ2UgYW5kIGl0
IGNhbiBiZSBpbnZhbGlkLCBsZWFkaW5nIElDVQorICAgIC8vIHRvIGZhaWwsIGluIHdoaWNoIGNh
c2Ugd2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICBpZiAoIWxvY2FsZUlz
RW1wdHkgJiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIG9wZW5TdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgICAgIHVicmtJdGVyID0gdWJya19vcGVuKFVCUktfTElORSwgY3Vy
cmVudFRleHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVuU3RhdHVzKTsKKyAgICB9CisKKyAg
ICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7CisgICAgICAgIExPR19FUlJPUigidWJya19v
cGVuIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0dXMpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJ
dGVyYXRvcio+KHVicmtJdGVyKTsKK30KKwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRl
eHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IpCit7CisgICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJ
dGVyID0gcmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKTsKKyAgICBB
U1NFUlQodWJya0l0ZXIpOworICAgIHVicmtfY2xvc2UodWJya0l0ZXIpOworICAgIGl0ZXJhdG9y
ID0gbnVsbHB0cjsKK30KKworc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBub25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yOworCitzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUFuZFN3YXBO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBleHBlY3Rl
ZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQoreworICAgIHJldHVybiBXVEY6OndlYWtD
b21wYXJlQW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciwgZXhwZWN0ZWQs
IG5ld1ZhbHVlKTsKK30KKworTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBtX2l0
ZXJhdG9yID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKKworICAgIGJvb2wgY3Jl
YXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJh
Y3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7CisgICAgaWYgKCFjcmVhdGVkSXRlcmF0
b3IpCisgICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNU
RVIpOworICAgIGlmICghbV9pdGVyYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pdGVy
YXRvciA9IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRvciwgc3RyaW5nKTsKK30KKworTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IoKQoreworICAgIGlmICghY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKDAsIG1faXRlcmF0b3IpKQorICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0
X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7Cit9CisKKworLy8gSXRlcmF0b3Ig
aW1wbGVtZW5hdGlvbi4KKworaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKiBp
dGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19maXJzdChyZWludGVycHJldF9jYXN0PFVCcmVh
a0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKK30KKworaW50IHRleHRCcmVha0xhc3QoVGV4dEJyZWFr
SXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVybiB1YnJrX2xhc3QocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Cit9CisKK2ludCB0ZXh0QnJlYWtOZXh0
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19uZXh0KHJl
aW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitpbnQgdGV4
dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQoreworICAgIHJldHVy
biB1YnJrX3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRv
cikpOworfQorCitpbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVy
YXRvciwgaW50IHBvcykKK3sKKyAgICByZXR1cm4gdWJya19wcmVjZWRpbmcocmVpbnRlcnByZXRf
Y2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zKTsKK30KKworaW50IHRleHRCcmVh
a0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IsIGludCBwb3MpCit7CisgICAg
cmV0dXJuIHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihp
dGVyYXRvciksIHBvcyk7Cit9CisKK2ludCB0ZXh0QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJh
dG9yKiBpdGVyYXRvcikKK3sKKyAgICByZXR1cm4gdWJya19jdXJyZW50KHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOworfQorCitib29sIGlzVGV4dEJyZWFrKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0aW9uKQoreworICAgIHJldHVybiB1
YnJrX2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9y
KSwgcG9zaXRpb24pOworfQorCitib29sIGlzV29yZFRleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRv
ciogaXRlcmF0b3IpCit7CisgICAgaW50IHJ1bGVTdGF0dXMgPSB1YnJrX2dldFJ1bGVTdGF0dXMo
cmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7CisgICAgcmV0dXJu
IHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Cit9CisKK3Vuc2lnbmVkIG51bUdyYXBoZW1l
Q2x1c3RlcnMoY29uc3QgU3RyaW5nJiBzKQoreworICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9
IHMubGVuZ3RoKCk7CisgICAgCisgICAgaWYgKCFzdHJpbmdMZW5ndGgpCisgICAgICAgIHJldHVy
biAwOworCisgICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRlbmRlZCBHcmFwaGVtZSBDbHVzdGVy
IGlzIENSIExGCisgICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMuY29udGFpbnMoJ1xyJykpCisgICAg
ICAgIHJldHVybiBzdHJpbmdMZW5ndGg7CisKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0
ZXJhdG9yIGl0KHMpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7
CisKKyAgICB1bnNpZ25lZCBudW0gPSAwOworICAgIHdoaWxlICh0ZXh0QnJlYWtOZXh0KGl0KSAh
PSBUZXh0QnJlYWtEb25lKQorICAgICAgICArK251bTsKKyAgICByZXR1cm4gbnVtOworfQorCit1
bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcm
IHMsIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCit7CisgICAgdW5zaWduZWQgc3RyaW5n
TGVuZ3RoID0gcy5sZW5ndGgoKTsKKworICAgIGlmICghc3RyaW5nTGVuZ3RoKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIC8vIFRoZSBvbmx5IExhdGluLTEgRXh0ZW5kZWQgR3JhcGhlbWUgQ2x1
c3RlciBpcyBDUiBMRgorICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQor
ICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJz
KTsKKworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocyk7CisgICAgaWYg
KCFpdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVD
bHVzdGVycyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR3JhcGhlbWVDbHVz
dGVyczsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0QnJlYWtOZXh0KGl0KSA9PSBUZXh0QnJlYWtE
b25lKQorICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKKyAgICB9CisgICAgcmV0dXJu
IHRleHRCcmVha0N1cnJlbnQoaXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTQ1MzQ2OGZiOGNjMjNk
NjNmYTJjM2EzNDg1MTYwNGI2NmI1ODAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0wLDAgKzEsMjI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIFRleHRCcmVha0l0ZXJhdG9yX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0
b3JfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgVGV4dEJyZWFr
SXRlcmF0b3I7CisKKy8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9ubHkg
dW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYWNx
dWlyZUxpbmVCcmVha0l0ZXJhdG9yLgorCitlbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCisgICAgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
VUFYMTRMb29zZSwKKyAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKKyAgICBM
aW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKK307CisKKy8vIFRoaXMgaXMgc2ltaWxh
ciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9zdCBjYXNlcywgYnV0IGlzIHN1Ympl
Y3QgdG8KKy8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBPbmUgbm90YWJsZSBleGFtcGxlIHdo
ZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVudAorLy8gZnJvbSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0
b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBidWcgMjQzNDIuCisvLyBVc2UgdGhp
cyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KK1dURl9F
WFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihT
dHJpbmdWaWV3KTsKKworV1RGX0VYUE9SVF9QUklWQVRFIFRleHRCcmVha0l0ZXJhdG9yKiB3b3Jk
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKK1dURl9FWFBPUlRfUFJJVkFURSBUZXh0QnJlYWtJ
dGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOworCitXVEZfRVhQT1JU
X1BSSVZBVEUgVGV4dEJyZWFrSXRlcmF0b3IqIGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgY29uc3QgVUNoYXIqIHByaW9yQ29u
dGV4dCwgdW5zaWduZWQgcHJpb3JDb250ZXh0TGVuZ3RoLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUs
IGJvb2wgaXNDSkspOworV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVsZWFzZUxpbmVCcmVha0l0
ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKik7CitUZXh0QnJlYWtJdGVyYXRvciogb3BlbkxpbmVC
cmVha0l0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRv
ck1vZGUsIGJvb2wgaXNDSkspOwordm9pZCBjbG9zZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVh
a0l0ZXJhdG9yKiYpOworCitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0ZpcnN0KFRl
eHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRleHRCcmVha0xhc3Qo
VGV4dEJyZWFrSXRlcmF0b3IqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBpbnQgdGV4dEJyZWFrTmV4
dChUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0QnJlYWtQ
cmV2aW91cyhUZXh0QnJlYWtJdGVyYXRvciopOworV1RGX0VYUE9SVF9QUklWQVRFIGludCB0ZXh0
QnJlYWtDdXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50
IHRleHRCcmVha1ByZWNlZGluZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7CitXVEZfRVhQT1JU
X1BSSVZBVEUgaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1RleHRCcmVhayhUZXh0QnJlYWtJdGVyYXRvcios
IGludCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1dvcmRUZXh0QnJlYWsoVGV4dEJyZWFr
SXRlcmF0b3IqKTsKKworY29uc3QgaW50IFRleHRCcmVha0RvbmUgPSAtMTsKKworV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7CisKK2NsYXNz
IExhenlMaW5lQnJlYWtJdGVyYXRvciB7CitwdWJsaWM6CisgICAgTGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCisgICAgICAgICwgbV9jYWNoZWRQ
cmlvckNvbnRleHQobnVsbHB0cikKKyAgICAgICAgLCBtX21vZGUoTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTQpCisgICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkKKyAgICAg
ICAgLCBtX2lzQ0pLKGZhbHNlKQorICAgIHsKKyAgICAgICAgcmVzZXRQcmlvckNvbnRleHQoKTsK
KyAgICB9CisKKyAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRlcmF0b3JN
b2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKKyAgICAgICAgOiBtX3N0cmlu
ZyhzdHJpbmcpCisgICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQorICAgICAgICAsIG1faXRlcmF0
b3IobnVsbHB0cikKKyAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRyKQorICAg
ICAgICAsIG1fbW9kZShtb2RlKQorICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3Ro
KDApCisgICAgeworICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOworICAgICAgICBtX2lzQ0pL
ID0gaXNDSktMb2NhbGUobG9jYWxlKTsKKyAgICB9CisKKyAgICB+TGF6eUxpbmVCcmVha0l0ZXJh
dG9yKCkKKyAgICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgIH0KKworICAgIFN0cmluZyBzdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorICAgIGJvb2wgaXNMb29zZUNKS01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1v
ZGVVQVgxNExvb3NlOyB9CisKKyAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQp
ID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgp
OworICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07CisgICAgfQorCisgICAgVUNoYXIg
c2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIENPTVBJTEVfQVNT
RVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJh
dG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOworICAgICAgICByZXR1cm4gbV9w
cmlvckNvbnRleHRbMF07CisgICAgfQorCisgICAgdm9pZCBzZXRQcmlvckNvbnRleHQoVUNoYXIg
bGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQorICAgIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQo
V1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRlcmF0b3Jf
dW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7CisgICAgICAgIG1fcHJpb3JDb250ZXh0
WzBdID0gc2Vjb25kVG9MYXN0OworICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7Cisg
ICAgfQorCisgICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQoVUNoYXIgbGFzdCkKKyAgICB7Cisg
ICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09
IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwor
ICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JDb250ZXh0WzFdOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7CisgICAgfQorCisgICAgdm9pZCByZXNldFByaW9yQ29u
dGV4dCgpCisgICAgeworICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVOR1RIKG1f
cHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3ByaW9yX2Nv
bnRleHRfbGVuZ3RoKTsKKyAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOworICAgICAgICBt
X3ByaW9yQ29udGV4dFsxXSA9IDA7CisgICAgfQorCisgICAgdW5zaWduZWQgcHJpb3JDb250ZXh0
TGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHByaW9yQ29udGV4dExlbmd0
aCA9IDA7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNv
bnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9s
ZW5ndGgpOworICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMV0pIHsKKyAgICAgICAgICAgICsr
cHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0WzBdKQor
ICAgICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBwcmlvckNvbnRleHRMZW5ndGg7CisgICAgfQorCisgICAgLy8gT2J0YWluIHRleHQg
YnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0aGlzIGl0
ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKKyAgICAvLyBpbml0aWFsaXplZCB0byB1c2UgdGhlIHBy
ZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250ZXh0IGFu
ZCB1c2luZworICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYgbm9uLWVt
cHR5LgorICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250ZXh0TGVu
Z3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBwcmlvckNv
bnRleHRDYXBhY2l0eSk7CisgICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQgPSBwcmlv
ckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNpdHkgLSBw
cmlvckNvbnRleHRMZW5ndGhdIDogMDsKKyAgICAgICAgaWYgKCFtX2l0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKG1fc3RyaW5nLCBt
X2xvY2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsIG1fbW9kZSwgbV9pc0NK
Syk7CisgICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4dDsKKyAg
ICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gcHJpb3JDb250ZXh0TGVuZ3Ro
OworICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAhPSBtX2NhY2hlZFByaW9yQ29udGV4
dCB8fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgpIHsK
KyAgICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKG1fc3RyaW5nLCBtX2xv
Y2FsZSwgbV9tb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JDb250ZXh0
TGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKKyAgICB9CisK
KyAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJpbmcsIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChtX2l0ZXJhdG9yKQorICAgICAgICAgICAgcmVsZWFzZUxpbmVCcmVh
a0l0ZXJhdG9yKG1faXRlcmF0b3IpOworICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsKKyAgICAg
ICAgbV9sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIG1faXRlcmF0b3IgPSBudWxscHRyOworICAg
ICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fbW9kZSA9IG1v
ZGU7CisgICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOworICAgICAgICBtX2Nh
Y2hlZFByaW9yQ29udGV4dExlbmd0aCA9IDA7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9IDI7CisgICAgU3RyaW5nIG1f
c3RyaW5nOworICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKKyAgICBUZXh0QnJlYWtJdGVyYXRv
ciogbV9pdGVyYXRvcjsKKyAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRleHQ7Cisg
ICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKKyAgICB1bnNpZ25lZCBtX2NhY2hlZFBy
aW9yQ29udGV4dExlbmd0aDsKKyAgICBVQ2hhciBtX3ByaW9yQ29udGV4dFtwcmlvckNvbnRleHRD
YXBhY2l0eV07CisgICAgYm9vbCBtX2lzQ0pLOworfTsKKworLy8gSXRlcmF0ZXMgb3ZlciAiZXh0
ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCisvLyBOb3Rl
IHRoYXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBiZSBsZXNzIHNvcGhpc3RpY2F0ZWQg
LSBlLmcuIElDVSBwcmlvciB0bworLy8gdmVyc2lvbiA0LjAgb25seSBzdXBwb3J0cyAibGVnYWN5
IGdyYXBoZW1lIGNsdXN0ZXJzIi4KKy8vIFVzZSB0aGlzIGZvciBnZW5lcmFsIHRleHQgcHJvY2Vz
c2luZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KKworY2xhc3MgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcik7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCk7CisKKyAgICBvcGVyYXRv
ciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9CisKK3By
aXZhdGU6CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIG1faXRlcmF0b3I7Cit9OworCisvLyBDb3Vu
dHMgdGhlIG51bWJlciBvZiBncmFwaGVtZSBjbHVzdGVycy4gQSBzdXJyb2dhdGUgcGFpciBvciBh
IHNlcXVlbmNlCisvLyBvZiBhIG5vbi1jb21iaW5pbmcgY2hhcmFjdGVyIGFuZCBmb2xsb3dpbmcg
Y29tYmluaW5nIGNoYXJhY3RlcnMgaXMKKy8vIGNvdW50ZWQgYXMgMSBncmFwaGVtZSBjbHVzdGVy
LgorV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3Qg
U3RyaW5nJik7CisvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxs
IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworLy8gdGhlIHNwZWNpZmllZCBncmFwaGVtZSBjbHVz
dGVyIGxlbmd0aC4KK1dURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5H
cmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCk7CisKK30KKwordXNp
bmcgV1RGOjpMaW5lQnJlYWtJdGVyYXRvck1vZGU7Cit1c2luZyBXVEY6OkxpbmVCcmVha0l0ZXJh
dG9yTW9kZVVBWDE0OwordXNpbmcgV1RGOjpMYXp5TGluZUJyZWFrSXRlcmF0b3I7Cit1c2luZyBX
VEY6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7Cit1c2luZyBXVEY6OlRleHRCcmVh
a0RvbmU7Cit1c2luZyBXVEY6OlRleHRCcmVha0l0ZXJhdG9yOworCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBhMzAxYzg4M2FjNWE3NDEyNWM3MzZmOGJmM2Q5M2MzZjVmNDc0ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVX2gKKyNkZWZpbmUgVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVV9oCisKKy8vIEZJ
WE1FOiBOb3cgdGhhdCB0aGlzIGhhbmRsZXMgbG9jYWxlcyBmb3IgSUNVLCBub3QganVzdCBmb3Ig
dGV4dCBicmVha2luZywKKy8vIHRoaXMgZmlsZSBhbmQgdGhlIHZhcmlvdXMgaW1wbGVtZW50YXRp
b24gZmlsZXMgc2hvdWxkIGJlIHJlbmFtZWQuCisKK25hbWVzcGFjZSBXVEYgeworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCk7CisKK30K
KwordXNpbmcgV1RGOjpjdXJyZW50U2VhcmNoTG9jYWxlSUQ7Cit1c2luZyBXVEY6OmN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRDsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvZWZsL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBlMGUxMzZmMTY5NmIyZjUyYWU4ZWQ1NzdhMGFmNzczMGFlMDExZmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVRWZsLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFs
cCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9G
VVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3Vu
ZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3BhY2UgV1RGIHsKKworY29uc3QgY2hhciogY3Vy
cmVudFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0g
bG9jYWxlLgorICAgIHJldHVybiAiIjsKK30KKworY29uc3QgY2hhciogY3VycmVudFRleHRCcmVh
a0xvY2FsZUlEKCkKK3sKKyAgICByZXR1cm4gImVuX3VzIjsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yM2FkYTMwODY2MzBlOTgwZDQzYTVlNWJiMmZhMjIwNjFkYjA0
OWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9ndGsvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgorCituYW1lc3Bh
Y2UgV1RGIHsKKworY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKK3sKKyAgICAv
LyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgorICAgIHJldHVybiAiIjsKK30KKwor
Y29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKK3sKKyAgICAvLyBGSVhNRTog
U2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgorICAgIHJldHVybiAiZW5fdXMiOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczODhm
ZGJmN2NhNDliYTY1OTg5NDM3N2YyYjFjNTZhZGFkMGRlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlk
ZXIuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKKy8vIFJlbG9jYXRlIHBvaW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0
aW5hdGlvbiBhcyByZXF1aXJlZC4KK3N0YXRpYyBpbmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0
IFVUZXh0KiBzb3VyY2UsIFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIp
Cit7CisgICAgaWYgKHBvaW50ZXIgPj0gc291cmNlLT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRp
Y19jYXN0PGNoYXIqPihzb3VyY2UtPnBFeHRyYSkgKyBzb3VyY2UtPmV4dHJhU2l6ZSkgeworICAg
ICAgICAvLyBQb2ludGVyIHJlZmVyZW5jZXMgc291cmNlIGV4dHJhIGJ1ZmZlci4KKyAgICAgICAg
cG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihkZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4ocG9pbnRlcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
c291cmNlLT5wRXh0cmEpKTsKKyAgICB9IGVsc2UgaWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBv
aW50ZXIgPCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5z
aXplT2ZTdHJ1Y3QpIHsKKyAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0
IHN0cnVjdHVyZSwgYnV0IG5vdCBzb3VyY2UgZXh0cmEgYnVmZmVyLgorICAgICAgICBwb2ludGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihwb2ludGVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJj
ZSkpOworICAgIH0KK30KKworVVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlv
biwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQor
eworICAgIEFTU0VSVF9VTlVTRUQoZGVlcCwgIWRlZXApOworICAgIGlmIChVX0ZBSUxVUkUoKnN0
YXR1cykpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGludDMyX3QgZXh0cmFTaXplID0g
c291cmNlLT5leHRyYVNpemU7CisgICAgZGVzdGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5h
dGlvbiwgZXh0cmFTaXplLCBzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisg
ICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKKyAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0
aW9uLT5wRXh0cmE7CisgICAgaW50MzJfdCBmbGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKKyAg
ICBpbnQgc2l6ZVRvQ29weSA9IHN0ZDo6bWluKHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5h
dGlvbi0+c2l6ZU9mU3RydWN0KTsKKyAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6
ZVRvQ29weSk7CisgICAgZGVzdGluYXRpb24tPnBFeHRyYSA9IGV4dHJhTmV3OworICAgIGRlc3Rp
bmF0aW9uLT5mbGFncyA9IGZsYWdzOworICAgIG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBz
b3VyY2UtPnBFeHRyYSwgZXh0cmFTaXplKTsKKyAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGRlc3RpbmF0aW9uLT5jb250ZXh0KTsKKyAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVz
dGluYXRpb24sIGRlc3RpbmF0aW9uLT5wKTsKKyAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGRlc3RpbmF0aW9uLT5xKTsKKyAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKKyAg
ICBjb25zdCB2b2lkKiBjaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRl
c3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzKTsKKyAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGNodW5rQ29udGVudHMpOworICAgIGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihjaHVua0NvbnRlbnRzKTsKKyAgICByZXR1cm4gZGVz
dGluYXRpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3Uv
VVRleHRQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMGFmOTk3MjM5MGRkMDFiYzIzZWIwMmY2YWNm
OTJjNTQ4OTM0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVU
ZXh0UHJvdmlkZXJfaAorI2RlZmluZSBVVGV4dFByb3ZpZGVyX2gKKworI2luY2x1ZGUgPHVuaWNv
ZGUvdXRleHQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2VudW0gY2xhc3MgVVRleHRQcm92aWRl
ckNvbnRleHQgeworICAgIE5vQ29udGV4dCwKKyAgICBQcmlvckNvbnRleHQsCisgICAgUHJpbWFy
eUNvbnRleHQKK307CisKK2lubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVy
Q29udGV4dChjb25zdCBVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9y
d2FyZCkKK3sKKyAgICBpZiAoIXRleHQtPmIgfHwgbmF0aXZlSW5kZXggPiB0ZXh0LT5iKQorICAg
ICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0OworICAgIGlm
IChuYXRpdmVJbmRleCA9PSB0ZXh0LT5iKQorICAgICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0
UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQ
cmlvckNvbnRleHQ7CisgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRl
eHQ7Cit9CisKK2lubGluZSB2b2lkIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVy
KFVUZXh0KiB0ZXh0LCBjb25zdCBVVGV4dEZ1bmNzKiBmdW5jcywgY29uc3Qgdm9pZCogc3RyaW5n
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNv
bnRleHRMZW5ndGgpCit7CisgICAgdGV4dC0+cEZ1bmNzID0gZnVuY3M7CisgICAgdGV4dC0+cHJv
dmlkZXJQcm9wZXJ0aWVzID0gMSA8PCBVVEVYVF9QUk9WSURFUl9TVEFCTEVfQ0hVTktTOworICAg
IHRleHQtPmNvbnRleHQgPSBzdHJpbmc7CisgICAgdGV4dC0+cCA9IHN0cmluZzsKKyAgICB0ZXh0
LT5hID0gbGVuZ3RoOworICAgIHRleHQtPnEgPSBwcmlvckNvbnRleHQ7CisgICAgdGV4dC0+YiA9
IHByaW9yQ29udGV4dExlbmd0aDsKK30KKworLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciB0
aGUgVVRleHRDbG9uZSBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgorCitVVGV4dCogdVRleHRDbG9u
ZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVw
LCBVRXJyb3JDb2RlKiBzdGF0dXMpOworCisKKy8vIEhlbHBlcnMgZm9yIHRoZSBVVGV4dEFjY2Vz
cyBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgorCitpbmxpbmUgaW50NjRfdCB1VGV4dEFjY2Vzc1Bp
bkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2NF90IGxpbWl0KQoreworICAgIGlmIChpbmRleCA8
IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBlbHNlIGlmIChpbmRleCA+IGxpbWl0KQorICAg
ICAgICBpbmRleCA9IGxpbWl0OworICAgIHJldHVybiBpbmRleDsKK30KKworaW5saW5lIGJvb2wg
dVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdlKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2
ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCwgVUJvb2wmIGlzQWNj
ZXNzaWJsZSkKK3sKKyAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICBpZiAobmF0aXZlSW5kZXgg
Pj0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBuYXRpdmVJbmRleCA8IHRleHQtPmNodW5rTmF0
aXZlTGltaXQpIHsKKyAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0
ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNl
dCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdl
LgorICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKTsKKyAgICAgICAgICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90Pihv
ZmZzZXQpIDogMDsKKyAgICAgICAgICAgIGlzQWNjZXNzaWJsZSA9IFRSVUU7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gbmF0
aXZlTGVuZ3RoICYmIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPT0gbmF0aXZlTGVuZ3RoKSB7Cisg
ICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgICAg
ICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChuYXRpdmVJbmRleCA+IHRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPD0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkg
eworICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5r
TmF0aXZlU3RhcnQ7CisgICAgICAgICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwg
Zm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCisgICAgICAg
ICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkp
OworICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAw
OworICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gVFJVRTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChuYXRpdmVJbmRleCA8PSAwICYmICF0ZXh0LT5j
aHVua05hdGl2ZVN0YXJ0KSB7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IDA7Cisg
ICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxTRTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKKyNlbmRpZiAvLyBVVGV4dFByb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVhMGUxZTg2NGIy
OTcxNDgxZTMwOWM0MzU0ZTQzMTA2MWI0NWM3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCkBAIC0wLDAgKzEsMzk0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVUZXh0UHJvdmlk
ZXJMYXRpbjEuaCIKKworI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBMYXRpbjEgcHJvdmlk
ZXIKKworc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQq
LCBVQm9vbCwgVUVycm9yQ29kZSopOworc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVM
ZW5ndGgoVVRleHQqKTsKK3N0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhVVGV4dCosIGlu
dDY0X3QsIFVCb29sKTsKK3N0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFjdChVVGV4dCos
IGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSopOworc3RhdGlj
IGludDY0X3QgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4dCopOworc3Rh
dGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29uc3QgVVRleHQq
LCBpbnQ2NF90KTsKK3N0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ2xvc2UoVVRleHQqKTsKKworc3Rh
dGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHVUZXh0TGF0aW4xRnVuY3MgPSB7CisgICAgc2l6
ZW9mKFVUZXh0RnVuY3MpLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIHVUZXh0TGF0aW4x
Q2xvbmUsCisgICAgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgsCisgICAgdVRleHRMYXRpbjFBY2Nl
c3MsCisgICAgdVRleHRMYXRpbjFFeHRyYWN0LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwK
KyAgICB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlLAorICAgIHVUZXh0TGF0aW4xTWFwTmF0
aXZlSW5kZXhUb1VURjE2LAorICAgIHVUZXh0TGF0aW4xQ2xvc2UsCisgICAgbnVsbHB0ciwKKyAg
ICBudWxscHRyLAorICAgIG51bGxwdHIKK307CisKK3N0YXRpYyBVVGV4dCogdVRleHRMYXRpbjFD
bG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVCb29sIGRlZXAs
IFVFcnJvckNvZGUqIHN0YXR1cykKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRlZXAsICFkZWVwKTsK
KworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiAwOworCisgICAg
VVRleHQqIHJlc3VsdCA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBzaXplb2YoVUNoYXIpICog
VVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHksIHN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVS
RSgqc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAgIAorICAgIHJlc3Vs
dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gc291cmNlLT5wcm92aWRlclByb3BlcnRpZXM7CisgICAg
CisgICAgLy8gUG9pbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24sIGJ1dCB3aXRoIGFuIGVtcHR5IGJ1
ZmZlci4KKyAgICByZXN1bHQtPmNodW5rTmF0aXZlU3RhcnQgPSBzb3VyY2UtPmNodW5rTmF0aXZl
U3RhcnQ7CisgICAgcmVzdWx0LT5jaHVua05hdGl2ZUxpbWl0ID0gc291cmNlLT5jaHVua05hdGl2
ZVN0YXJ0OworICAgIHJlc3VsdC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFydCk7CisgICAgcmVzdWx0LT5jaHVua09mZnNl
dCA9IDA7CisgICAgcmVzdWx0LT5jb250ZXh0ID0gc291cmNlLT5jb250ZXh0OworICAgIHJlc3Vs
dC0+YSA9IHNvdXJjZS0+YTsKKyAgICByZXN1bHQtPnBGdW5jcyA9ICZ1VGV4dExhdGluMUZ1bmNz
OworICAgIHJlc3VsdC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciopcmVzdWx0LT5wRXh0cmE7Cisg
ICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPihyZXN1bHQtPmNodW5rQ29udGVudHMpLCAwLCBz
aXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgo
VVRleHQqIHVUZXh0KQoreworICAgIHJldHVybiB1VGV4dC0+YTsKK30KKworc3RhdGljIFVCb29s
IHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50NjRfdCBpbmRleCwgVUJvb2wgZm9y
d2FyZCkKK3sKKyAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOworCisgICAgaWYgKGZvcndh
cmQpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgJiYgaW5k
ZXggPj0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkg
aW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KKyAgICAgICAgICAgIHVUZXh0
LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNodW5r
TmF0aXZlU3RhcnQpOworICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGluZGV4ID49IGxlbmd0aCAmJiB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9PSBsZW5n
dGgpIHsKKyAgICAgICAgICAgIC8vIE9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIGJ1dCB3ZSBj
YW4ndCBnZXQgaXQuCisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNfY2Fz
dDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKKyAgICAgICAgICAg
IHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpbmRl
eCA8PSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRleCA+IHVUZXh0LT5jaHVua05hdGl2
ZVN0YXJ0KSB7CisgICAgICAgICAgICAvLyBBbHJlYWR5IGluc2lkZSB0aGUgYnVmZmVyLiBTZXQg
dGhlIG5ldyBvZmZzZXQuCisgICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKKyAgICAgICAg
ICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIGlmICghaW5kZXggJiYgIXVUZXh0
LT5jaHVua05hdGl2ZVN0YXJ0KSB7CisgICAgICAgICAgICAvLyBBbHJlYWR5IGF0IHRoZSBiZWdp
bm5pbmc7IGNhbid0IGdvIGFueSBmYXJ0aGVyLgorICAgICAgICAgICAgdVRleHQtPmNodW5rT2Zm
c2V0ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9
IGluZGV4OworICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHVUZXh0LT5jaHVua05h
dGl2ZVN0YXJ0ICsgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7CisgICAgICAgIGlmICh1
VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKKyAgICAgICAgICAgIHVUZXh0LT5jaHVu
a05hdGl2ZUxpbWl0ID0gbGVuZ3RoOworCisgICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IDA7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBpbmRleDsK
KyAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQorICAgICAgICAg
ICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7CisKKyAgICAgICAgdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgPSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIFVUZXh0V2l0aEJ1ZmZl
cklubGluZUNhcGFjaXR5OworICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPCAw
KQorICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOworCisgICAgICAgIHVU
ZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQpOworICAgIH0KKyAgICB1VGV4dC0+Y2h1bmtMZW5ndGggPSBzdGF0aWNf
Y2FzdDxpbnQzMl90Pih1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHVUZXh0LT5jaHVua05hdGl2
ZVN0YXJ0KTsKKworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4o
dVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KHVUZXh0LT5j
b250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dVRleHQtPmNodW5rTGVuZ3RoKSk7CisKKyAgICB1VGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9
IHVUZXh0LT5jaHVua0xlbmd0aDsKKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgaW50
MzJfdCB1VGV4dExhdGluMUV4dHJhY3QoVVRleHQqIHVUZXh0LCBpbnQ2NF90IHN0YXJ0LCBpbnQ2
NF90IGxpbWl0LCBVQ2hhciogZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksIFVFcnJvckNvZGUq
IHN0YXR1cykKK3sKKyAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOworICAgIGlmIChVX0ZB
SUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGRlc3RDYXBhY2l0
eSA8IDAgfHwgKCFkZXN0ICYmIGRlc3RDYXBhY2l0eSA+IDApKSB7CisgICAgICAgICpzdGF0dXMg
PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwor
ICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBsaW1pdCB8fCAobGltaXQgLSBzdGFydCkgPiBJ
TlQzMl9NQVgpIHsKKyAgICAgICAgKnN0YXR1cyA9IFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1I7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChzdGFydCA+IGxlbmd0aCkKKyAg
ICAgICAgc3RhcnQgPSBsZW5ndGg7CisgICAgaWYgKGxpbWl0ID4gbGVuZ3RoKQorICAgICAgICBs
aW1pdCA9IGxlbmd0aDsKKworICAgIGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7CisgICAgCisgICAg
aWYgKCFsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGRlc3RDYXBhY2l0eSA+
IDAgJiYgIWRlc3QpIHsKKyAgICAgICAgaW50MzJfdCB0cmltbWVkTGVuZ3RoID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4obGVuZ3RoKTsKKyAgICAgICAgaWYgKHRyaW1tZWRMZW5ndGggPiBkZXN0Q2Fw
YWNpdHkpCisgICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0gZGVzdENhcGFjaXR5OworCisgICAg
ICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+
KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHJpbW1lZExl
bmd0aCkpOworICAgIH0KKworICAgIGlmIChsZW5ndGggPCBkZXN0Q2FwYWNpdHkpIHsKKyAgICAg
ICAgZGVzdFtsZW5ndGhdID0gMDsKKyAgICAgICAgaWYgKCpzdGF0dXMgPT0gVV9TVFJJTkdfTk9U
X1RFUk1JTkFURURfV0FSTklORykKKyAgICAgICAgICAgICpzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgfSBlbHNlIGlmIChsZW5ndGggPT0gZGVzdENhcGFjaXR5KQorICAgICAgICAqc3RhdHVz
ID0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsKKyAgICBlbHNlCisgICAgICAgICpz
dGF0dXMgPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKKworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQzMl90PihsZW5ndGgpOworfQorCitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMU1hcE9m
ZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0KiB1VGV4dCkKK3sKKyAgICByZXR1cm4gdVRleHQtPmNo
dW5rTmF0aXZlU3RhcnQgKyB1VGV4dC0+Y2h1bmtPZmZzZXQ7Cit9CisKK3N0YXRpYyBpbnQzMl90
IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0IFVUZXh0KiB1VGV4dCwgaW50
NjRfdCBuYXRpdmVJbmRleCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHVUZXh0LCB1VGV4dC0+Y2h1
bmtOYXRpdmVTdGFydCA+PSBuYXRpdmVJbmRleCk7CisgICAgQVNTRVJUX1VOVVNFRCh1VGV4dCwg
bmF0aXZlSW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludDMyX3Q+KG5hdGl2ZUluZGV4KTsKK30KKworc3RhdGljIHZvaWQgdVRleHRMYXRp
bjFDbG9zZShVVGV4dCogdVRleHQpCit7CisgICAgdVRleHQtPmNvbnRleHQgPSBudWxscHRyOwor
fQorCitVVGV4dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdp
dGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgVUVycm9yQ29k
ZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0
YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4
dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlM
VVJFKCpzdGF0dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7CisgICAgdGV4dC0+
YSA9IGxlbmd0aDsKKyAgICB0ZXh0LT5wRnVuY3MgPSAmdVRleHRMYXRpbjFGdW5jczsKKyAgICB0
ZXh0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKil0ZXh0LT5wRXh0cmE7CisgICAgbWVtc2V0KGNv
bnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgMCwgc2l6ZW9mKFVDaGFyKSAq
IFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKKworICAgIHJldHVybiB0ZXh0OworfQor
CisKKy8vIExhdGluMUNvbnRleHRBd2FyZSBwcm92aWRlcgorCitzdGF0aWMgVVRleHQqIHVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJy
b3JDb2RlKik7CitzdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMUNvbnRleHRBd2FyZU5hdGl2ZUxl
bmd0aChVVGV4dCopOworc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNz
KFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFDb250
ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90
LCBVRXJyb3JDb2RlKik7CitzdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRBd2FyZUNsb3Nl
KFVUZXh0Kik7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0TGF0aW4xQ29u
dGV4dEF3YXJlRnVuY3MgPSB7CisgICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAorICAgIDAsCisgICAg
MCwKKyAgICAwLAorICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUsCisgICAgdVRleHRM
YXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVBY2Nlc3MsCisgICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0LAorICAgIG51bGxw
dHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgdVRleHRM
YXRpbjFDb250ZXh0QXdhcmVDbG9zZSwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAg
bnVsbHB0cgorfTsKKworc3RhdGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0TGF0
aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRleHQpCit7Cisg
ICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQorICAgICAgICByZXR1cm4gVVRleHRQcm92aWRl
ckNvbnRleHQ6Ok5vQ29udGV4dDsKKyAgICByZXR1cm4gdGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0
ZXh0LT5wRXh0cmEgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4
dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OworfQorCitzdGF0aWMgdm9pZCB0ZXh0TGF0
aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3Qg
bmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJkKQoreworICAg
IEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7CisgICAgaWYgKGZv
cndhcmQpIHsKKyAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID49IHRleHQtPmIgJiYgbmF0aXZl
SW5kZXggPCBuYXRpdmVMZW5ndGgpOworICAgICAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0g
bmF0aXZlSW5kZXg7CisgICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRl
eCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7CisgICAgICAgIGlmICh0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVuZ3RoKQorICAgICAgICAgICAgdGV4dC0+Y2h1bmtO
YXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
bmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Cisg
ICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleDsKKyAgICAgICAgdGV4
dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+ZXh0cmFTaXplIC8gc2l6
ZW9mKFVDaGFyKTsKKyAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPCB0ZXh0LT5i
KQorICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7CisgICAgfQor
ICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRleHQtPmNodW5r
TmF0aXZlU3RhcnQ7CisgICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxsIGRlZmluZWQg
aWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KKyAgICBBU1NFUlQobGVu
Z3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNo
dW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkg
PyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKKyAgICB0ZXh0LT5uYXRpdmVJbmRl
eGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBm
b3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3RoOworICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNv
bnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKK30KKworc3RhdGlj
IHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQq
IHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBm
b3J3YXJkKQoreworICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVu
a0NvbnRlbnRzID09IHRleHQtPnEpOworICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7CisgICAgdGV4dExhdGluMUNvbnRleHRB
d2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUlu
UHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5h
dGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250
ZW50cyA9PSB0ZXh0LT5xKTsKKyAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4
dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOworICAgIEFTU0VSVF9VTlVTRUQobmF0aXZl
TGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRl
eCA8PSBuYXRpdmVMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/
IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3Ro
KTsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKKyAgICB0ZXh0LT5jaHVua05hdGl2
ZUxpbWl0ID0gdGV4dC0+YjsKKyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7CisgICAg
dGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0
X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8v
IEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBl
eGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtP
ZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0
aCk7Cit9CisKK3N0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW9y
Q29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVM
ZW5ndGgsIFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKCF0ZXh0LT5jaHVua0NvbnRlbnRz
IHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKKyAgICB0ZXh0LT5jaHVu
a0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKKyAgICB0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBu
YXRpdmVMZW5ndGgsIGZvcndhcmQpOworfQorCitzdGF0aWMgVVRleHQqIHVUZXh0TGF0aW4xQ29u
dGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBV
Qm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCit7CisgICAgcmV0dXJuIHVUZXh0Q2xvbmVJ
bXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Cit9CisKK3N0YXRpYyBpbnQ2
NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQorewor
ICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKK30KKworc3RhdGljIFVCb29sIHVUZXh0TGF0
aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBV
Qm9vbCBmb3J3YXJkKQoreworICAgIGlmICghdGV4dC0+Y29udGV4dCkKKyAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRMYXRpbjFDb250ZXh0QXdh
cmVOYXRpdmVMZW5ndGgodGV4dCk7CisgICAgVUJvb2wgaXNBY2Nlc3NpYmxlOworICAgIGlmICh1
VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxl
bmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJuIGlzQWNjZXNzaWJs
ZTsKKyAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZlSW5kZXgsIG5h
dGl2ZUxlbmd0aCk7CisgICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENvbnRleHQgPSB0
ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7CisgICAgVVRleHRQ
cm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5h
dGl2ZUluZGV4LCBmb3J3YXJkKTsKKyAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3Zp
ZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKKyAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29u
dGV4dCkgeworICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRl
eHQ6OlByaW1hcnlDb250ZXh0KQorICAgICAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZU1v
dmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndh
cmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92
ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OworICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJp
bWFyeUNvbnRleHQpCisgICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1h
cnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAg
IGVsc2UgeworICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6UHJpb3JDb250ZXh0KTsKKyAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRv
UHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwor
ICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFD
b250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQz
Ml90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCit7CisgICAgLy8gSW4gdGhlIHByZXNlbnQgY29u
dGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBmdW5jdGlvbnMK
KyAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9uLgorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9SVEVEX0VSUk9S
OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRBd2Fy
ZUNsb3NlKFVUZXh0KiB0ZXh0KQoreworICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOworfQor
CitVVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVm
ZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9y
Q29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisgICAgICAgIHJl
dHVybiAwOworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAgICAgKnN0YXR1
cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
ICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4dCwgc2l6ZW9m
KHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKCpzdGF0
dXMpKSB7CisgICAgICAgIEFTU0VSVCghdGV4dCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKHRleHQsICZ0ZXh0TGF0
aW4xQ29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRleHQsIHByaW9y
Q29udGV4dExlbmd0aCk7CisgICAgcmV0dXJuIHRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGlu
MS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRlckxhdGluMS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYxN2IzNGQ1NjY1M2NhNGQ3YThjYTQxNGUxNDc5MDNlMGNhNzI4MDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVVRleHRQcm92aWRlckxhdGlu
MV9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJMYXRpbjFfaAorCisjaW5jbHVkZSA8dW5pY29kZS91
dGV4dC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CisKK25hbWVzcGFjZSBXVEYgewor
Citjb25zdCBpbnQgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkgPSAxNjsKKworc3RydWN0
IFVUZXh0V2l0aEJ1ZmZlciB7CisgICAgVVRleHQgdGV4dDsKKyAgICBVQ2hhciBidWZmZXJbVVRl
eHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHldOworfTsKKworVVRleHQqIG9wZW5MYXRpbjFVVGV4
dFByb3ZpZGVyKFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3Ry
aW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cyk7CitVVGV4dCogb3Blbkxh
dGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZm
ZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHBy
aW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBVVGV4dFByb3ZpZGVyTGF0aW4xX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUxZmMyZWFiOWE0NTdmMTc3NDlmNzIzZjUyMDdmMzgxZGYyOWZhYWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
CkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgorCisjaW5jbHVkZSAiVVRleHRQcm92aWRlci5o
IgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIFVURjE2Q29u
dGV4dEF3YXJlIHByb3ZpZGVyCisKK3N0YXRpYyBVVGV4dCogdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZUNsb25lKFVUZXh0KiwgY29uc3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOworc3RhdGlj
IGludDY0X3QgdVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCopOworc3Rh
dGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVBY2Nlc3MoVVRleHQqLCBpbnQ2NF90LCBV
Qm9vbCk7CitzdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChVVGV4
dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSopOworc3Rh
dGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0Kik7CisKK3N0YXRpYyBj
b25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0VVRGMTZDb250ZXh0QXdhcmVGdW5jcyA9IHsKKyAg
ICBzaXplb2YoVVRleHRGdW5jcyksCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgdVRleHRV
VEYxNkNvbnRleHRBd2FyZUNsb25lLAorICAgIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVOYXRpdmVM
ZW5ndGgsCisgICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcywKKyAgICB1VGV4dFVURjE2
Q29udGV4dEF3YXJlRXh0cmFjdCwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVs
bHB0ciwKKyAgICBudWxscHRyLAorICAgIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9zZSwKKyAg
ICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0cgorfTsKKworc3RhdGljIGlubGlu
ZSBVVGV4dFByb3ZpZGVyQ29udGV4dCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVHZXRDdXJyZW50Q29u
dGV4dChjb25zdCBVVGV4dCogdGV4dCkKK3sKKyAgICBpZiAoIXRleHQtPmNodW5rQ29udGVudHMp
CisgICAgICAgIHJldHVybiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0OworICAgIHJl
dHVybiB0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnAgPyBVVGV4dFByb3ZpZGVyQ29udGV4
dDo6UHJpbWFyeUNvbnRleHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0Owor
fQorCitzdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5Q29udGV4
dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRfdCBuYXRpdmVMZW5ndGgs
IFVCb29sIGZvcndhcmQpCit7CisgICAgQVNTRVJUKHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4
dC0+cCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXgg
Pj0gdGV4dC0+YiA6IG5hdGl2ZUluZGV4ID4gdGV4dC0+Yik7CisgICAgQVNTRVJUX1VOVVNFRChm
b3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRl
eCA8PSBuYXRpdmVMZW5ndGgpOworICAgIHRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB0ZXh0LT5i
OworICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVMZW5ndGg7CisgICAgaW50NjRf
dCBsZW5ndGggPSB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0IC0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFy
dDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgbGVuZ3RoIGlzIHdlbGwgZGVmaW5lZCBpZiBjb21wdXRl
ZCBsZW5ndGggZXhjZWVkcyBpbnQzMl90IHJhbmdlLgorICAgIEFTU0VSVChsZW5ndGggPCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtMZW5ndGgg
PSBsZW5ndGggPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19j
YXN0PGludDMyX3Q+KGxlbmd0aCkgOiAwOworICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQg
PSB0ZXh0LT5jaHVua0xlbmd0aDsKKyAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0g
dGV4dC0+Y2h1bmtOYXRpdmVTdGFydDsKKyAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdl
bGwgZGVmaW5lZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNo
dW5rIGxlbmd0aC4KKyAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90
PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5ndGgpOworfQorCitzdGF0aWMgdm9pZCB0ZXh0
VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2
NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKK3sK
KyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250ZW50cyA9
PSB0ZXh0LT5xKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VUNoYXIqPih0ZXh0LT5wKTsKKyAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmltYXJ5
Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKK30KKwor
c3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KFVUZXh0
KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wg
Zm9yd2FyZCkKK3sKKyAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsK
KyAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4
IDw9IHRleHQtPmIpOworICAgIEFTU0VSVF9VTlVTRUQobmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8g
bmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgp
OworICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwgZm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0
aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0aXZlTGVuZ3RoKTsKKyAgICB0ZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0ID0gMDsKKyAgICB0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsK
KyAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQtPmI7CisgICAgdGV4dC0+bmF0aXZlSW5kZXhp
bmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOworICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZl
SW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OworICAgIC8vIEVuc3VyZSBjaHVuayBvZmZz
ZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFu
Z2Ugb3IgY2h1bmsgbGVuZ3RoLgorICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Cit9CisKK3N0YXRpYyB2
b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2Fy
ZCkKK3sKKyAgICBBU1NFUlQoIXRleHQtPmNodW5rQ29udGVudHMgfHwgdGV4dC0+Y2h1bmtDb250
ZW50cyA9PSB0ZXh0LT5wKTsKKyAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsKKyAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5Q
cmlvckNvbnRleHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Cit9
CisKK3N0YXRpYyBVVGV4dCogdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb25lKFVUZXh0KiBkZXN0
aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3Rh
dHVzKQoreworICAgIHJldHVybiB1VGV4dENsb25lSW1wbChkZXN0aW5hdGlvbiwgc291cmNlLCBk
ZWVwLCBzdGF0dXMpOworfQorCitzdGF0aWMgaW5saW5lIGludDY0X3QgdVRleHRVVEYxNkNvbnRl
eHRBd2FyZU5hdGl2ZUxlbmd0aChVVGV4dCogdGV4dCkKK3sKKyAgICByZXR1cm4gdGV4dC0+YSAr
IHRleHQtPmI7Cit9CisKK3N0YXRpYyBVQm9vbCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNz
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQoreworICAg
IGlmICghdGV4dC0+Y29udGV4dCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIGludDY0X3Qg
bmF0aXZlTGVuZ3RoID0gdVRleHRVVEYxNkNvbnRleHRBd2FyZU5hdGl2ZUxlbmd0aCh0ZXh0KTsK
KyAgICBVQm9vbCBpc0FjY2Vzc2libGU7CisgICAgaWYgKHVUZXh0QWNjZXNzSW5DaHVua09yT3V0
T2ZSYW5nZSh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkLCBpc0FjY2Vz
c2libGUpKQorICAgICAgICByZXR1cm4gaXNBY2Nlc3NpYmxlOworICAgIG5hdGl2ZUluZGV4ID0g
dVRleHRBY2Nlc3NQaW5JbmRleChuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoKTsKKyAgICBVVGV4
dFByb3ZpZGVyQ29udGV4dCBjdXJyZW50Q29udGV4dCA9IHRleHRVVEYxNkNvbnRleHRBd2FyZUdl
dEN1cnJlbnRDb250ZXh0KHRleHQpOworICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IG5ld0NvbnRl
eHQgPSB1VGV4dFByb3ZpZGVyQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgZm9yd2FyZCk7Cisg
ICAgQVNTRVJUKG5ld0NvbnRleHQgIT0gVVRleHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dCk7
CisgICAgaWYgKG5ld0NvbnRleHQgPT0gY3VycmVudENvbnRleHQpIHsKKyAgICAgICAgaWYgKGN1
cnJlbnRDb250ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAg
ICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQs
IG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRleHQodGV4dCwgbmF0
aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7CisgICAgfSBlbHNlIGlmIChuZXdDb250
ZXh0ID09IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCkKKyAgICAgICAgdGV4
dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmltYXJ5Q29udGV4dCh0ZXh0LCBuYXRpdmVJbmRl
eCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG5l
d0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW9yQ29udGV4dCk7CisgICAgICAg
IHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUlu
ZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30K
Kworc3RhdGljIGludDMyX3QgdVRleHRVVEYxNkNvbnRleHRBd2FyZUV4dHJhY3QoVVRleHQqLCBp
bnQ2NF90LCBpbnQ2NF90LCBVQ2hhciosIGludDMyX3QsIFVFcnJvckNvZGUqIGVycm9yQ29kZSkK
K3sKKyAgICAvLyBJbiB0aGUgcHJlc2VudCBjb250ZXh0LCB0aGlzIHRleHQgcHJvdmlkZXIgaXMg
dXNlZCBvbmx5IHdpdGggSUNVIGZ1bmN0aW9ucworICAgIC8vIHRoYXQgZG8gbm90IHBlcmZvcm0g
YW4gZXh0cmFjdCBvcGVyYXRpb24uCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgKmVy
cm9yQ29kZSA9IFVfVU5TVVBQT1JURURfRVJST1I7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp
YyB2b2lkIHVUZXh0VVRGMTZDb250ZXh0QXdhcmVDbG9zZShVVGV4dCogdGV4dCkKK3sKKyAgICB0
ZXh0LT5jb250ZXh0ID0gbnVsbHB0cjsKK30KKworVVRleHQqIG9wZW5VVEYxNkNvbnRleHRBd2Fy
ZVVUZXh0UHJvdmlkZXIoVVRleHQqIHRleHQsIGNvbnN0IFVDaGFyKiBzdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0
aCwgVUVycm9yQ29kZSogc3RhdHVzKQoreworICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCisg
ICAgICAgIHJldHVybiAwOworICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKKyAgICAg
ICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHRleHQgPSB1dGV4dF9zZXR1cCh0ZXh0LCAwLCBzdGF0dXMpOworICAgIGlm
IChVX0ZBSUxVUkUoKnN0YXR1cykpIHsKKyAgICAgICAgQVNTRVJUKCF0ZXh0KTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgaW5pdGlhbGl6ZUNvbnRleHRBd2FyZVVUZXh0UHJvdmlk
ZXIodGV4dCwgJnRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNzLCBzdHJpbmcsIGxlbmd0aCwgcHJp
b3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgpOworICAgIHJldHVybiB0ZXh0OworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VU
ZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9pY3UvVVRleHRQcm92aWRl
clVURjE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNjMmMyYzhlNmM1ZmFkYTc1YjVkNTFmOTZiYjhhY2UwYTcw
NGFiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvaWN1L1VUZXh0UHJv
dmlkZXJVVEYxNi5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVUZXh0
UHJvdmlkZXJVVEYxNl9oCisjZGVmaW5lIFVUZXh0UHJvdmlkZXJVVEYxNl9oCisKKyNpbmNsdWRl
IDx1bmljb2RlL3V0ZXh0Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitVVGV4dCogb3BlblVURjE2
Q29udGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250ZXh0TGVuZ3Ro
LCBVRXJyb3JDb2RlKik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVRleHRQ
cm92aWRlclVURjE2X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvbWFjL1RleHRC
cmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L21hYy9U
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZjVkYWE2NDI4
ODgyMWUyMGYyNjI4YzY4NTVlZThlODhhMzg5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCkBAIC0w
LDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK3N0YXRpYyBjb25zdCBpbnQgbWF4TG9jYWxlU3RyaW5n
TGVuZ3RoID0gMzI7CisKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0
QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RS
ZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigiQXBwbGVU
ZXh0QnJlYWtMb2NhbGUiKSwKKyAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwg
a0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSk7CisgICAg
aWYgKCFsb2NhbGUgfHwgQ0ZHZXRUeXBlSUQobG9jYWxlLmdldCgpKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KGxvY2FsZS5nZXQoKSk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCit7CisgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IGxhbmd1YWdlc0FycmF5ID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFn
ZXMoKSk7CisgICAgaWYgKCFsYW5ndWFnZXNBcnJheSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgaWYgKCFDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzQXJyYXkuZ2V0KCkpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzQXJyYXkuZ2V0KCksIDApKTsKK30KKworc3Rh
dGljIHZvaWQgZ2V0TG9jYWxlKENGU3RyaW5nUmVmIGxvY2FsZSwgY2hhciBsb2NhbGVTdHJpbmdC
dWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKK3sKKyAgICAvLyBFbXB0eSBzdHJpbmcgbWVh
bnMgInJvb3QgbG9jYWxlIiwgYW5kIHRoYXQgaXMgd2hhdCB3ZSB1c2UgaWYgd2UgY2FuJ3QgZ2V0
IGEgcHJlZmVyZW5jZS4KKyAgICBsb2NhbGVTdHJpbmdCdWZmZXJbMF0gPSAwOworICAgIGlmICgh
bG9jYWxlKQorICAgICAgICByZXR1cm47CisgICAgQ0ZTdHJpbmdHZXRDU3RyaW5nKGxvY2FsZSwg
bG9jYWxlU3RyaW5nQnVmZmVyLCBtYXhMb2NhbGVTdHJpbmdMZW5ndGgsIGtDRlN0cmluZ0VuY29k
aW5nQVNDSUkpOworfQorCitzdGF0aWMgdm9pZCBnZXRTZWFyY2hMb2NhbGUoY2hhciBsb2NhbGVT
dHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKK3sKKyAgICBnZXRMb2NhbGUodG9w
TGFuZ3VhZ2VQcmVmZXJlbmNlKCkuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Cit9CisKK2Nv
bnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgc3RhdGljIGNoYXIgbG9j
YWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07CisgICAgc3RhdGljIGJvb2wg
Z290U2VhcmNoTG9jYWxlID0gZmFsc2U7CisgICAgaWYgKCFnb3RTZWFyY2hMb2NhbGUpIHsKKyAg
ICAgICAgZ2V0U2VhcmNoTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7CisgICAgICAgIGdvdFNl
YXJjaExvY2FsZSA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBsb2NhbGVTdHJpbmdCdWZmZXI7
Cit9CisKK3N0YXRpYyB2b2lkIGdldFRleHRCcmVha0xvY2FsZShjaGFyIGxvY2FsZVN0cmluZ0J1
ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQoreworICAgIC8vIElmIHRoZXJlIGlzIG5vIHRl
eHQgYnJlYWsgbG9jYWxlLCB1c2UgdGhlIHRvcCBsYW5ndWFnZSBwcmVmZXJlbmNlLgorICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlID0gdGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSgp
OworICAgIGlmIChsb2NhbGUpIHsKKyAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2Fub25pY2FsTG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExhbmd1YWdl
SWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlLmdldCgpKSkp
CisgICAgICAgICAgICBsb2NhbGUgPSBjYW5vbmljYWxMb2NhbGU7CisgICAgfSBlbHNlCisgICAg
ICAgIGxvY2FsZSA9IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpOworICAgIGdldExvY2FsZShsb2Nh
bGUuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRU
ZXh0QnJlYWtMb2NhbGVJRCgpCit7CisgICAgc3RhdGljIGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVy
W21heExvY2FsZVN0cmluZ0xlbmd0aF07CisgICAgc3RhdGljIGJvb2wgZ290VGV4dEJyZWFrTG9j
YWxlID0gZmFsc2U7CisgICAgaWYgKCFnb3RUZXh0QnJlYWtMb2NhbGUpIHsKKyAgICAgICAgZ2V0
VGV4dEJyZWFrTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7CisgICAgICAgIGdvdFRleHRCcmVh
a0xvY2FsZSA9IHRydWU7CisgICAgfQorICAgIHJldHVybiBsb2NhbGVTdHJpbmdCdWZmZXI7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvd2luL1RleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC93aW4vVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY2N2E5MDY0ZTU4ZjEwOGE0
NDEwN2ZhMGI1MGFhZTUyNTc2M2Q0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwCkBAIC0wLDAgKzEs
NDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJh
dG9ySW50ZXJuYWxJQ1UuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK2NvbnN0IGNoYXIqIGN1cnJl
bnRTZWFyY2hMb2NhbGVJRCgpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCB1c2Ugc3lzdGVtIGxv
Y2FsZS4KKyAgICByZXR1cm4gIiI7Cit9CisKK2NvbnN0IGNoYXIqIGN1cnJlbnRUZXh0QnJlYWtM
b2NhbGVJRCgpCit7CisgICAgLy8gVXNpbmcgZW5fVVNfUE9TSVggbm93IHNvIHdvcmQgc2VsZWN0
aW9uIGluIGFkZHJlc3MgZmllbGQgd29ya3MgYXMgZXhwZWN0ZWQgYXMgYmVmb3JlIChkb3VibGUt
Y2xpY2tpbmcKKyAgICAvLyBpbiBhIFVSTCBzZWxlY3RzIGEgd29yZCBkZWxpbWl0ZWQgYnkgcGVy
aW9kcyByYXRoZXIgdGhhbiBzZWxlY3RpbmcgdGhlIGVudGlyZSBVUkwpLgorICAgIC8vIEhvd2V2
ZXIsIHRoaXMgaXMgbm90IGVudGlyZWx5IGNvcnJlY3QgLSB3ZSBzaG91bGQgaG9ub3IgdGhlIHN5
c3RlbSBsb2NhbGUgaW4gdGhlIG5vcm1hbCBjYXNlLgorICAgIC8vIEZJWE1FOiA8cmRhcjovL3By
b2JsZW0vNjc4NjcwMz4gU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlIGZvciB0ZXh0IGJyZWFraW5n
CisgICAgcmV0dXJuICJlbl9VU19QT1NJWCI7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggOTA0Mzc3ZmNlYmRkNTZlNjBlNjYyZGU1Mjc0MDYxNTY2NTQyODc2YS4uZTc4YjA0MmIxMDQw
MWUxZjRlZTNhMmFiMWEwNTJjMjE4YzNhMTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIz
NzAsNyArMjM3MCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L1F1
b3RlZFByaW50YWJsZS5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAK
ICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAotICAgIHBsYXRmb3JtL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuY3BwCiAg
ICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNMYXRpbjEuY3BwCkBAIC0yMzgzLDEwICsyMzgyLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCiAgICAgcGxhdGZv
cm0vdGV4dC9UZXh0U3RyZWFtLmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92
aWRlci5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmNwcAot
ICAgIHBsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5jcHAKLQogICAgIHBsdWdp
bnMvRE9NTWltZVR5cGUuY3BwCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAogICAg
IHBsdWdpbnMvRE9NUGx1Z2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzZmU2
MDM3OGMyNmNmMDhlNDVmMzczZWQ1MzM4N2RlZjc4NDU2Y2EzLi41MTQ1MDRlNmVjMjVhYTVlNDNi
OTkzOThkNWUzNWNlZWVhNzY2YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjEy
LDggKzIxMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL3Rl
eHQvSHlwaGVuYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCiAKLSAg
ICBwbGF0Zm9ybS90ZXh0L2VmbC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVRWZsLmNwcAot
CiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5jcHAKIAogICAg
IHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCBjMjI0MDViNzRlMTVlN2I3NWY3NGFjODBmODE1N2M3NzNhOWM5
ZWMwLi42NDVhZGQxY2UzODg4OGIwNGQ0YTJkODlhZGEwYTdjNmRlMTk5ODZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTgyLDggKzE4Miw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogCiAgICAgcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5jaGFudC5j
cHAKIAotICAgIHBsYXRmb3JtL3RleHQvZ3RrL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VH
dGsuY3BwCi0KICAgICBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5j
cHAKIAogICAgIHBsYXRmb3JtL3VuaXgvTG9nZ2luZ1VuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IDM5ODk2Zjk4NDM1MjYxMmE5ZWVkNDliMjQwMTE0YjRjMWQ4NDk1OTguLjlm
NmY0OTZiNmNjNGVmNmU0Yjc0ZDg0YWMwYWE5ZGVhNTVhMDIzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC01NjYsNyArNTY2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAKICAgICBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KICAgICBwbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbQotICAgIHBsYXRmb3JtL3RleHQvbWFjL1RleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0KICAgICBwbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNN
YWMuY3BwCiAKICAgICByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
aW4uY21ha2UKaW5kZXggY2NiMWE1NzFlOWE2ZGU1NmFjZDA1NGE5MzM2NTM5ZDA4ZTYwZjNmZi4u
OGQ3OTBmYTcwOTFmYjYxMmYxNTE4OTU2OWM1N2Q5NmE5NWNjZDVkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1XaW4uY21ha2UKQEAgLTEwOSw4ICsxMDksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKIAogICAgIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKIAotICAgIHBsYXRm
b3JtL3RleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwCi0KICAgICBw
bGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKICAgICBwbGF0Zm9ybS93aW4vQml0bWFwSW5mby5jcHAK
ICAgICBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiYTU3Zjg0
OTliMTZkYjBlMDY4ZmQ5ZDc1M2ViOTE1MjJjOWViODQuLmMxMWJjNDdlNWNhZDYzMGEzNjU3Y2Rl
MWFkOWY3Yjc2YTBhNTVjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE1MTgsMTEgKzE1MTgsMTEgQEAKIAkJMzdGNTdBQkEx
QTUwNzI2RjAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBOUUxMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwICovOyB9OwogCQkzN0Y1N0FC
QjFBNTA3MjczMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQTlGMTMxODIyRUMw
MEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwICovOyB9OwogCQkzN0Y1N0FC
QzFBNTA3Mjc3MDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBMDEzMTgyMkVD
MDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgKi87IH07CisJCTM3RjU3
QUJDMUE1MDcyODQwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQUJDNDEzMTgy
MkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eU1hdGhNTEVsZW1lbnQuY3BwICovOyB9OwogCQkz
N0Y1N0FCRDFBNTA3MjdBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBQTExMzE4MjJFQzAw
RDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNwcCAqLzsgfTsKIAkJMzdGNTdBQkUxQTUwNzI3
RTAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFDQUEyMTMxODIyRUMwMEQxMkYyQSAvKiBB
Y2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAgKi87IH07CiAJCTM3RjU3QUJGMUE1MDcyODEwMDg3NkY5
OCAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBMzEzMTgyMkVDMDBEMTJGMkEgLyogQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwICovOyB9OwogCQkzN0Y1N0FDMDFBNTA3Mjg0MDA4
NzZGOTggLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKLQkJMzdGNTdBQkMxQTUwNzI4
NDAwODc2Rjk4IC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODFBQkM0MTMxODIyRUMwMEQxMkYy
QSAvKiBBY2Nlc3NpYmlsaXR5TWF0aE1MRWxlbWVudC5jcHAgKi87IH07CiAJCTM3RjU3QUMxMUE1
MDcyODcwMDg3NkY5OCAvKiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg1NzA5MjE1Q0M1MzJEMDA2MzU1
Q0QgLyogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwICovOyB9OwogCQkzN0Y1N0FDMjFBNTA3
MjhCMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTgxQ0FBNTEzMTgyMkVDMDBEMTJGMkEgLyog
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi87IH07CiAJCTM3RjU3QUMzMUE1MDcyOEYwMDg3NkY5
OCAvKiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTQwOUM5ODIxMTZEMERERDAwNzE5N0JEIC8q
IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAgKi87IH07CkBAIC0xNjkzLDEwICsx
NjkzLDggQEAKIAkJNDM5MDQ2REQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGgu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2
QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGguY3BwICovOyB9OwogCQk0Mzkw
NDZERTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MTWF0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2Q0ExMkRBMjVFODAwQUY4MEEy
IC8qIFJlbmRlck1hdGhNTE1hdGguaCAqLzsgfTsKIAkJNDM5MDQ2REYxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1M
T3BlcmF0b3JEaWN0aW9uYXJ5LmNwcCAqLzsgfTsKLQkJNDM5MTc2REYxMkRBMjVFMTdCQUY4MEEy
IC8qIE1hdGhNTFN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQzOTE3NkNCMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgKi87
IH07CiAJCTQzOTA0NkRGMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZD
QjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwICovOyB9OwogCQk0
MzkwNDZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDQzEyREEy
NUUxN0JBRjgwQTIgLyogTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi87IH07Ci0JCTQzOTE3
NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1h
dGhNTFN0eWxlLmggKi87IH07CiAJCTQzOTA0NkUwMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJN
YXRoTUxPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE9wZXJhdG9yLmgg
Ki87IH07CiAJCTQzOTA0NkUxMTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNE
MTJEQTI1RTgwMEFGODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLzsgfTsKIAkJNDM5MDQ2
RTIxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTFJvb3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkNFMTJEQTI1RTgwMEFGODBBMiAv
KiBSZW5kZXJNYXRoTUxSb290LmggKi87IH07CkBAIC0xNzEwLDYgKzE3MDgsOCBAQAogCQk0Mzkw
NDZFQTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENjEyREEyNUU4MTJBRjgwQUMgLyog
TWF0aE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkVCMTJEQTI1RTgwMEFGODBBOSAvKiBSZW5k
ZXJNYXRoTUxUb2tlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MzkwNDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
ICovOyB9OwogCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkQ4
MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oICovOyB9OworCQk0MzkxNzZE
RjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MTc2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1h
dGhNTFN0eWxlLmNwcCAqLzsgfTsKKwkJNDM5MTc2RTAxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhN
TFN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLzsgfTsKIAkJNDM5RDMz
NDMxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDAxM0E2OTExQzAwQzIwRjRGIC8q
IFNWR0FuaW1hdGVkVHlwZS5oICovOyB9OwogCQk0MzlEMzM0NDEzQTY5MTFDMDBDMjBGNEYgLyog
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5
cGVBbmltYXRvci5oICovOyB9OwogCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5p
bWF0b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi87
IH07CkBAIC0yODE0LDEyICsyODE0LDYgQEAKIAkJN0M3M0ZCMTExOTFFRjZGNDAwN0RFMDYxIC8q
IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDNzNGQjBGMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdl
SGFuZGxlci5jcHAgKi87IH07CiAJCTdDNzNGQjEyMTkxRUY2RjQwMDdERTA2MSAvKiBKU1VzZXJN
ZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmgg
Ki87IH07CiAJCTdDNzNGQjE5MTkxRUY4MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3M0ZCMTcxOTFFRjgwODAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5k
bGVyc05hbWVzcGFjZUN1c3RvbS5jcHAgKi87IH07Ci0JCTdDNzRENDMzMTg4MjNBOTMwMEU1RUQ1
NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDMxMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyTGF0aW4xLmNwcCAqLzsgfTsKLQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0
UHJvdmlkZXJMYXRpbjEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmgg
Ki87IH07Ci0JCTdDNzRENDM3MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM1MTg4
MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLzsgfTsKLQkJN0M3NEQ0MzgxODgy
M0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFBy
b3ZpZGVyLmggKi87IH07Ci0JCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgKi87
IH07Ci0JCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzRENDNBMTg4
MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLzsgfTsKIAkJN0M3OTQxRTQx
QzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFFMjFDNTZDMjkzMDBB
NEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsgfTsKIAkJN0M3OTQxRTUx
QzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0MUUzMUM1NkMyOTMwMEE0
QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi87IH07CiAJCTdDODNERTg2MUQw
NENDNUQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZFQkNGMyAvKiBTcHJpbmdT
b2x2ZXIuaCAqLzsgfTsKQEAgLTQyNzUsNyArNDI2OSw2IEBACiAJCUE1QTJBRjBCMTgyOTczNDMw
MERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVn
Z2FibGUuY3BwICovOyB9OwogCQlBNUEyQUYwQzE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVn
Z2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
QTJBRjBBMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oICovOyB9OwogCQlBNUE3
QUE0MzEzMkYwRUNDMDBEM0EzQzIgLyogV2ViQXV0b2NhcGl0YWxpemUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTdBQTQyMTMyRjBFQ0MwMEQzQTND
MiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUE1QUJCNzg3MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJ
Q1UuaCAqLzsgfTsKIAkJQTVBRkIzNEYxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUFGQjM0RDEx
NTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLzsgfTsKIAkJQTVBRkIzNTAxMTUxNTFB
NzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1REVCREEz
MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVC
RDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50LmNwcCAqLzsgfTsKQEAgLTUxMTAsNyArNTEwMyw2IEBACiAJCUIyQUZGQzgwMEQwMEE1QzEw
MDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJBRkZDNzgwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYXNj
YWRlQ29jb2EubW0gKi87IH07CiAJCUIyQUZGQzgzMEQwMEE1QzEwMDMwMDc0RCAvKiBHbHlwaFBh
Z2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjJBRkZDN0IwRDAwQTVDMTAwMzAwNzREIC8qIEdseXBoUGFnZU1hYy5jcHAgKi87IH07CiAJCUIy
QUZGQzk3MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Qm91bmRhcmllcy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQUZGQzhDMEQwMEE1REYwMDMwMDc0
RCAvKiBUZXh0Qm91bmRhcmllcy5tbSAqLzsgfTsKLQkJQjJBRkZDOTgwRDAwQTVERjAwMzAwNzRE
IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RDBEMDBBNURGMDAzMDA3NEQgLyog
VGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLzsgfTsKIAkJQjJBRkZDOTkwRDAw
QTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkFGRkM4RTBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENv
ZGVjTWFjLmNwcCAqLzsgfTsKIAkJQjJBRkZDOUEwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2Rl
Y01hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJB
RkZDOEYwRDAwQTVERjAwMzAwNzREIC8qIFRleHRDb2RlY01hYy5oICovOyB9OwogCQlCMkIxRjcx
NjBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQjFGNzE0MEQwMENBQTgwMDRB
RUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwICovOyB9OwpAQCAtNTEyMiw4ICs1MTE0
LDYgQEAKIAkJQjJDM0RBMkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzRDlGRTBE
MDA2QzFEMDBFRjZGMjYgLyogU2VnbWVudGVkU3RyaW5nLmNwcCAqLzsgfTsKIAkJQjJDM0RBMkYw
RDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0Q5RkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNl
Z21lbnRlZFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUIyQzNEQTM0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBMDQwRDAw
NkMxRDAwRUY2RjI2IC8qIFRleHRCb3VuZGFyaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQjJDM0RBMzYwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRCcmVha0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMkMzREEwNjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCMkMzREEz
ODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJDM0RBMDgwRDAwNkMx
RDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMkMzREEzOTBEMDA2QzFEMDBF
RjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyQzNEQTA5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMuY3BwICov
OyB9OwogCQlCMkMzREEzQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEwQTBEMDA2QzFEMDBF
RjZGMjYgLyogVGV4dENvZGVjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQjJDM0RBM0IwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0lDVS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkMzREEw
QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjSUNVLmNwcCAqLzsgfTsKQEAgLTU4MDcsNyAr
NTc5Nyw2IEBACiAJCUJDRDBGQzRGMERCRDcyMEIwMEIyRjYzMCAvKiBET01SR0JDb2xvckludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Qw
RkM0RTBEQkQ3MjBCMDBCMkY2MzAgLyogRE9NUkdCQ29sb3JJbnRlcm5hbC5oICovOyB9OwogCQlC
Q0Q0MUFCQjBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDQxQUJB
MEMwNjBERTgwMEMwRTQ0NiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwICovOyB9
OwogCQlCQ0Q1MzM2NDBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDUz
MzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oICovOyB9
OwotCQlCQ0Q4QTVGMDE1RjU2RjJDMDA5OEQwNzEgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEOEE1RUYxNUY1
NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJQkNEOUMyNjIw
QzE3QUE2NzAwNUM5MEEyIC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAv
KiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi87IH07CiAJCUJDRDlDMjYzMEMxN0FBNjcwMDVDOTBB
MiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzI1RjBDMTdBQTY3MDA1QzkwQTIgLyogSlNOYW1lZE5v
ZGVNYXBDdXN0b20uY3BwICovOyB9OwogCQlCQ0Q5QzI2NDBDMTdBQTY3MDA1QzkwQTIgLyogSlNO
b2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDlDMjYwMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVDdXN0b20uY3BwICovOyB9OwpA
QCAtODY5MSw2ICs4NjgwLDcgQEAKIAkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
NDk4NjgxMTk1MzQxOTQwMDcyRDJCRCAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9u
TWFya3VwTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTdCRTNEOTE2QzA0
M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk4MUFCQzQxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Mjk4MUNBOUQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOTgxQ0E5RTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0
eUFSSUFHcmlkQ2VsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBOUYxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODY5OSw3ICs4Njg5LDYgQEAKIAkJMjk4MUNBQTIxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlMaXN0Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTMxMzE4
MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMjk4MUNBQTQxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjk4MUFCQzQxMzE4MjJF
QzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlNYXRoTUxFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjk4MUNBQTUxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlv
bklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJMjk4MUNBQTYxMzE4MjJFQzAwRDEy
RjJBIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI5ODFDQUE3MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTAzNiw4ICs5MDI1LDggQEAKIAkJMzFGQjFBNkIxMjBB
NUQ2OTAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0U5MTA4OTIwODYwMDBGMEU1NiAv
KiBKU0V4Y2VwdGlvbkJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFeGNlcHRpb25CYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMx
NEFDRUExMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0V4Y2VwdGlvbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzMxRkY2N0RFMTk3QjU3MzkzQzQ2QUE3IC8qIFJlbmRlck1hdGhNTFNwYWNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTFNwYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMUZGNjdERTE5N0I1NzM5M0M0NkE3RiAv
KiBSZW5kZXJNYXRoTUxQYWRkZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyTWF0aE1MUGFkZGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzMUZG
NjdERTE5N0I1NzM5M0M0NkFBNyAvKiBSZW5kZXJNYXRoTUxTcGFjZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMzNGNzA0RTBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90
aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gTm90aWZp
Y2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzExLDEwICs5
MzAwLDggQEAKIAkJNDM5MDQ2QzkxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE1hdGgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MTWF0
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNBMTJEQTI1RTgwMEFG
ODBBMiAvKiBSZW5kZXJNYXRoTUxNYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlck1hdGhNTE1hdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5
MDQ2Q0IxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxPcGVyYXRvckRpY3Rpb25h
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzkxNzZDQjEyREEyNUUxN0JB
RjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWF0aE1MU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Mzkw
NDZDQjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZDQzEyREEyNUUxN0JBRjgwQTIgLyog
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDM5MDQ2Q0MxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTE9wZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTE9wZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkNEMTJEQTI1RTgwMEFG
ODBBMiAvKiBSZW5kZXJNYXRoTUxSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlck1hdGhNTFJvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MzkwNDZDRTEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MUm9vdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoTUxSb290Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzI4LDYgKzkzMTUsOCBAQAogCQk0MzkwNDZENjEyREEy
NUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1hdGhPcGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Mzkw
NDZENzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1MVG9rZW4uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aE1MVG9rZW4uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MzkwNDZEODEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVy
TWF0aE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0
aE1MVG9rZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM5MTc2Q0IxMkRBMjVF
MTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDM5MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmlt
YXRlZFR5cGVBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRlZFR5cGVBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzlE
MzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA1NTcsMTIgKzEwNTQ2LDYgQEAKIAkJN0M3M0ZCMEYxOTFFRjZG
NDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVXNlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M3M0ZCMTAxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVXNlck1lc3Nh
Z2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNzNGQjE3MTkxRUY4
MDgwMDdERTA2MSAvKiBKU1VzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2VDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVc2VyTWVzc2FnZUhhbmRsZXJz
TmFtZXNwYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0
MzExODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlckxhdGluMS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNzRENDMyMTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4
dFByb3ZpZGVyTGF0aW4xLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0
UHJvdmlkZXJMYXRpbjEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzUx
ODgyM0IxOTAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVRleHRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdDNzRENDM2MTg4MjNCMTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M3NEQ0MzkxODgyNDAwNDAwRTVFRDU3IC8qIFVUZXh0UHJv
dmlkZXJVVEYxNi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVGV4
dFByb3ZpZGVyVVRGMTYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Qzc0RDQz
QTE4ODI0MDA0MDBFNUVENTcgLyogVVRleHRQcm92aWRlclVURjE2LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVUZXh0UHJvdmlkZXJVVEYxNi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0Nv
cmVTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERh
dGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExp
bmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4M0RFODUxRDA0Q0JENDAwRkVC
Q0YzIC8qIFNwcmluZ1NvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
cHJpbmdTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMDc1LDcgKzEy
MDU4LDYgQEAKIAkJQTVBMkFGMDkxODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dhYmxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVBMkFGMEExODI5NzM0MzAwREUxNzI5
IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
Z2VEZWJ1Z2dhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QTdBQTQyMTMy
RjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJBdXRvY2FwaXRhbGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29s
SUNVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVCcmVha0l0ZXJhdG9y
UG9vbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RDExNTE1MUE3
MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZC
MzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEtleUV2ZW50Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzMTA4LDcgKzEzMDkwLDYgQEAKIAkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzRE
IC8qIG1hYy1lbmNvZGluZ3MudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAibWFjLWVuY29k
aW5ncy50eHQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4NzBEMDBBNURG
MDAzMDA3NEQgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnBlcmw7IHBhdGggPSAibWFrZS1jaGFyc2V0LXRhYmxlLnBsIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRCb3VuZGFyaWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkFGRkM4RDBEMDBBNURGMDAzMDA3
NEQgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFGRkM4RTBEMDBBNURGMDAzMDA3
NEQgLyogVGV4dENvZGVjTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUZXh0Q29kZWNNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkFG
RkM4RjBEMDBBNURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjJCMUY3MTQwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRlckV2ZW50c0hp
dFJ1bGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTIwLDggKzEzMTAx
LDYgQEAKIAkJQjJDM0Q5RkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VnbWVudGVkU3RyaW5nLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0Q5RkYwRDAwNkMxRDAwRUY2RjI2
IC8qIFNlZ21lbnRlZFN0cmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VnbWVudGVkU3RyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyQzNEQTA0
MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dEJvdW5kYXJpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjJDM0RBMDYwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0QnJlYWtJdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMkMzREEwODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkMzREEwOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0Q29kZWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMkMzREEwQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENv
ZGVjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJDM0RBMEIwRDAwNkMxRDAwRUY2RjI2IC8qIFRl
eHRDb2RlY0lDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4
dENvZGVjSUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODMxLDcgKzEz
ODEwLDYgQEAKIAkJQkNEMEZDNEUwREJENzIwQjAwQjJGNjMwIC8qIERPTVJHQkNvbG9ySW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUkdCQ29sb3JJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q0MUFCQTBDMDYwREU4MDBDMEU0
NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2Fj
aGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQkNEOEE1RUYxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNEOUMyNUUwQzE3QUE2NzAwNUM5MEEy
IC8qIEpTRE9NV2luZG93Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVdpbmRvd0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDRDlDMjVGMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYW1lZE5vZGVNYXBDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q5QzI2MDBDMTdBQTY3MDA1
QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU05vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTg0MjUsMTkgKzE4NDAzLDYgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CiAJCX07Ci0JCTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBpY3UgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTdDNzRENDM1MTg4MjNC
MTkwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCAqLywKLQkJCQk3Qzc0RDQzNjE4ODIzQjE5
MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oICovLAotCQkJCTdDNzRENDMxMTg4MjNBOTMwMEU1
RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCAqLywKLQkJCQk3Qzc0RDQzMjE4ODIzQTkz
MDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGluMS5oICovLAotCQkJCTdDNzRENDM5MTg4MjQw
MDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3BwICovLAotCQkJCTdDNzRENDNBMTg4
MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuaCAqLywKLQkJCSk7Ci0JCQlwYXRo
ID0gaWN1OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJN0U0REUxMEIxOThC
MTA4MTAwNTFDQjAyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTIyMzM1LDcgKzIyMzAwLDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJQjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8qIGNmICovLAotCQkJ
CTdDNzRENDMwMTg4MjNBNDIwMEU1RUQ1NyAvKiBpY3UgKi8sCiAJCQkJQTUxNkU4QjIxMzZFMDRD
MDAwNzZDM0MwIC8qIGlvcyAqLywKIAkJCQlCMkMzRDlGOTBEMDA2QzFEMDBFRjZGMjYgLyogbWFj
ICovLAogCQkJCUIyQzNEOUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5jcHAgKi8s
CkBAIC0yMjM0Nyw3ICsyMjMxMSw2IEBACiAJCQkJNDUzRUI2MzUxNTlDNTcwNDAwMDAxQkI3IC8q
IERhdGVUaW1lRm9ybWF0LmggKi8sCiAJCQkJQ0VDQ0ZDM0ExNDE5NzNENTAwMkEwQUMxIC8qIERl
Y29kZUVzY2FwZVNlcXVlbmNlcy5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQzQzgwMEEyQTg1OSAv
KiBIeXBoZW5hdGlvbi5oICovLAotCQkJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5l
QnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLywKIAkJCQk4OUI1RUE5RjExRTgwMDNEMDBGMjM2N0Ug
LyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJODlCNUVBQTAxMUU4MDAzRDAwRjIzNjdFIC8qIExp
bmVFbmRpbmcuaCAqLywKIAkJCQk3NjMzQTcyNDEzRDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9T
Y3JpcHRNYXBwaW5nLmggKi8sCkBAIC0yMjM2Myw5ICsyMjMyNiw2IEBACiAJCQkJOTdDMDc4NEYx
MTY1RDVCRTAwM0EzMkVGIC8qIFN1ZmZpeFRyZWUuaCAqLywKIAkJCQkzNzJDMDBDMzEyOTYxMUYx
MDA1Qzk1NzUgLyogVGV4dEJvdW5kYXJpZXMuY3BwICovLAogCQkJCUIyQzNEQTA0MEQwMDZDMUQw
MEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovLAotCQkJCUJDRDhBNUVGMTVGNTZGMkMwMDk4
RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi8sCi0JCQkJQjJDM0RBMDYwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9yLmggKi8sCi0JCQkJQjJDM0RBMDgwRDAwNkMxRDAw
RUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCAqLywKIAkJCQlBNzE1MUJE
NzEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCAqLywKIAkJCQlBNzdEMDAx
MTEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggKi8sCiAJCQkJQjJDM0RBMDkwRDAw
NkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlYy5jcHAgKi8sCkBAIC0yMjQwOSw3ICsyMjM2OSw2IEBA
CiAJCQkJQjJBRkZDODYwRDAwQTVERjAwMzAwNzREIC8qIG1hYy1lbmNvZGluZ3MudHh0ICovLAog
CQkJCUIyQUZGQzg3MEQwMEE1REYwMDMwMDc0RCAvKiBtYWtlLWNoYXJzZXQtdGFibGUucGwgKi8s
CiAJCQkJQjJBRkZDOEMwRDAwQTVERjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tICovLAot
CQkJCUIyQUZGQzhEMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFs
SUNVTWFjLm1tICovLAogCQkJCUIyQUZGQzhFMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNN
YWMuY3BwICovLAogCQkJCUIyQUZGQzhGMEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0Q29kZWNNYWMu
aCAqLywKIAkJCSk7CkBAIC0yNzQwMCw3ICsyNzM1OSw2IEBACiAJCQkJQkNGRjY0OTIwRUFEMTVD
MjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDkxMTI0
OEYwQjMwMEQzQTlDOSAvKiBMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5
NjUwRDAwQkYyMjAwNzFCNzgyIC8qIExpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9y
UG9vbElDVS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8q
IExpbmVDbGFtcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUI1RUFBMjExRTgwMDNEMDBG
MjM2N0UgLyogTGluZUVuZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZFRkFCMkExODM4MERB
MDAwNTE0NTM0IC8qIExpbmVMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODYyMiw4
ICsyODU4MCw2IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NERDRTYxODgxMDUxRDAwM0VF
REJCIC8qIFRleHRBdXRvU2l6aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEzNDBEMDA2
QzFEMDBFRjZGMjYgLyogVGV4dEJvdW5kYXJpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUIyQzNE
QTM2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQjJDM0RBMzgwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJu
YWxJQ1UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTUxQkQ4MTJGMTU1OEYwMDVBMEY2NCAvKiBU
ZXh0Q2hlY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3RDAwMTIxMzNCMEFFQjAw
RDY2NThDIC8qIFRleHRDaGVja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEQkY4REUxMjc2
OTE5QzAwNkI2MDA4IC8qIFRleHRDaGVja2luZ0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
ODc2Niw5ICsyODcyMiw2IEBACiAJCQkJQkM4QkYxNTExMDU4MTNCRjAwQTQwQTA3IC8qIFVzZXJT
dHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCRjE1QTEwNTgxNDE4MDBBNDBBMDcg
LyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNERjMxN0MxMUY4
RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmggaW4gSGVhZGVycyAq
LywKLQkJCQk3Qzc0RDQzODE4ODIzQjE5MDBFNUVENTcgLyogVVRleHRQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJN0M3NEQ0MzQxODgyM0E5MzAwRTVFRDU3IC8qIFVUZXh0UHJvdmlkZXJM
YXRpbjEuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDNzRENDNDMTg4MjQwMDQwMEU1RUQ1NyAvKiBV
VGV4dFByb3ZpZGVyVVRGMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQUZCRjE5MTVBNUZBNzQw
MDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFM0JCRjA4MTE2
MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggaW4gSGVhZGVycyAqLywKIAkJCQlGNUExNTQyODEyNzk1
MzREMDBEMEIwQzAgLyogVmFsaWRhdGlvbk1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzIx
ODMsOCArMzIxMzYsNiBAQAogCQkJCTBGNTREQ0U1MTg4MTA1MUQwMDNFRURCQiAvKiBUZXh0QXV0
b1NpemluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzJDMDBDNDEyOTYxMUYxMDA1Qzk1NzUg
LyogVGV4dEJvdW5kYXJpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDOTcwRDAwQTVE
RjAwMzAwNzREIC8qIFRleHRCb3VuZGFyaWVzLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkNEOEE1
RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUIyQUZGQzk4MEQwMEE1REYwMDMwMDc0RCAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEQkY4REQxMjc2OTE5QzAwNkI2MDA4
IC8qIFRleHRDaGVja2luZ0hlbHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkMzREEzOTBE
MDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNE
QTNCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zMjMwMyw5ICszMjI1NCw2IEBACiAJCQkJN0NFNjgzNDQxOTIxNDNBODAwRjREOTI4IC8qIFVz
ZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3M0ZC
MDcxOTFFRjQxNzAwN0RFMDYxIC8qIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNERjMxN0IxMUY4RDY4MzAwM0M1QkY4IC8qIFVzZXJUeXBpbmdH
ZXN0dXJlSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNzRENDM3MTg4MjNCMTkw
MEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTdDNzRENDMz
MTg4MjNBOTMwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTdDNzRENDNCMTg4MjQwMDQwMEU1RUQ1NyAvKiBVVGV4dFByb3ZpZGVyVVRGMTYuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxp
dGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFM0JCRjA3MTE2MkRBMTEwMEI5NDA5QSAvKiBV
VUlELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1QTE1NDI3MTI3OTUzNEQwMEQwQjBDMCAvKiBW
YWxpZGF0aW9uTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcAppbmRleCBkNTMzYzM3MGNlNjc1ZmZhNTg2NGM2NDY2YTg0MTQ3M2JmNDFlMTY3
Li5iMmQ3ZGFlNzI5NWQwYTI0ODA4ZDAwZGQzNGJiNDMzNTAyYjkzMzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlN0
eWxlSW5oZXJpdGVkRGF0YS5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGI2OTUyZTJiODZmMTljZWM2NmRjYmFmY2U5NjYyMWI2
ZDUxMTk5YjkuLmYxODY1NDk2N2RkZTU3NzU2ZTVkMzU5Nzg3M2Q1MmI5MmFjNDc3YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dENo
ZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNp
YmxlUG9zaXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRl
eCBjYjc0YWY5NjMwZGI0ZTI1ODg1MDZlNzU3MjZlZDNhMDBmZTExY2Y2Li4wN2FhYjYxNmNiNjdm
OTZmODdlZmYxYzQ2N2ZkYmRmOTUzMDYxNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91
dC5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRl
eHRCb3VuZGFyaWVzLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlZp
c2libGVVbml0cy5oIgpAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0No
YXJhY3Rlck5hbWVzLmg+CiAKICNpZiAhVUNPTkZJR19OT19DT0xMQVRJT04KLSNpbmNsdWRlICJU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91c2VhcmNo
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oPgog
I2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggZWQ2YTY4YTFhYTY2NDYwMGE5NjNjNjkyZTJjYjg4
YzAzODUzZTRiZS4uZTBkYzQwNTVlYWVkZjhiMzg4YjM0ZWIyYmU4MjZiMWQ0NTJmNmQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVk
ZSAiVGV4dEJvdW5kYXJpZXMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAwMjNh
YzMzOTBmMmJkYTJiNzUzZjdhYmI4MzA2OTM5YTRkMzZmMDUyLi4zNGI0Y2NjYWVkN2I5ZjM1OGE5
NzM2ODllM2IwNzZhYjU3YWU1N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgi
CiAjaW5jbHVkZSAiU2VhcmNoSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuaD4KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiVG91Y2hF
dmVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5k
ZXggZjkyMTA4YWNhNmYxZDhhM2Q5Y2VkYWNkYjBiODA4MmRkZjM4MmM4ZC4uY2YyYThhODg3MDYx
OGQwMGUzZjU2ZWUxMmEyYmI3NmNmZjRjNTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRy
YXZlcnNhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNhYWY0MTQ1ZWQxOGNk
ZDA3YzViNDk4N2ZlNzc3OTBjNDAzMjYwMTkuLjg5MWI2YmJmYTljYTYzYmM1NWQxMzBjZmJiZjA5
NTEyOTg4YzA4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTcwLDcgKzcwLDcg
QEAKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBlLmgi
CiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1
ZGUgIlRleHRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUaW1lSW5wdXRUeXBlLmgiCiAjaW5jbHVk
ZSAiVVJMSW5wdXRUeXBlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHAKaW5kZXggYWQxZDRlMzQ4MDA2OWY3YWEwZDE3NDFkMTFiMzhkMDc0ODQ0YzI0ZC4uMjY2
ODgxMzkxOGRmNmUxZGU3ZDU5Mzg3MzY4YTEyOGMzYjE5MmQ4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuY3BwCmluZGV4
IGI1NGU5YjJlN2Q5ZDEyOGIxY2M5NTMzNjE0ZDhmMDRhNzc1Y2U2ODguLmY2ZjAyNzZkMThkODY4
MDQwZGJmYjYyNTg4MmI3MDhjMzM2NThlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRU
eXBlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0
b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKaW5kZXggZmU1ZWJmZWFmZjY4Y2Q3MTU3YTU1NTFmNDUxZjU5MTVlMTcwMTUwZi4uNWIx
ODk0ZTkxMmU4NGZjNzk3M2U4OTQxZWZmNDg0MDZlNDg1YmIzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKIAogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUg
IlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJ
dGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKICNp
ZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
dHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Ry
aW5nVHJ1bmNhdG9yLmNwcAppbmRleCBjZWRlZDczMGY0NTdmYWRmMGU4MjIwNDgyZTJkZGU3Mjg3
MmY4ZDQ2Li5hZmE4ZTEyZDgxYmQ4NWJkOTYzZjhkY2IyYzhiZWM1NDc5NzRjMDFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKIAogI2lu
Y2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgIlRleHRSdW4u
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5k
ZXggYjNkZGQ4YzNkZjgwNzhkZGNjNzdhYjYzZDQ0MjE4YTYyNmJjYTQxOC4uNmQ4OGM4OGRkNGFh
NmQyZDBhYzM0ZDMxNGFmNmRmMmJhZTI3ZDU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTQwLDYgKzQwLDIwIEBACiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIENHQ29sb3JS
ZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImKTsKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4KK1JldGFpblB0cjxDR0NvbG9yUmVmPiBUaW55TFJVQ2FjaGVQb2xpY3k8V2ViQ29y
ZTo6Q29sb3IsIFJldGFpblB0cjxDR0NvbG9yUmVmPj46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gYWRvcHRDRihXZWJDb3JlOjps
ZWFrQ0dDb2xvcihjb2xvcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIENHQ29sb3JSZWYgY3JlYXRl
Q0dDb2xvcldpdGhEZXZpY2VSR0JBKENHQ29sb3JSZWYgc291cmNlQ29sb3IpCkBAIC0xMDgsMTIg
KzEyMiw2IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKICAgICByZXR1cm4gQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25l
bnRzKTsKIH0KIAotdGVtcGxhdGU8PgotUmV0YWluUHRyPENHQ29sb3JSZWY+IFRpbnlMUlVDYWNo
ZVBvbGljeTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+Pjo6Y3JlYXRlVmFsdWVGb3JLZXko
Y29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIHJldHVybiBhZG9wdENGKGxlYWtDR0NvbG9yKGNv
bG9yKSk7Ci19Ci0KIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiB7CiAgICAgc3dpdGNoIChjb2xvci5yZ2IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cAppbmRleCBmZjBiZjgxOTc1MDgxN2NiZTJjN2JmY2JlYjgxZmI0MWE5MWE3YTgzLi4xNzc3OTll
YWFjN2MxZjdiMjI2ZDhlZDBlNGFjZDA3MDA0Yjg5ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCi0jaW5jbHVkZSAi
VGV4dEJyZWFrSXRlcmF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oPgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNWNmNTBhNWQ2NTg2NWEzNDFiZmVjZjM3Y2I1Y2JkYzk2NmYzODE4Ny4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCi0jZGVmaW5lIExp
bmVCcmVha0l0ZXJhdG9yUG9vbElDVV9oCi0KLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5o
IgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKLSNpbmNsdWRlIDx1
bmljb2RlL3VicmsuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBMaW5lQnJlYWtJdGVyYXRvclBvb2wgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKExpbmVCcmVha0l0ZXJhdG9yUG9vbCk7Ci1wdWJsaWM6Ci0gICAgTGluZUJyZWFrSXRlcmF0
b3JQb29sKCkgeyB9Ci0KLSAgICBzdGF0aWMgTGluZUJyZWFrSXRlcmF0b3JQb29sJiBzaGFyZWRQ
b29sKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBXVEY6OlRocmVhZFNwZWNpZmljPExpbmVCcmVh
a0l0ZXJhdG9yUG9vbD4qIHBvb2wgPSBuZXcgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJ
dGVyYXRvclBvb2w+OwotICAgICAgICByZXR1cm4gKipwb29sOwotICAgIH0KLQotICAgIHN0YXRp
YyBTdHJpbmcgbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2RlKQotICAgIHsKLSAgICAgICAgU3RyaW5n
QnVpbGRlciBsb2NhbGVXaXRoS2V5d29yZDsKLSAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQuYXBw
ZW5kKGxvY2FsZSk7Ci0gICAgICAgIGxvY2FsZVdpdGhLZXl3b3JkLmFwcGVuZExpdGVyYWwoIkBi
cmVhaz0iKTsKLSAgICAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgICAgIGNhc2UgTGluZUJyZWFr
SXRlcmF0b3JNb2RlVUFYMTQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0
TG9vc2U6Ci0gICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRlcmFsKCJsb29z
ZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTROb3JtYWw6Ci0gICAgICAgICAgICBsb2NhbGVXaXRoS2V5d29yZC5hcHBlbmRMaXRl
cmFsKCJub3JtYWwiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIExpbmVCcmVh
a0l0ZXJhdG9yTW9kZVVBWDE0U3RyaWN0OgotICAgICAgICAgICAgbG9jYWxlV2l0aEtleXdvcmQu
YXBwZW5kTGl0ZXJhbCgic3RyaWN0Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gbG9jYWxlV2l0aEtleXdvcmQudG9TdHJpbmcoKTsKLSAgICB9Ci0KLSAg
ICBUZXh0QnJlYWtJdGVyYXRvciogdGFrZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCi0gICAgewotICAgICAgICBBdG9t
aWNTdHJpbmcgbG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkOwotICAgICAgICBpZiAobW9k
ZSA9PSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgICAgIGxvY2FsZVdpdGhP
cHRpb25hbEJyZWFrS2V5d29yZCA9IGxvY2FsZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bG9jYWxlV2l0aE9wdGlvbmFsQnJlYWtLZXl3b3JkID0gbWFrZUxvY2FsZVdpdGhCcmVha0tleXdv
cmQobG9jYWxlLCBtb2RlKTsKLQotICAgICAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3Ig
PSAwOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9vbC5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKG1fcG9vbFtpXS5maXJzdCA9PSBsb2NhbGVXaXRoT3B0aW9uYWxC
cmVha0tleXdvcmQpIHsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciA9IG1fcG9vbFtpXS5zZWNv
bmQ7Ci0gICAgICAgICAgICAgICAgbV9wb29sLnJlbW92ZShpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaXRlcmF0b3Ip
IHsKLSAgICAgICAgICAgIGl0ZXJhdG9yID0gb3BlbkxpbmVCcmVha0l0ZXJhdG9yKGxvY2FsZVdp
dGhPcHRpb25hbEJyZWFrS2V5d29yZCwgbW9kZSwgaXNDSkspOwotICAgICAgICAgICAgaWYgKCFp
dGVyYXRvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAg
IEFTU0VSVCghbV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3IpKTsKLSAgICAgICAg
bV92ZW5kZWRJdGVyYXRvcnMuc2V0KGl0ZXJhdG9yLCBsb2NhbGVXaXRoT3B0aW9uYWxCcmVha0tl
eXdvcmQpOwotICAgICAgICByZXR1cm4gaXRlcmF0b3I7Ci0gICAgfQotCi0gICAgdm9pZCBwdXQo
VGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotICAgIHsKLSAgICAgICAgQVNTRVJUX0FSRyhp
dGVyYXRvciwgbV92ZW5kZWRJdGVyYXRvcnMuY29udGFpbnMoaXRlcmF0b3IpKTsKLQotICAgICAg
ICBpZiAobV9wb29sLnNpemUoKSA9PSBjYXBhY2l0eSkgewotICAgICAgICAgICAgY2xvc2VMaW5l
QnJlYWtJdGVyYXRvcihtX3Bvb2xbMF0uc2Vjb25kKTsKLSAgICAgICAgICAgIG1fcG9vbC5yZW1v
dmUoMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX3Bvb2wuYXBwZW5kKEVudHJ5KG1fdmVuZGVk
SXRlcmF0b3JzLnRha2UoaXRlcmF0b3IpLCBpdGVyYXRvcikpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNhcGFjaXR5ID0gNDsKLQotICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPEF0b21pY1N0cmluZywgVGV4dEJyZWFrSXRlcmF0b3IqPiBFbnRyeTsKLSAgICB0eXBl
ZGVmIFZlY3RvcjxFbnRyeSwgY2FwYWNpdHk+IFBvb2w7Ci0gICAgUG9vbCBtX3Bvb2w7Ci0gICAg
SGFzaE1hcDxUZXh0QnJlYWtJdGVyYXRvciosIEF0b21pY1N0cmluZz4gbV92ZW5kZWRJdGVyYXRv
cnM7Ci0KLSAgICBmcmllbmQgV1RGOjpUaHJlYWRTcGVjaWZpYzxMaW5lQnJlYWtJdGVyYXRvclBv
b2w+OjpvcGVyYXRvciBMaW5lQnJlYWtJdGVyYXRvclBvb2wqKCk7Ci19OwotCi19Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Qm91bmRhcmll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApp
bmRleCBkZmNmOWEzNDYyZDViMWIyODRkMTk1OThhZmUwMzJiM2U0Y2RjZTFiLi40N2QyNDQ3NWFj
MDk4OTRlMDM4ODUxYTQ4YmI5YzA1ZWRkZWYzN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAKLSNpbmNsdWRlICJU
ZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYTY2Y2UwYjdlZDE0N2Fl
N2M2YjNkN2I5NzA5ODIzZTdmZTMyNWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MjkgKzAsMCBAQAotLyoKLSAqIChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgotCi0jaW5jbHVkZSAiTGlu
ZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlckxhdGluMS5o
IgotI2luY2x1ZGUgIlVUZXh0UHJvdmlkZXJVVEYxNi5oIgotI2luY2x1ZGUgPG11dGV4PgotI2lu
Y2x1ZGUgPHd0Zi9BdG9taWNzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgot
Ci0vLyBGSVhNRTogVGhpcyBuZWVkcyBhIGJldHRlciBuYW1lCi0jZGVmaW5lIEFERElUSU9OQUxf
RU1PSklfU1VQUE9SVCAoUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkpCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gSXRlcmF0b3IgaW5pdGlhbGl6YXRpb24KLQotc3RhdGljIFRleHRCcmVha0l0ZXJh
dG9yKiBpbml0aWFsaXplSXRlcmF0b3IoVUJyZWFrSXRlcmF0b3JUeXBlIHR5cGUsIGNvbnN0IGNo
YXIqIGxvY2FsZSA9IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpKQotewotICAgIFVFcnJvckNv
ZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBUZXh0QnJlYWtJdGVyYXRvciogaXRl
cmF0b3IgPSByZWludGVycHJldF9jYXN0PFRleHRCcmVha0l0ZXJhdG9yKj4odWJya19vcGVuKHR5
cGUsIGxvY2FsZSwgMCwgMCwgJm9wZW5TdGF0dXMpKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KFVfU1VDQ0VTUyhvcGVuU3RhdHVzKSwgIklDVSBjb3VsZCBub3Qgb3BlbiBhIGJyZWFrIGl0ZXJh
dG9yOiAlcyAoJWQpIiwgdV9lcnJvck5hbWUob3BlblN0YXR1cyksIG9wZW5TdGF0dXMpOwotICAg
IHJldHVybiBpdGVyYXRvcjsKLX0KLQotI2lmICFQTEFURk9STShJT1MpCi0KLXN0YXRpYyBUZXh0
QnJlYWtJdGVyYXRvciogaW5pdGlhbGl6ZUl0ZXJhdG9yV2l0aFJ1bGVzKGNvbnN0IGNoYXIqIGJy
ZWFrUnVsZXMpCi17Ci0gICAgVVBhcnNlRXJyb3IgcGFyc2VTdGF0dXM7Ci0gICAgVUVycm9yQ29k
ZSBvcGVuU3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxl
bihicmVha1J1bGVzKTsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1Zp
ZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGJyZWFrUnVsZXMpLCBsZW5ndGgpLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8VGV4dEJyZWFrSXRlcmF0b3IqPih1YnJrX29wZW5SdWxlcyh1cGNv
bnZlcnRlZENoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgJnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1
cykpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVV9TVUNDRVNTKG9wZW5TdGF0dXMpLCAiSUNV
IGNvdWxkIG5vdCBvcGVuIGEgYnJlYWsgaXRlcmF0b3I6ICVzICglZCkiLCB1X2Vycm9yTmFtZShv
cGVuU3RhdHVzKSwgb3BlblN0YXR1cyk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yOwotfQotCi0jZW5k
aWYKLQotCi0vLyBJdGVyYXRvciB0ZXh0IHNldHRpbmcKLQotc3RhdGljIFRleHRCcmVha0l0ZXJh
dG9yKiBzZXRUZXh0Rm9ySXRlcmF0b3IoVGV4dEJyZWFrSXRlcmF0b3ImIGl0ZXJhdG9yLCBTdHJp
bmdWaWV3IHN0cmluZykKLXsKLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgIFVU
ZXh0V2l0aEJ1ZmZlciB0ZXh0TG9jYWw7Ci0gICAgICAgIHRleHRMb2NhbC50ZXh0ID0gVVRFWFRf
SU5JVElBTElaRVI7Ci0gICAgICAgIHRleHRMb2NhbC50ZXh0LmV4dHJhU2l6ZSA9IHNpemVvZih0
ZXh0TG9jYWwuYnVmZmVyKTsKLSAgICAgICAgdGV4dExvY2FsLnRleHQucEV4dHJhID0gdGV4dExv
Y2FsLmJ1ZmZlcjsKLQotICAgICAgICBVRXJyb3JDb2RlIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgICAgIFVUZXh0KiB0ZXh0ID0gb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoJnRleHRM
b2NhbCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwgJm9wZW5TdGF0dXMp
OwotICAgICAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0df
RVJST1IoInVUZXh0T3BlbkxhdGluMSBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCBvcGVuU3RhdHVz
KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgVUVy
cm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3NldFVU
ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPigmaXRlcmF0b3IpLCB0ZXh0LCAm
c2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpIHsK
LSAgICAgICAgICAgIExPR19FUlJPUigidWJya19zZXRVVGV4dCBmYWlsZWQgd2l0aCBzdGF0dXMg
JWQiLCBzZXRUZXh0U3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdXRleHRfY2xvc2UodGV4dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
VUVycm9yQ29kZSBzZXRUZXh0U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1YnJrX3Nl
dFRleHQocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KCZpdGVyYXRvciksIHN0cmlu
Zy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCAmc2V0VGV4dFN0YXR1cyk7Ci0gICAg
ICAgIGlmIChVX0ZBSUxVUkUoc2V0VGV4dFN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gJml0ZXJhdG9yOwotfQotCi1zdGF0aWMgVGV4dEJy
ZWFrSXRlcmF0b3IqIHNldENvbnRleHRBd2FyZVRleHRGb3JJdGVyYXRvcihUZXh0QnJlYWtJdGVy
YXRvciYgaXRlcmF0b3IsIFN0cmluZ1ZpZXcgc3RyaW5nLCBjb25zdCBVQ2hhciogcHJpb3JDb250
ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAgaWYgKHN0cmluZy5pczhC
aXQoKSkgewotICAgICAgICBVVGV4dFdpdGhCdWZmZXIgdGV4dExvY2FsOwotICAgICAgICB0ZXh0
TG9jYWwudGV4dCA9IFVURVhUX0lOSVRJQUxJWkVSOwotICAgICAgICB0ZXh0TG9jYWwudGV4dC5l
eHRyYVNpemUgPSBzaXplb2YodGV4dExvY2FsLmJ1ZmZlcik7Ci0gICAgICAgIHRleHRMb2NhbC50
ZXh0LnBFeHRyYSA9IHRleHRMb2NhbC5idWZmZXI7Ci0KLSAgICAgICAgVUVycm9yQ29kZSBvcGVu
U3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBVVGV4dCogdGV4dCA9IG9wZW5MYXRpbjFD
b250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKCZ0ZXh0TG9jYWwsIHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCksIHByaW9yQ29udGV4dCwgcHJpb3JDb250ZXh0TGVuZ3RoLCAmb3Bl
blN0YXR1cyk7Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUob3BlblN0YXR1cykpIHsKLSAgICAgICAg
ICAgIExPR19FUlJPUigib3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIgZmFpbGVk
IHdpdGggc3RhdHVzICVkIiwgb3BlblN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgfQotCi0gICAgICAgIFVFcnJvckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKLSAgICAgICAgdWJya19zZXRVVGV4dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNldFRleHRTdGF0dXMpOwotICAgICAgICBpZiAo
VV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoInVicmtf
c2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCi0gICAgICAgIHV0ZXh0X2Nsb3NlKHRl
eHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVUZXh0IHRleHRMb2NhbCA9IFVURVhUX0lOSVRJ
QUxJWkVSOwotCi0gICAgICAgIFVFcnJvckNvZGUgb3BlblN0YXR1cyA9IFVfWkVST19FUlJPUjsK
LSAgICAgICAgVVRleHQqIHRleHQgPSBvcGVuVVRGMTZDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVy
KCZ0ZXh0TG9jYWwsIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBwcmlv
ckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCwgJm9wZW5TdGF0dXMpOwotICAgICAgICBpZiAo
VV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIm9wZW5VVEYx
NkNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgb3BlblN0
YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIFVFcnJv
ckNvZGUgc2V0VGV4dFN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWJya19zZXRVVGV4
dChyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oJml0ZXJhdG9yKSwgdGV4dCwgJnNl
dFRleHRTdGF0dXMpOwotICAgICAgICBpZiAoVV9GQUlMVVJFKHNldFRleHRTdGF0dXMpKSB7Ci0g
ICAgICAgICAgICBMT0dfRVJST1IoInVicmtfc2V0VVRleHQgZmFpbGVkIHdpdGggc3RhdHVzICVk
Iiwgc2V0VGV4dFN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
fQotCi0gICAgICAgIHV0ZXh0X2Nsb3NlKHRleHQpOwotICAgIH0KLQotICAgIHJldHVybiAmaXRl
cmF0b3I7Ci19Ci0KLQotLy8gU3RhdGljIGl0ZXJhdG9ycwotCi1UZXh0QnJlYWtJdGVyYXRvciog
d29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgc3RhdGljIFRleHRC
cmVha0l0ZXJhdG9yKiBzdGF0aWNXb3JkQnJlYWtJdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRv
cihVQlJLX1dPUkQpOwotICAgIGlmICghc3RhdGljV29yZEJyZWFrSXRlcmF0b3IpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHNldFRleHRGb3JJdGVyYXRvcigqc3RhdGlj
V29yZEJyZWFrSXRlcmF0b3IsIHN0cmluZyk7Ci19Ci0KLVRleHRCcmVha0l0ZXJhdG9yKiBzZW50
ZW5jZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgc3RhdGljIFRleHRC
cmVha0l0ZXJhdG9yKiBzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0b3IgPSBpbml0aWFsaXplSXRl
cmF0b3IoVUJSS19TRU5URU5DRSk7Ci0gICAgaWYgKCFzdGF0aWNTZW50ZW5jZUJyZWFrSXRlcmF0
b3IpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIHNldFRleHRGb3JJdGVy
YXRvcigqc3RhdGljU2VudGVuY2VCcmVha0l0ZXJhdG9yLCBzdHJpbmcpOwotfQotCi1UZXh0QnJl
YWtJdGVyYXRvciogY3Vyc29yTW92ZW1lbnRJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKLXsK
LSNpZiAhUExBVEZPUk0oSU9TKQotICAgIC8vIFRoaXMgcnVsZSBzZXQgaXMgYmFzZWQgb24gY2hh
cmFjdGVyLWJyZWFrIGl0ZXJhdG9yIHJ1bGVzIG9mIElDVSA0LjAKLSAgICAvLyA8aHR0cDovL3Nv
dXJjZS5pY3UtcHJvamVjdC5vcmcvcmVwb3MvaWN1L2ljdS90YWdzL3JlbGVhc2UtNC0wL3NvdXJj
ZS9kYXRhL2Jya2l0ci9jaGFyLnR4dD4uCi0gICAgLy8gVGhlIG1ham9yIGRpZmZlcmVuY2VzIGZy
b20gdGhlIG9yaWdpbmFsIG9uZXMgYXJlIGxpc3RlZCBiZWxvdzoKLSAgICAvLyAqIFJlcGxhY2Vk
ICdbXHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFNwYWNpbmdNYXJrfV0nIHdpdGggJ1tccHtH
ZW5lcmFsX0NhdGVnb3J5ID0gU3BhY2luZyBNYXJrfSAtICRFeHRlbmRdJyBmb3IgSUNVIDMuOCBv
ciBlYXJsaWVyOwotICAgIC8vICogUmVtb3ZlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3Ig
ZnJvbSBtb3ZpbmcgYWZ0ZXIgcHJlcGVuZCBjaGFyYWN0ZXJzIChCdWcgMjQzNDIpOwotICAgIC8v
ICogQWRkZWQgcnVsZXMgdGhhdCBwcmV2ZW50IGEgY3Vyc29yIGZyb20gbW92aW5nIGFmdGVyIHZp
cmFtYSBzaWducyBvZiBJbmRpYyBsYW5ndWFnZXMgZXhjZXB0IFRhbWlsIChCdWcgMTU3OTApLCBh
bmQ7Ci0gICAgLy8gKiBBZGRlZCBydWxlcyB0aGF0IHByZXZlbnQgYSBjdXJzb3IgZnJvbSBtb3Zp
bmcgYmVmb3JlIEphcGFuZXNlIGhhbGYtd2lkdGgga2F0YWthcmEgdm9pY2VkIG1hcmtzLgotICAg
IC8vICogQWRkZWQgcnVsZXMgZm9yIHJlZ2lvbmFsIGluZGljYXRvciBzeW1ib2xzLgotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBrUnVsZXMgPQotICAgICAgICAiJENSICAgICAgPSBbXFxwe0dyYXBo
ZW1lX0NsdXN0ZXJfQnJlYWsgPSBDUn1dOyIKLSAgICAgICAgIiRMRiAgICAgID0gW1xccHtHcmFw
aGVtZV9DbHVzdGVyX0JyZWFrID0gTEZ9XTsiCi0gICAgICAgICIkQ29udHJvbCA9IFtcXHB7R3Jh
cGhlbWVfQ2x1c3Rlcl9CcmVhayA9IENvbnRyb2x9XTsiCi0gICAgICAgICIkVm9pY2VNYXJrcyA9
IFtcXHVGRjlFXFx1RkY5Rl07IiAgLy8gSmFwYW5lc2UgaGFsZi13aWR0aCBrYXRha2FuYSB2b2lj
ZWQgbWFya3MKLSAgICAgICAgIiRFeHRlbmQgID0gW1xccHtHcmFwaGVtZV9DbHVzdGVyX0JyZWFr
ID0gRXh0ZW5kfSAkVm9pY2VNYXJrcyAtIFtcXHUwRTMwIFxcdTBFMzIgXFx1MEU0NSBcXHUwRUIw
IFxcdTBFQjJdXTsiCi0gICAgICAgICIkU3BhY2luZ01hcmsgPSBbW1xccHtHZW5lcmFsX0NhdGVn
b3J5ID0gU3BhY2luZyBNYXJrfV0gLSAkRXh0ZW5kXTsiCi0gICAgICAgICIkTCAgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IEx9XTsiCi0gICAgICAgICIkViAgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFZ9XTsiCi0gICAgICAgICIkVCAgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IFR9XTsiCi0gICAgICAgICIkTFYgICAgICA9IFtc
XHB7R3JhcGhlbWVfQ2x1c3Rlcl9CcmVhayA9IExWfV07IgotICAgICAgICAiJExWVCAgICAgPSBb
XFxwe0dyYXBoZW1lX0NsdXN0ZXJfQnJlYWsgPSBMVlR9XTsiCi0gICAgICAgICIkSGluMCAgICA9
IFtcXHUwOTA1LVxcdTA5MzldOyIgICAgLy8gRGV2YW5hZ2FyaSBMZXR0ZXIgQSwuLi4sSGEKLSAg
ICAgICAgIiRIaW5WICAgID0gXFx1MDk0RDsiICAgICAgICAgICAgICAvLyBEZXZhbmFnYXJpIFNp
Z24gVmlyYW1hCi0gICAgICAgICIkSGluMSAgICA9IFtcXHUwOTE1LVxcdTA5MzldOyIgICAgLy8g
RGV2YW5hZ2FyaSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkQmVuMCAgICA9IFtcXHUwOTg1
LVxcdTA5QjldOyIgICAgLy8gQmVuZ2FsaSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRCZW5W
ICAgID0gXFx1MDlDRDsiICAgICAgICAgICAgICAvLyBCZW5nYWxpIFNpZ24gVmlyYW1hCi0gICAg
ICAgICIkQmVuMSAgICA9IFtcXHUwOTk1LVxcdTA5QjldOyIgICAgLy8gQmVuZ2FsaSBMZXR0ZXIg
S2EsLi4uLEhhCi0gICAgICAgICIkUGFuMCAgICA9IFtcXHUwQTA1LVxcdTBBMzldOyIgICAgLy8g
R3VybXVraGkgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIkUGFuViAgICA9IFxcdTBBNEQ7IiAg
ICAgICAgICAgICAgLy8gR3VybXVraGkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRQYW4xICAgID0g
W1xcdTBBMTUtXFx1MEEzOV07IiAgICAvLyBHdXJtdWtoaSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAg
ICAgICIkR3VqMCAgICA9IFtcXHUwQTg1LVxcdTBBQjldOyIgICAgLy8gR3VqYXJhdGkgTGV0dGVy
IEEsLi4uLEhhCi0gICAgICAgICIkR3VqViAgICA9IFxcdTBBQ0Q7IiAgICAgICAgICAgICAgLy8g
R3VqYXJhdGkgU2lnbiBWaXJhbWEKLSAgICAgICAgIiRHdWoxICAgID0gW1xcdTBBOTUtXFx1MEFC
OV07IiAgICAvLyBHdWphcmF0aSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkT3JpMCAgICA9
IFtcXHUwQjA1LVxcdTBCMzldOyIgICAgLy8gT3JpeWEgTGV0dGVyIEEsLi4uLEhhCi0gICAgICAg
ICIkT3JpViAgICA9IFxcdTBCNEQ7IiAgICAgICAgICAgICAgLy8gT3JpeWEgU2lnbiBWaXJhbWEK
LSAgICAgICAgIiRPcmkxICAgID0gW1xcdTBCMTUtXFx1MEIzOV07IiAgICAvLyBPcml5YSBMZXR0
ZXIgS2EsLi4uLEhhCi0gICAgICAgICIkVGVsMCAgICA9IFtcXHUwQzA1LVxcdTBDMzldOyIgICAg
Ly8gVGVsdWd1IExldHRlciBBLC4uLixIYQotICAgICAgICAiJFRlbFYgICAgPSBcXHUwQzREOyIg
ICAgICAgICAgICAgIC8vIFRlbHVndSBTaWduIFZpcmFtYQotICAgICAgICAiJFRlbDEgICAgPSBb
XFx1MEMxNC1cXHUwQzM5XTsiICAgIC8vIFRlbHVndSBMZXR0ZXIgS2EsLi4uLEhhCi0gICAgICAg
ICIkS2FuMCAgICA9IFtcXHUwQzg1LVxcdTBDQjldOyIgICAgLy8gS2FubmFkYSBMZXR0ZXIgQSwu
Li4sSGEKLSAgICAgICAgIiRLYW5WICAgID0gXFx1MENDRDsiICAgICAgICAgICAgICAvLyBLYW5u
YWRhIFNpZ24gVmlyYW1hCi0gICAgICAgICIkS2FuMSAgICA9IFtcXHUwQzk1LVxcdTBDQjldOyIg
ICAgLy8gS2FubmFkYSBMZXR0ZXIgQSwuLi4sSGEKLSAgICAgICAgIiRNYWwwICAgID0gW1xcdTBE
MDUtXFx1MEQzOV07IiAgICAvLyBNYWxheWFsYW0gTGV0dGVyIEEsLi4uLEhhCi0gICAgICAgICIk
TWFsViAgICA9IFxcdTBENEQ7IiAgICAgICAgICAgICAgLy8gTWFsYXlhbGFtIFNpZ24gVmlyYW1h
Ci0gICAgICAgICIkTWFsMSAgICA9IFtcXHUwRDE1LVxcdTBEMzldOyIgICAgLy8gTWFsYXlhbGFt
IExldHRlciBBLC4uLixIYQotICAgICAgICAiJFJJICAgICAgPSBbXFxVMDAwMUYxRTYtXFxVMDAw
MUYxRkZdOyIgLy8gRW1vamkgcmVnaW9uYWwgaW5kaWNhdG9ycwotICAgICAgICAiJFpXSiAgICAg
PSBcXHUyMDBEOyIgICAgICAgICAgICAgICAvLyBaZXJvIHdpZHRoIGpvaW5lcgotICAgICAgICAi
JEVtb2ppVmFyID0gW1xcdUZFMEZdOyIgICAgICAgICAgICAvLyBFbW9qaS1zdHlsZSB2YXJpYXRp
b24gc2VsZWN0b3IKLSNpZiBBRERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAgICAgIiRFbW9q
aUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ0MSBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBc
XFUwMDAxRjQ4QiBcXFUwMDAxRjVFOF07IiAvLyBFbW9qaSB0aGF0IHBhcnRpY2lwYXRlIGluIFpX
SiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNkY5IFxc
dTI3MEEtXFx1MjcwRCBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBcXFUwMDAx
RjNDQSBcXFUwMDAxRjNDQiBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0Ni1cXFUw
MDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAxRjQ3OCBc
XFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUwMDAxRjQ4
NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU3NSBcXFUwMDAxRjU5MCBcXFUwMDAxRjU5NSBcXFUwMDAx
RjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBcXFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUw
MDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZCNiBcXFUwMDAxRjZDMCBcXFUwMDAxRjkxOF0g
OyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVycwotI2Vsc2UKLSAgICAg
ICAgIiRFbW9qaUZvclNlcXMgPSBbXFx1Mjc2NCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUw
MDAxRjQ4Ql07IiAvLyBFbW9qaSB0aGF0IHBhcnRpY2lwYXRlIGluIFpXSiBzZXF1ZW5jZXMKLSAg
ICAgICAgIiRFbW9qaUZvck1vZHMgPSBbXFx1MjYxRCBcXHUyNzBBLVxcdTI3MEMgXFxVMDAwMUYz
ODUgXFxVMDAwMUYzQzMtXFxVMDAwMUYzQzQgXFxVMDAwMUYzQzcgXFxVMDAwMUYzQ0EgXFxVMDAw
MUY0NDItXFxVMDAwMUY0NDMgXFxVMDAwMUY0NDYtXFxVMDAwMUY0NTAgXFxVMDAwMUY0NjYtXFxV
MDAwMUY0NjkgXFxVMDAwMUY0NkUtXFxVMDAwMUY0NzggXFxVMDAwMUY0N0MgXFxVMDAwMUY0ODEt
XFxVMDAwMUY0ODMgXFxVMDAwMUY0ODUtXFxVMDAwMUY0ODcgXFxVMDAwMUY0QUEgXFxVMDAwMUY1
OTYgXFxVMDAwMUY2NDUtXFxVMDAwMUY2NDcgXFxVMDAwMUY2NEItXFxVMDAwMUY2NEYgXFxVMDAw
MUY2QTMgXFxVMDAwMUY2QjQtXFxVMDAwMUY2QjYgXFxVMDAwMUY2QzBdIDsiIC8vIEVtb2ppIHRo
YXQgdGFrZSBGaXR6cGF0cmljayBtb2RpZmllcnMKLSNlbmRpZgotICAgICAgICAiJEVtb2ppTW9k
cyA9IFtcXFUwMDAxRjNGQi1cXFUwMDAxRjNGRl07IiAvLyBGaXR6cGF0cmljayBtb2RpZmllcnMK
LSAgICAgICAgIiEhY2hhaW47IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICAg
ICAiISFSSU5vQ2hhaW47IgotI2VuZGlmCi0gICAgICAgICIhIWZvcndhcmQ7IgotICAgICAgICAi
JENSICRMRjsiCi0gICAgICAgICIkTCAoJEwgfCAkViB8ICRMViB8ICRMVlQpOyIKLSAgICAgICAg
IigkTFYgfCAkVikgKCRWIHwgJFQpOyIKLSAgICAgICAgIigkTFZUIHwgJFQpICRUOyIKLSNpZiBB
RERJVElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAgICAgIiRSSSAkUkkgJEV4dGVuZCogLyAkUkk7
IgotICAgICAgICAiJFJJICRSSSAkRXh0ZW5kKjsiCi0gICAgICAgICJbXiRDb250cm9sICRDUiAk
TEZdICRFeHRlbmQ7IgotICAgICAgICAiW14kQ29udHJvbCAkQ1IgJExGXSAkU3BhY2luZ01hcms7
IgotI2Vsc2UKLSAgICAgICAgIlteJENvbnRyb2wgJENSICRMRl0gJEV4dGVuZDsiCi0gICAgICAg
ICJbXiRDb250cm9sICRDUiAkTEZdICRTcGFjaW5nTWFyazsiCi0gICAgICAgICIkUkkgJFJJIC8g
JFJJOyIKLSAgICAgICAgIiRSSSAkUkk7IgotI2VuZGlmCi0gICAgICAgICIkSGluMCAkSGluViAk
SGluMTsiICAgICAgICAgICAgICAgLy8gRGV2YW5hZ2FyaSBWaXJhbWEgKGZvcndhcmQpCi0gICAg
ICAgICIkQmVuMCAkQmVuViAkQmVuMTsiICAgICAgICAgICAgICAgLy8gQmVuZ2FsaSBWaXJhbWEg
KGZvcndhcmQpCi0gICAgICAgICIkUGFuMCAkUGFuViAkUGFuMTsiICAgICAgICAgICAgICAgLy8g
R3VybXVraGkgVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJEd1ajAgJEd1alYgJEd1ajE7IiAg
ICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRPcmkw
ICRPcmlWICRPcmkxOyIgICAgICAgICAgICAgICAvLyBPcml5YSBWaXJhbWEgKGZvcndhcmQpCi0g
ICAgICAgICIkVGVsMCAkVGVsViAkVGVsMTsiICAgICAgICAgICAgICAgLy8gVGVsdWd1IFZpcmFt
YSAoZm9yd2FyZCkKLSAgICAgICAgIiRLYW4wICRLYW5WICRLYW4xOyIgICAgICAgICAgICAgICAv
LyBLYW5uYWRhIFZpcmFtYSAoZm9yd2FyZCkKLSAgICAgICAgIiRNYWwwICRNYWxWICRNYWwxOyIg
ICAgICAgICAgICAgICAvLyBNYWxheWFsYW0gVmlyYW1hIChmb3J3YXJkKQotICAgICAgICAiJFpX
SiAkRW1vamlGb3JTZXFzOyIgICAgICAgICAgICAgIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpX
SiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaUZvck1vZHMgJEVtb2ppVmFyPyAkRW1vamlNb2Rz
OyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2VlbiByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2
YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBGaXR6cGF0cmljayBtb2RpZmllcgotICAgICAgICAiISFy
ZXZlcnNlOyIKLSAgICAgICAgIiRMRiAkQ1I7IgotICAgICAgICAiKCRMIHwgJFYgfCAkTFYgfCAk
TFZUKSAkTDsiCi0gICAgICAgICIoJFYgfCAkVCkgKCRMViB8ICRWKTsiCi0gICAgICAgICIkVCAo
JExWVCB8ICRUKTsiCi0jaWYgQURESVRJT05BTF9FTU9KSV9TVVBQT1JUCi0gICAgICAgICIkRXh0
ZW5kKiAkUkkgJFJJIC8gJEV4dGVuZCogJFJJICRSSTsiCi0gICAgICAgICIkRXh0ZW5kKiAkUkkg
JFJJOyIKLSAgICAgICAgIiRFeHRlbmQgICAgICBbXiRDb250cm9sICRDUiAkTEZdOyIKLSAgICAg
ICAgIiRTcGFjaW5nTWFyayBbXiRDb250cm9sICRDUiAkTEZdOyIKLSNlbHNlCi0gICAgICAgICIk
RXh0ZW5kICAgICAgW14kQ29udHJvbCAkQ1IgJExGXTsiCi0gICAgICAgICIkU3BhY2luZ01hcmsg
W14kQ29udHJvbCAkQ1IgJExGXTsiCi0gICAgICAgICIkUkkgJFJJIC8gJFJJICRSSTsiCi0gICAg
ICAgICIkUkkgJFJJOyIKLSNlbmRpZgotICAgICAgICAiJEhpbjEgJEhpblYgJEhpbjA7IiAgICAg
ICAgICAgICAgIC8vIERldmFuYWdhcmkgVmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRCZW4x
ICRCZW5WICRCZW4wOyIgICAgICAgICAgICAgICAvLyBCZW5nYWxpIFZpcmFtYSAoYmFja3dhcmQp
Ci0gICAgICAgICIkUGFuMSAkUGFuViAkUGFuMDsiICAgICAgICAgICAgICAgLy8gR3VybXVraGkg
VmlyYW1hIChiYWNrd2FyZCkKLSAgICAgICAgIiRHdWoxICRHdWpWICRHdWowOyIgICAgICAgICAg
ICAgICAvLyBHdWphcmF0aSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJE9yaTEgJE9yaVYg
JE9yaTA7IiAgICAgICAgICAgICAgIC8vIEd1amFyYXRpIFZpcmFtYSAoYmFja3dhcmQpCi0gICAg
ICAgICIkVGVsMSAkVGVsViAkVGVsMDsiICAgICAgICAgICAgICAgLy8gVGVsdWd1IFZpcmFtYSAo
YmFja3dhcmQpCi0gICAgICAgICIkS2FuMSAkS2FuViAkS2FuMDsiICAgICAgICAgICAgICAgLy8g
S2FubmFkYSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJE1hbDEgJE1hbFYgJE1hbDA7IiAg
ICAgICAgICAgICAgIC8vIE1hbGF5YWxhbSBWaXJhbWEgKGJhY2t3YXJkKQotICAgICAgICAiJEVt
b2ppRm9yU2VxcyAkWldKOyIgICAgICAgICAgICAgIC8vIERvbid0IGJyZWFrIGluIGVtb2ppIFpX
SiBzZXF1ZW5jZXMKLSAgICAgICAgIiRFbW9qaU1vZHMgJEVtb2ppVmFyPyAkRW1vamlGb3JNb2Rz
OyIgLy8gRG9uJ3QgYnJlYWsgYmV0d2VlbiByZWxldmFudCBlbW9qaSAocG9zc2libHkgd2l0aCB2
YXJpYXRpb24gc2VsZWN0b3IpIGFuZCBGaXR6cGF0cmljayBtb2RpZmllcgotI2lmIEFERElUSU9O
QUxfRU1PSklfU1VQUE9SVAotICAgICAgICAiISFzYWZlX3JldmVyc2U7IgotICAgICAgICAiJFJJ
ICRSSSs7IgotICAgICAgICAiWyRFbW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsi
Ci0gICAgICAgICIhIXNhZmVfZm9yd2FyZDsiCi0gICAgICAgICIkUkkgJFJJKzsiCi0gICAgICAg
ICIkRW1vamlGb3JNb2RzIFskRW1vamlWYXIgJEVtb2ppTW9kc10rOyI7Ci0jZWxzZQotICAgICAg
ICAiWyRFbW9qaVZhciAkRW1vamlNb2RzXSsgJEVtb2ppRm9yTW9kczsiCi0gICAgICAgICIkRW1v
amlGb3JNb2RzIFskRW1vamlWYXIgJEVtb2ppTW9kc10rOyIKLSAgICAgICAgIiEhc2FmZV9yZXZl
cnNlOyIKLSAgICAgICAgIiEhc2FmZV9mb3J3YXJkOyI7Ci0jZW5kaWYKLSAgICBzdGF0aWMgVGV4
dEJyZWFrSXRlcmF0b3IqIHN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IgPSBpbml0aWFsaXpl
SXRlcmF0b3JXaXRoUnVsZXMoa1J1bGVzKTsKLSNlbHNlIC8vIFBMQVRGT1JNKElPUykKLSAgICAv
LyBVc2UgdGhlIHNwZWNpYWwgVGhhaSBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgZm9yIGFsbCBs
b2NhbGVzCi0gICAgc3RhdGljIFRleHRCcmVha0l0ZXJhdG9yKiBzdGF0aWNDdXJzb3JNb3ZlbWVu
dEl0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSLCAidGgiKTsKLSNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCi0gICAgaWYgKCFzdGF0aWNDdXJzb3JNb3ZlbWVudEl0
ZXJhdG9yKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBzZXRUZXh0Rm9y
SXRlcmF0b3IoKnN0YXRpY0N1cnNvck1vdmVtZW50SXRlcmF0b3IsIHN0cmluZyk7Ci19Ci0KLVRl
eHRCcmVha0l0ZXJhdG9yKiBhY3F1aXJlTGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJp
bmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0
LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSBtb2Rl
LCBib29sIGlzQ0pLKQotewotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciA9IExpbmVC
cmVha0l0ZXJhdG9yUG9vbDo6c2hhcmVkUG9vbCgpLnRha2UobG9jYWxlLCBtb2RlLCBpc0NKSyk7
Ci0gICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1
cm4gc2V0Q29udGV4dEF3YXJlVGV4dEZvckl0ZXJhdG9yKCppdGVyYXRvciwgc3RyaW5nLCBwcmlv
ckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci19Ci0KLXZvaWQgcmVsZWFzZUxpbmVCcmVh
a0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICBBU1NFUlRfQVJH
KGl0ZXJhdG9yLCBpdGVyYXRvcik7Ci0KLSAgICBMaW5lQnJlYWtJdGVyYXRvclBvb2w6OnNoYXJl
ZFBvb2woKS5wdXQoaXRlcmF0b3IpOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRQcm9s
b2d1ZSA9Ci0gICAgIiEhY2hhaW47IgotICAgICIhIUxCQ01Ob0NoYWluOyIKLSAgICAiISFsb29r
QWhlYWRIYXJkQnJlYWs7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNC
ZWZvcmUgPQotICAgIC8vIGV4cGxpY2l0bHkgZW51bWVyYXRlICRDSiBzaW5jZSBJQ1UgdmVyc2lv
bnMgcHJpb3IgdG8gNDkgZG9uJ3Qgc3VwcG9ydCA6TGluZUJyZWFrPUNvbmRpdGlvbmFsX0phcGFu
ZXNlX1N0YXJ0ZXI6Ci0gICAgIiRDSiA9IFsiCi0jaWYgKFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVN
ID49IDQpICYmIChVX0lDVV9WRVJTSU9OX01JTk9SX05VTSA+PSA5KQotICAgICI6TGluZUJyZWFr
PUNvbmRpdGlvbmFsX0phcGFuZXNlX1N0YXJ0ZXI6IgotI2Vsc2UKLSAgICAiXFx1MzA0MVxcdTMw
NDNcXHUzMDQ1XFx1MzA0N1xcdTMwNDlcXHUzMDYzXFx1MzA4M1xcdTMwODVcXHUzMDg3XFx1MzA4
RVxcdTMwOTVcXHUzMDk2XFx1MzBBMVxcdTMwQTNcXHUzMEE1XFx1MzBBNyIKLSAgICAiXFx1MzBB
OVxcdTMwQzNcXHUzMEUzXFx1MzBFNVxcdTMwRTdcXHUzMEVFXFx1MzBGNVxcdTMwRjZcXHUzMEZD
IgotICAgICJcXHUzMUYwXFx1MzFGMVxcdTMxRjJcXHUzMUYzXFx1MzFGNFxcdTMxRjVcXHUzMUY2
XFx1MzFGN1xcdTMxRjhcXHUzMUY5XFx1MzFGQVxcdTMxRkJcXHUzMUZDXFx1MzFGRFxcdTMxRkVc
XHUzMUZGIgotICAgICJcXHVGRjY3XFx1RkY2OFxcdUZGNjlcXHVGRjZBXFx1RkY2QlxcdUZGNkNc
XHVGRjZEXFx1RkY2RVxcdUZGNkZcXHVGRjcwIgotI2VuZGlmCi0gICAgIl07IjsKLQotc3RhdGlj
IGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21Mb29zZUNKSyA9Ci0gICAgIiRCQV9T
VUIgPSBbXFx1MjAxMFxcdTIwMTNdOyIKLSAgICAiJEVYX1NVQiA9IFtcXHUwMDIxXFx1MDAzRlxc
dUZGMDFcXHVGRjFGXTsiCi0gICAgIiRJRF9TVUIgPSAnJzsiCi0gICAgIiRJTl9TVUIgPSBbXFx1
MjAyNVxcdTIwMjZdOyIKLSAgICAiJElTX1NVQiA9IFtcXHUwMDNBXFx1MDAzQl07IgotICAgICIk
TlNfU1VCID0gW1xcdTIwM0NcXHUyMDQ3XFx1MjA0OFxcdTIwNDlcXHUzMDA1XFx1MzAxQ1xcdTMw
M0JcXHUzMDlEXFx1MzA5RVxcdTMwQTBcXHUzMEZCXFx1MzBGRFxcdTMwRkVcXHVGRjFBXFx1RkYx
QlxcdUZGNjVdOyIKLSAgICAiJFBPX1NVQiA9IFtcXHUwMDI1XFx1MDBBMlxcdTAwQjBcXHUyMDMw
XFx1MjAzMlxcdTIwMzNcXHUyMTAzXFx1RkYwNVxcdUZGRTBdOyIKLSAgICAiJFBSX1NVQiA9IFtc
XHUwMDI0XFx1MDBBM1xcdTAwQTVcXHUyMEFDXFx1MjExNlxcdUZGMDRcXHVGRkUxXFx1RkZFNV07
IgotICAgICIkSURfQUREID0gWyRDSiAkQkFfU1VCICRFWF9TVUIgJElOX1NVQiAkSVNfU1VCICRO
U19TVUIgJFBPX1NVQiAkUFJfU1VCXTsiCi0gICAgIiROU19BREQgPSAnJzsiOwotCi1zdGF0aWMg
Y29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLID0KLSAgICAiJEJB
X1NVQiA9ICcnOyIKLSAgICAiJEVYX1NVQiA9ICcnOyIKLSAgICAiJElEX1NVQiA9ICcnOyIKLSAg
ICAiJElOX1NVQiA9IFtcXHUyMDI1XFx1MjAyNl07IgotICAgICIkSVNfU1VCID0gJyc7IgotICAg
ICIkTlNfU1VCID0gW1xcdTMwMDVcXHUzMDNCXFx1MzA5RFxcdTMwOUVcXHUzMEZEXFx1MzBGRV07
IgotICAgICIkUE9fU1VCID0gJyc7IgotICAgICIkUFJfU1VCID0gJyc7IgotICAgICIkSURfQURE
ID0gWyRDSiAkSU5fU1VCICROU19TVUJdOyIKLSAgICAiJE5TX0FERCA9ICcnOyI7Ci0KLXN0YXRp
YyBjb25zdCBjaGFyKiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsQ0pLID0KLSAgICAiJEJB
X1NVQiA9IFtcXHUyMDEwXFx1MjAxM107IgotICAgICIkRVhfU1VCID0gJyc7IgotICAgICIkSU5f
U1VCID0gJyc7IgotICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSVNfU1VCID0gJyc7IgotICAg
ICIkTlNfU1VCID0gW1xcdTMwMUNcXHUzMEEwXTsiCi0gICAgIiRQT19TVUIgPSAnJzsiCi0gICAg
IiRQUl9TVUIgPSAnJzsiCi0gICAgIiRJRF9BREQgPSBbJENKICRCQV9TVUIgJE5TX1NVQl07Igot
ICAgICIkTlNfQUREID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVu
dHNDdXN0b21Ob3JtYWxOb25DSksgPQotICAgICIkQkFfU1VCID0gJyc7IgotICAgICIkRVhfU1VC
ID0gJyc7IgotICAgICIkSURfU1VCID0gJyc7IgotICAgICIkSU5fU1VCID0gJyc7IgotICAgICIk
SVNfU1VCID0gJyc7IgotICAgICIkTlNfU1VCID0gJyc7IgotICAgICIkUE9fU1VCID0gJyc7Igot
ICAgICIkUFJfU1VCID0gJyc7IgotICAgICIkSURfQUREID0gWyRDSl07IgotICAgICIkTlNfQURE
ID0gJyc7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJp
Y3RDSksgPQotICAgICIkQkFfU1VCID0gJyc7IgotICAgICIkRVhfU1VCID0gJyc7IgotICAgICIk
SURfU1VCID0gJyc7IgotICAgICIkSU5fU1VCID0gJyc7IgotICAgICIkSVNfU1VCID0gJyc7Igot
ICAgICIkTlNfU1VCID0gJyc7IgotICAgICIkUE9fU1VCID0gJyc7IgotICAgICIkUFJfU1VCID0g
Jyc7IgotICAgICIkSURfQUREID0gJyc7IgotICAgICIkTlNfQUREID0gWyRDSl07IjsKLQotI2Rl
ZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLICAgICAgdWF4MTRBc3NpZ25t
ZW50c0N1c3RvbVN0cmljdENKSwotI2RlZmluZSB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVs
dENKSyAgICAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3RvbU5vcm1hbENKSwotI2RlZmluZSB1YXgx
NEFzc2lnbm1lbnRzQ3VzdG9tRGVmYXVsdE5vbkNKSyAgICAgdWF4MTRBc3NpZ25tZW50c0N1c3Rv
bVN0cmljdE5vbkNKSwotCi1zdGF0aWMgY29uc3QgY2hhciogdWF4MTRBc3NpZ25tZW50c0FmdGVy
ID0KLSAgICAiJEFJID0gWzpMaW5lQnJlYWsgPSBBbWJpZ3VvdXM6XTsiCi0gICAgIiRBTCA9IFs6
TGluZUJyZWFrID0gQWxwaGFiZXRpYzpdOyIKLSAgICAiJEJBID0gW1s6TGluZUJyZWFrID0gQnJl
YWtfQWZ0ZXI6XSAtICRCQV9TVUJdOyIKLSAgICAiJEJCID0gWzpMaW5lQnJlYWsgPSBCcmVha19C
ZWZvcmU6XTsiCi0gICAgIiRCSyA9IFs6TGluZUJyZWFrID0gTWFuZGF0b3J5X0JyZWFrOl07Igot
ICAgICIkQjIgPSBbOkxpbmVCcmVhayA9IEJyZWFrX0JvdGg6XTsiCi0gICAgIiRDQiA9IFs6TGlu
ZUJyZWFrID0gQ29udGluZ2VudF9CcmVhazpdOyIKLSAgICAiJENMID0gWzpMaW5lQnJlYWsgPSBD
bG9zZV9QdW5jdHVhdGlvbjpdOyIKLSAgICAiJENNID0gWzpMaW5lQnJlYWsgPSBDb21iaW5pbmdf
TWFyazpdOyIKLSAgICAiJENQID0gWzpMaW5lQnJlYWsgPSBDbG9zZV9QYXJlbnRoZXNpczpdOyIK
LSAgICAiJENSID0gWzpMaW5lQnJlYWsgPSBDYXJyaWFnZV9SZXR1cm46XTsiCi0gICAgIiRFWCA9
IFtbOkxpbmVCcmVhayA9IEV4Y2xhbWF0aW9uOl0gLSAkRVhfU1VCXTsiCi0gICAgIiRHTCA9IFs6
TGluZUJyZWFrID0gR2x1ZTpdOyIKLSNpZiAoVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPj0gNCkg
JiYgKFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVNID49IDkpCi0gICAgIiRITCA9IFs6TGluZUJyZWFr
ID0gSGVicmV3X0xldHRlcjpdOyIKLSNlbHNlCi0gICAgIiRITCA9IFtbOkhlYnJldzpdICYgWzpM
ZXR0ZXI6XV07IgotI2VuZGlmCi0gICAgIiRIWSA9IFs6TGluZUJyZWFrID0gSHlwaGVuOl07Igot
ICAgICIkSDIgPSBbOkxpbmVCcmVhayA9IEgyOl07IgotICAgICIkSDMgPSBbOkxpbmVCcmVhayA9
IEgzOl07IgotICAgICIkSUQgPSBbW1tbOkxpbmVCcmVhayA9IElkZW9ncmFwaGljOl0gLSAkQ0pd
ICRJRF9BRERdIC0gJElEX1NVQl07IgotICAgICIkSU4gPSBbWzpMaW5lQnJlYWsgPSBJbnNlcGFy
YWJsZTpdIC0gJElOX1NVQl07IgotICAgICIkSVMgPSBbWzpMaW5lQnJlYWsgPSBJbmZpeF9OdW1l
cmljOl0gLSAkSVNfU1VCXTsiCi0gICAgIiRKTCA9IFs6TGluZUJyZWFrID0gSkw6XTsiCi0gICAg
IiRKViA9IFs6TGluZUJyZWFrID0gSlY6XTsiCi0gICAgIiRKVCA9IFs6TGluZUJyZWFrID0gSlQ6
XTsiCi0gICAgIiRMRiA9IFs6TGluZUJyZWFrID0gTGluZV9GZWVkOl07IgotICAgICIkTkwgPSBb
OkxpbmVCcmVhayA9IE5leHRfTGluZTpdOyIKLSAgICAiJE5TID0gW1tbWzpMaW5lQnJlYWsgPSBO
b25zdGFydGVyOl0gLSAkQ0pdICROU19BRERdIC0gJE5TX1NVQl07IgotICAgICIkTlUgPSBbOkxp
bmVCcmVhayA9IE51bWVyaWM6XTsiCi0gICAgIiRPUCA9IFs6TGluZUJyZWFrID0gT3Blbl9QdW5j
dHVhdGlvbjpdOyIKLSAgICAiJFBPID0gW1s6TGluZUJyZWFrID0gUG9zdGZpeF9OdW1lcmljOl0g
LSAkUE9fU1VCXTsiCi0gICAgIiRQUiA9IFtbOkxpbmVCcmVhayA9IFByZWZpeF9OdW1lcmljOl0g
LSAkUFJfU1VCXTsiCi0gICAgIiRRVSA9IFs6TGluZUJyZWFrID0gUXVvdGF0aW9uOl07IgotICAg
ICIkUkkgPSBbXFxVMDAwMUYxRTYtXFxVMDAwMUYxRkZdOyIKLSAgICAiJFNBID0gWzpMaW5lQnJl
YWsgPSBDb21wbGV4X0NvbnRleHQ6XTsiCi0gICAgIiRTRyA9IFs6TGluZUJyZWFrID0gU3Vycm9n
YXRlOl07IgotICAgICIkU1AgPSBbOkxpbmVCcmVhayA9IFNwYWNlOl07IgotICAgICIkU1kgPSBb
OkxpbmVCcmVhayA9IEJyZWFrX1N5bWJvbHM6XTsiCi0gICAgIiRXSiA9IFs6TGluZUJyZWFrID0g
V29yZF9Kb2luZXI6XTsiCi0gICAgIiRYWCA9IFs6TGluZUJyZWFrID0gVW5rbm93bjpdOyIKLSAg
ICAiJFpXID0gWzpMaW5lQnJlYWsgPSBaV1NwYWNlOl07IgotICAgICIkWldKID0gXFx1MjAwRDsi
Ci0gICAgIiRFbW9qaVZhciA9IFxcdUZFMEY7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9S
VAotICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0NDEgXFxVMDAwMUY0NjYt
XFxVMDAwMUY0NjkgXFxVMDAwMUY0OEIgXFxVMDAwMUY1RThdOyIKLSAgICAiJEVtb2ppRm9yTW9k
cyA9IFtcXHUyNjFEIFxcdTI2RjkgXFx1MjcwQS1cXHUyNzBEIFxcVTAwMDFGMzg1IFxcVTAwMDFG
M0MzLVxcVTAwMDFGM0M0IFxcVTAwMDFGM0NBIFxcVTAwMDFGM0NCIFxcVTAwMDFGNDQyLVxcVTAw
MDFGNDQzIFxcVTAwMDFGNDQ2LVxcVTAwMDFGNDUwIFxcVTAwMDFGNDY2LVxcVTAwMDFGNDY5IFxc
VTAwMDFGNDZFLVxcVTAwMDFGNDc4IFxcVTAwMDFGNDdDIFxcVTAwMDFGNDgxLVxcVTAwMDFGNDgz
IFxcVTAwMDFGNDg1LVxcVTAwMDFGNDg3IFxcVTAwMDFGNEFBIFxcVTAwMDFGNTc1IFxcVTAwMDFG
NTkwIFxcVTAwMDFGNTk1IFxcVTAwMDFGNTk2IFxcVTAwMDFGNjQ1LVxcVTAwMDFGNjQ3IFxcVTAw
MDFGNjRCLVxcVTAwMDFGNjRGIFxcVTAwMDFGNkEzIFxcVTAwMDFGNkI0LVxcVTAwMDFGNkI2IFxc
VTAwMDFGNkMwIFxcVTAwMDFGOTE4XSA7IiAvLyBFbW9qaSB0aGF0IHRha2UgRml0enBhdHJpY2sg
bW9kaWZpZXJzCi0jZWxzZQotICAgICIkRW1vamlGb3JTZXFzID0gW1xcdTI3NjQgXFxVMDAwMUY0
NjYtXFxVMDAwMUY0NjkgXFxVMDAwMUY0OEJdOyIKLSAgICAiJEVtb2ppRm9yTW9kcyA9IFtcXHUy
NjFEIFxcdTI3MEEtXFx1MjcwQyBcXFUwMDAxRjM4NSBcXFUwMDAxRjNDMy1cXFUwMDAxRjNDNCBc
XFUwMDAxRjNDNyBcXFUwMDAxRjNDQSBcXFUwMDAxRjQ0Mi1cXFUwMDAxRjQ0MyBcXFUwMDAxRjQ0
Ni1cXFUwMDAxRjQ1MCBcXFUwMDAxRjQ2Ni1cXFUwMDAxRjQ2OSBcXFUwMDAxRjQ2RS1cXFUwMDAx
RjQ3OCBcXFUwMDAxRjQ3QyBcXFUwMDAxRjQ4MS1cXFUwMDAxRjQ4MyBcXFUwMDAxRjQ4NS1cXFUw
MDAxRjQ4NyBcXFUwMDAxRjRBQSBcXFUwMDAxRjU5NiBcXFUwMDAxRjY0NS1cXFUwMDAxRjY0NyBc
XFUwMDAxRjY0Qi1cXFUwMDAxRjY0RiBcXFUwMDAxRjZBMyBcXFUwMDAxRjZCNC1cXFUwMDAxRjZC
NiBcXFUwMDAxRjZDMF0gOyIgLy8gRW1vamkgdGhhdCB0YWtlIEZpdHpwYXRyaWNrIG1vZGlmaWVy
cwotI2VuZGlmCi0gICAgIiRFbW9qaU1vZHMgPSBbXFxVMDAwMUYzRkItXFxVMDAwMUYzRkZdOyIK
LSAgICAiJGRpY3Rpb25hcnkgPSBbOkxpbmVCcmVhayA9IENvbXBsZXhfQ29udGV4dDpdOyIKLSAg
ICAiJEFMUGx1cyA9IFskQUwgJEFJICRTQSAkU0cgJFhYXTsiCi0gICAgIiRBTGNtID0gJEFMUGx1
cyAkQ00qOyIKLSAgICAiJEJBY20gPSAkQkEgJENNKjsiCi0gICAgIiRCQmNtID0gJEJCICRDTSo7
IgotICAgICIkQjJjbSA9ICRCMiAkQ00qOyIKLSAgICAiJENMY20gPSAkQ0wgJENNKjsiCi0gICAg
IiRDUGNtID0gJENQICRDTSo7IgotICAgICIkRVhjbSA9ICRFWCAkQ00qOyIKLSAgICAiJEdMY20g
PSAkR0wgJENNKjsiCi0gICAgIiRITGNtID0gJEhMICRDTSo7IgotICAgICIkSFljbSA9ICRIWSAk
Q00qOyIKLSAgICAiJEgyY20gPSAkSDIgJENNKjsiCi0gICAgIiRIM2NtID0gJEgzICRDTSo7Igot
ICAgICIkSURjbSA9ICRJRCAkQ00qOyIKLSAgICAiJElOY20gPSAkSU4gJENNKjsiCi0gICAgIiRJ
U2NtID0gJElTICRDTSo7IgotICAgICIkSkxjbSA9ICRKTCAkQ00qOyIKLSAgICAiJEpWY20gPSAk
SlYgJENNKjsiCi0gICAgIiRKVGNtID0gJEpUICRDTSo7IgotICAgICIkTlNjbSA9ICROUyAkQ00q
OyIKLSAgICAiJE5VY20gPSAkTlUgJENNKjsiCi0gICAgIiRPUGNtID0gJE9QICRDTSo7IgotICAg
ICIkUE9jbSA9ICRQTyAkQ00qOyIKLSAgICAiJFBSY20gPSAkUFIgJENNKjsiCi0gICAgIiRRVWNt
ID0gJFFVICRDTSo7IgotICAgICIkUkljbSA9ICRRVSAkQ00qOyIKLSAgICAiJFNZY20gPSAkU1kg
JENNKjsiCi0gICAgIiRXSmNtID0gJFdKICRDTSo7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVh
eDE0Rm9yd2FyZCA9Ci0gICAgIiEhZm9yd2FyZDsiCi0gICAgIiRDQU5fQ00gPSBbXiRTUCAkQksg
JENSICRMRiAkTkwgJFpXICRDTV07IgotICAgICIkQ0FOVF9DTSA9IFskU1AgJEJLICRDUiAkTEYg
JE5MICRaVyAkQ01dOyIKLSAgICAiJEFMX0ZPTExPV19OT0NNID0gWyRCSyAkQ1IgJExGICROTCAk
WlcgJFNQXTsiCi0gICAgIiRBTF9GT0xMT1dfQ00gPSBbJENMICRDUCAkRVggJEhMICRJUyAkU1kg
JFdKICRHTCAkT1AgJFFVICRCQSAkSFkgJE5TICRJTiAkTlUgJEFMUGx1c107IgotICAgICIkQUxf
Rk9MTE9XID0gWyRBTF9GT0xMT1dfTk9DTSAkQUxfRk9MTE9XX0NNXTsiCi0gICAgIiRMQjRCcmVh
a3MgPSBbJEJLICRDUiAkTEYgJE5MXTsiCi0gICAgIiRMQjROb25CcmVha3MgPSBbXiRCSyAkQ1Ig
JExGICROTF07IgotICAgICIkTEI4QnJlYWtzID0gWyRMQjRCcmVha3MgJFpXXTsiCi0gICAgIiRM
QjhOb25CcmVha3MgPSBbWyRMQjROb25CcmVha3NdIC0gWyRaV11dOyIKLSAgICAiJExCMThOb25C
cmVha3MgPSBbJExCOE5vbkJyZWFrcyAtIFskU1BdXTsiCi0gICAgIiRMQjE4QnJlYWtzID0gWyRM
QjhCcmVha3MgJFNQXTsiCi0gICAgIiRMQjIwTm9uQnJlYWtzID0gWyRMQjE4Tm9uQnJlYWtzIC0g
JENCXTsiCi0gICAgIiRBTFBsdXMgJENNKzsiCi0gICAgIiRCQSAkQ00rOyIKLSAgICAiJEJCICRD
TSs7IgotICAgICIkQjIgJENNKzsiCi0gICAgIiRDTCAkQ00rOyIKLSAgICAiJENQICRDTSs7Igot
ICAgICIkRVggJENNKzsiCi0gICAgIiRHTCAkQ00rOyIKLSAgICAiJEhMICRDTSs7IgotICAgICIk
SFkgJENNKzsiCi0gICAgIiRIMiAkQ00rOyIKLSAgICAiJEgzICRDTSs7IgotICAgICIkSUQgJENN
KzsiCi0gICAgIiRJTiAkQ00rOyIKLSAgICAiJElTICRDTSs7IgotICAgICIkSkwgJENNKzsiCi0g
ICAgIiRKViAkQ00rOyIKLSAgICAiJEpUICRDTSs7IgotICAgICIkTlMgJENNKzsiCi0gICAgIiRO
VSAkQ00rOyIKLSAgICAiJE9QICRDTSs7IgotICAgICIkUE8gJENNKzsiCi0gICAgIiRQUiAkQ00r
OyIKLSAgICAiJFFVICRDTSs7IgotICAgICIkU1kgJENNKzsiCi0gICAgIiRXSiAkQ00rOyIKLSAg
ICAiJENSICRMRiB7MTAwfTsiCi0gICAgIiRMQjROb25CcmVha3M/ICRMQjRCcmVha3MgezEwMH07
IgotICAgICIkQ0FOX0NNICRDTSogJExCNEJyZWFrcyB7MTAwfTsiCi0gICAgIiRDTSsgJExCNEJy
ZWFrcyB7MTAwfTsiCi0gICAgIiRMQjROb25CcmVha3MgWyRTUCAkWlddOyIKLSAgICAiJENBTl9D
TSAkQ00qIFskU1AgJFpXXTsiCi0gICAgIiRDTSsgWyRTUCAkWlddOyIKLSAgICAiJEVtb2ppRm9y
U2VxcyAkRW1vamlWYXI/ICRFbW9qaU1vZHM/ICRaV0ogJEVtb2ppRm9yU2VxczsiCi0gICAgIiRD
QU5fQ00gJENNKzsiCi0gICAgIiRDTSs7IgotICAgICIkQ0FOX0NNICRDTSogJFdKY207IgotICAg
ICIkTEI4Tm9uQnJlYWtzICRXSmNtOyIKLSAgICAiJENNKyAkV0pjbTsiCi0gICAgIiRXSmNtICRD
QU5UX0NNOyIKLSAgICAiJFdKY20gJENBTl9DTSAkQ00qOyIKLSAgICAiJEdMY20gJENBTl9DTSAk
Q00qOyIKLSAgICAiJEdMY20gJENBTlRfQ007IgotICAgICJbWyRMQjhOb25CcmVha3NdIC0gWyRT
UCAkQkEgJEhZXV0gJENNKiAkR0xjbTsiCi0gICAgIiRDTSsgR0xjbTsiCi0gICAgIiRMQjhOb25C
cmVha3MgJENMOyIKLSAgICAiJENBTl9DTSAkQ00qICRDTDsiCi0gICAgIiRDTSsgJENMOyIKLSAg
ICAiJExCOE5vbkJyZWFrcyAkQ1A7IgotICAgICIkQ0FOX0NNICRDTSogJENQOyIKLSAgICAiJENN
KyAkQ1A7IgotICAgICIkTEI4Tm9uQnJlYWtzICRFWDsiCi0gICAgIiRDQU5fQ00gJENNKiAkRVg7
IgotICAgICIkQ00rICRFWDsiCi0gICAgIiRMQjhOb25CcmVha3MgJElTOyIKLSAgICAiJENBTl9D
TSAkQ00qICRJUzsiCi0gICAgIiRDTSsgJElTOyIKLSAgICAiJExCOE5vbkJyZWFrcyAkU1k7Igot
ICAgICIkQ0FOX0NNICRDTSogJFNZOyIKLSAgICAiJENNKyAkU1k7IgotICAgICIkT1BjbSAkU1Aq
ICRDQU5fQ00gJENNKjsiCi0gICAgIiRPUGNtICRTUCogJENBTlRfQ007IgotICAgICIkT1BjbSAk
U1ArICRDTSsgJEFMX0ZPTExPVz87IgotICAgICIkUVVjbSAkU1AqICRPUGNtOyIKLSAgICAiKCRD
TGNtIHwgJENQY20pICRTUCogJE5TY207IgotICAgICIkQjJjbSAkU1AqICRCMmNtOyIKLSAgICAi
JExCMThOb25CcmVha3MgJENNKiAkUVVjbTsiCi0gICAgIiRDTSsgJFFVY207IgotICAgICIkUVVj
bSAuPzsiCi0gICAgIiRRVWNtICRMQjE4Tm9uQnJlYWtzICRDTSo7IgotICAgICIkTEIyME5vbkJy
ZWFrcyAkQ00qICgkQkFjbSB8ICRIWWNtIHwgJE5TY20pOyAiCi0gICAgIiRCQmNtIFteJENCXTsi
Ci0gICAgIiRCQmNtICRMQjIwTm9uQnJlYWtzICRDTSo7IgotICAgICIkSExjbSAoJEhZY20gfCAk
QkFjbSkgW14kQ0JdPzsiCi0gICAgIigkQUxjbSB8ICRITGNtKSAkSU5jbTsiCi0gICAgIiRDTSsg
JElOY207IgotICAgICIkSURjbSAkSU5jbTsiCi0gICAgIiRJTmNtICRJTmNtOyIKLSAgICAiJE5V
Y20gJElOY207IgotICAgICIkSURjbSAkUE9jbTsiCi0gICAgIiRBTGNtICROVWNtOyIKLSAgICAi
JEhMY20gJE5VY207IgotICAgICIkQ00rICROVWNtOyIKLSAgICAiJE5VY20gJEFMY207IgotICAg
ICIkTlVjbSAkSExjbTsiCi0gICAgIiRQUmNtICRJRGNtOyIKLSAgICAiJFBSY20gKCRBTGNtIHwg
JEhMY20pOyIKLSAgICAiJFBPY20gKCRBTGNtIHwgJEhMY20pOyIKLSAgICAiKCRQUmNtIHwgJFBP
Y20pPyAoJE9QY20gfCAkSFljbSk/ICROVWNtICgkTlVjbSB8ICRTWWNtIHwgJElTY20pKiAoJENM
Y20gfCAkQ1BjbSk/ICgkUFJjbSB8ICRQT2NtKT87IgotICAgICIkSkxjbSAoJEpMY20gfCAkSlZj
bSB8ICRIMmNtIHwgJEgzY20pOyIKLSAgICAiKCRKVmNtIHwgJEgyY20pICgkSlZjbSB8ICRKVGNt
KTsiCi0gICAgIigkSlRjbSB8ICRIM2NtKSAkSlRjbTsiCi0gICAgIigkSkxjbSB8ICRKVmNtIHwg
JEpUY20gfCAkSDJjbSB8ICRIM2NtKSAkSU5jbTsiCi0gICAgIigkSkxjbSB8ICRKVmNtIHwgJEpU
Y20gfCAkSDJjbSB8ICRIM2NtKSAkUE9jbTsiCi0gICAgIiRQUmNtICgkSkxjbSB8ICRKVmNtIHwg
JEpUY20gfCAkSDJjbSB8ICRIM2NtKTsiCi0gICAgIigkQUxjbSB8ICRITGNtKSAoJEFMY20gfCAk
SExjbSk7IgotICAgICIkQ00rICgkQUxjbSB8ICRITGNtKTsiCi0gICAgIiRJU2NtICgkQUxjbSB8
ICRITGNtKTsiCi0gICAgIigkQUxjbSB8ICRITGNtIHwgJE5VY20pICRPUGNtOyIKLSAgICAiJENN
KyAkT1BjbTsiCi0gICAgIiRDUGNtICgkQUxjbSB8ICRITGNtIHwgJE5VY20pOyIKLSNpZiBBRERJ
VElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAiJFJJY20gJFJJY207IgotI2VuZGlmCi0gICAgIiRF
bW9qaUZvck1vZHMgJEVtb2ppVmFyPyAkRW1vamlNb2RzOyI7Ci0KLXN0YXRpYyBjb25zdCBjaGFy
KiB1YXgxNFJldmVyc2UgPQotICAgICIhIXJldmVyc2U7IgotICAgICIkQ00rICRBTFBsdXM7Igot
ICAgICIkQ00rICRCQTsiCi0gICAgIiRDTSsgJEJCOyIKLSAgICAiJENNKyAkQjI7IgotICAgICIk
Q00rICRDTDsiCi0gICAgIiRDTSsgJENQOyIKLSAgICAiJENNKyAkRVg7IgotICAgICIkQ00rICRH
TDsiCi0gICAgIiRDTSsgJEhMOyIKLSAgICAiJENNKyAkSFk7IgotICAgICIkQ00rICRIMjsiCi0g
ICAgIiRDTSsgJEgzOyIKLSAgICAiJENNKyAkSUQ7IgotICAgICIkQ00rICRJTjsiCi0gICAgIiRD
TSsgJElTOyIKLSAgICAiJENNKyAkSkw7IgotICAgICIkQ00rICRKVjsiCi0gICAgIiRDTSsgJEpU
OyIKLSAgICAiJENNKyAkTlM7IgotICAgICIkQ00rICROVTsiCi0gICAgIiRDTSsgJE9QOyIKLSAg
ICAiJENNKyAkUE87IgotICAgICIkQ00rICRQUjsiCi0gICAgIiRDTSsgJFFVOyIKLSNpZiBBRERJ
VElPTkFMX0VNT0pJX1NVUFBPUlQKLSAgICAiJENNKyAkUkk7IgotI2VuZGlmCi0gICAgIiRDTSsg
JFNZOyIKLSAgICAiJENNKyAkV0o7IgotICAgICIkQ00rOyIKLSAgICAiJEFMX0ZPTExPVyAkQ00r
IC8gKFskQksgJENSICRMRiAkTkwgJFpXIHtlb2Z9XSB8ICRTUCsgJENNKyAkU1AgfCAkU1ArICRD
TSogKFteJE9QICRDTSAkU1BdIHwgWyRBTCB7ZW9mfV0pKTsiCi0gICAgIlskUFJdIC8gJENNKyBb
JEJLICRDUiAkTEYgJE5MICRaVyAkU1Age2VvZn1dOyIKLSAgICAiJExCNEJyZWFrcyBbJExCNE5v
bkJyZWFrcy0kQ01dOyIKLSAgICAiJExCNEJyZWFrcyAkQ00rICRDQU5fQ007IgotICAgICIkTEYg
JENSOyIKLSAgICAiWyRTUCAkWlddIFskTEI0Tm9uQnJlYWtzLSRDTV07IgotICAgICJbJFNQICRa
V10gJENNKyAkQ0FOX0NNOyIKLSAgICAiJEVtb2ppRm9yU2VxcyAkWldKICRFbW9qaU1vZHM/ICRF
bW9qaVZhcj8gJEVtb2ppRm9yU2VxczsiCi0gICAgIiRDTSsgJENBTl9DTTsiCi0gICAgIiRDTSog
JFdKICRDTSogJENBTl9DTTsiCi0gICAgIiRDTSogJFdKIFskTEI4Tm9uQnJlYWtzLSRDTV07Igot
ICAgICIkQ0FOVF9DTSAkQ00qICRXSjsiCi0gICAgIiRDTSogJENBTl9DTSAkQ00qICRXSjsiCi0g
ICAgIiRDTSogJEdMICRDTSogWyRMQjhOb25CcmVha3MtWyRDTSAkU1AgJEJBICRIWV1dOyIKLSAg
ICAiJENBTlRfQ00gJENNKiAkR0w7IgotICAgICIkQ00qICRDQU5fQ00gJENNKiAkR0w7IgotICAg
ICIkQ0wgJENNKyAkQ0FOX0NNOyIKLSAgICAiJENQICRDTSsgJENBTl9DTTsiCi0gICAgIiRFWCAk
Q00rICRDQU5fQ007IgotICAgICIkSVMgJENNKyAkQ0FOX0NNOyIKLSAgICAiJFNZICRDTSsgJENB
Tl9DTTsiCi0gICAgIiRDTCBbJExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiJENQIFskTEI4Tm9u
QnJlYWtzLSRDTV07IgotICAgICIkRVggWyRMQjhOb25CcmVha3MtJENNXTsiCi0gICAgIiRJUyBb
JExCOE5vbkJyZWFrcy0kQ01dOyIKLSAgICAiJFNZIFskTEI4Tm9uQnJlYWtzLSRDTV07IgotICAg
ICJbJENMICRDUCAkRVggJElTICRTWV0gJENNKyAkU1ArICRDTSogJE9QOyAiCi0gICAgIiRDTSog
JENBTl9DTSAkU1AqICRDTSogJE9QOyIKLSAgICAiJENBTlRfQ00gJFNQKiAkQ00qICRPUDsiCi0g
ICAgIiRBTF9GT0xMT1c/ICRDTSsgJFNQICRTUCogJENNKiAkT1A7IgotICAgICIkQUxfRk9MTE9X
X05PQ00gJENNKyAkU1ArICRDTSogJE9QOyIKLSAgICAiJENNKiAkQUxfRk9MTE9XX0NNICRDTSsg
JFNQKyAkQ00qICRPUDsiCi0gICAgIiRTWSAkQ00gJFNQKyAkT1A7IgotICAgICIkQ00qICRPUCAk
U1AqICRDTSogJFFVOyIKLSAgICAiJENNKiAkTlMgJFNQKiAkQ00qICgkQ0wgfCAkQ1ApOyIKLSAg
ICAiJENNKiAkQjIgJFNQKiAkQ00qICRCMjsiCi0gICAgIiRDTSogJFFVICRDTSogJENBTl9DTTsi
Ci0gICAgIiRDTSogJFFVICRMQjE4Tm9uQnJlYWtzOyIKLSAgICAiJENNKiAkQ0FOX0NNICRDTSog
JFFVOyIKLSAgICAiJENBTlRfQ00gJENNKiAkUVU7IgotICAgICIkQ00qICgkQkEgfCAkSFkgfCAk
TlMpICRDTSogWyRMQjIwTm9uQnJlYWtzLSRDTV07IgotICAgICIkQ00qIFskTEIyME5vbkJyZWFr
cy0kQ01dICRDTSogJEJCOyIKLSAgICAiW14kQ0JdICRDTSogJEJCOyIKLSAgICAiW14kQ0JdICRD
TSogKCRIWSB8ICRCQSkgJENNKiAkSEw7IgotICAgICIkQ00qICRJTiAkQ00qICgkQUxQbHVzIHwg
JEhMKTsiCi0gICAgIiRDTSogJElOICRDTSogJElEOyIKLSAgICAiJENNKiAkSU4gJENNKiAkSU47
IgotICAgICIkQ00qICRJTiAkQ00qICROVTsiCi0gICAgIiRDTSogJFBPICRDTSogJElEOyIKLSAg
ICAiJENNKiAkTlUgJENNKiAoJEFMUGx1cyB8ICRITCk7IgotICAgICIkQ00qICgkQUxQbHVzIHwg
JEhMKSAkQ00qICROVTsiCi0gICAgIiRDTSogJElEICRDTSogJFBSOyIKLSAgICAiJENNKiAoJEFM
UGx1cyB8ICRITCkgJENNKiAkUFI7IgotICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRQ
TzsiCi0gICAgIigkQ00qICgkUFIgfCAkUE8pKT8gKCRDTSogKCRDTCB8ICRDUCkpPyAoJENNKiAo
JE5VIHwgJElTIHwgJFNZKSkqICRDTSogJE5VICgkQ00qICgkT1AgfCAkSFkpKT8gKCRDTSogKCRQ
UiB8ICRQTykpPzsiCi0gICAgIiRDTSogKCRIMyB8ICRIMiB8ICRKViB8ICRKTCkgJENNKiAkSkw7
IgotICAgICIkQ00qICgkSlQgfCAkSlYpICRDTSogKCRIMiB8ICRKVik7IgotICAgICIkQ00qICRK
VCAkQ00qICgkSDMgfCAkSlQpOyIKLSAgICAiJENNKiAkSU4gJENNKiAoJEgzIHwgJEgyIHwgJEpU
IHwgJEpWIHwgJEpMKTsiCi0gICAgIiRDTSogJFBPICRDTSogKCRIMyB8ICRIMiB8ICRKVCB8ICRK
ViB8ICRKTCk7IgotICAgICIkQ00qICgkSDMgfCAkSDIgfCAkSlQgfCAkSlYgfCAkSkwpICRDTSog
JFBSOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8ICRITCkgJENNKiAoJEFMUGx1cyB8ICRITCk7Igot
ICAgICIkQ00qICgkQUxQbHVzIHwgJEhMKSAkQ00qICRJUzsiCi0gICAgIiRDTSogJE9QICRDTSog
KCRBTFBsdXMgfCAkSEwgfCAkTlUpOyIKLSAgICAiJENNKiAoJEFMUGx1cyB8ICRITCB8ICROVSkg
JENNKiAkQ1A7IgotI2lmIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVAotICAgICIkQ00qICRSSSAk
Q00qICRSSTsiCi0jZW5kaWYKLSAgICAiJEVtb2ppTW9kcyAkRW1vamlWYXI/ICRFbW9qaUZvck1v
ZHM7IjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHVheDE0U2FmZUZvcndhcmQgPQotICAgICIhIXNh
ZmVfZm9yd2FyZDsiCi0gICAgIlskQ00gJE9QICRRVSAkQ0wgJENQICRCMiAkUFIgJEhZICRCQSAk
U1AgJGRpY3Rpb25hcnldKyBbXiRDTSAkT1AgJFFVICRDTCAkQ1AgJEIyICRQUiAkSFkgJEJBICRk
aWN0aW9uYXJ5XTsiCi0gICAgIiRkaWN0aW9uYXJ5ICRkaWN0aW9uYXJ5OyI7Ci0KLXN0YXRpYyBj
b25zdCBjaGFyKiB1YXgxNFNhZmVSZXZlcnNlID0KLSAgICAiISFzYWZlX3JldmVyc2U7IgotICAg
ICIkQ00rIFteJENNICRCSyAkQ1IgJExGICROTCAkWlcgJFNQXTsiCi0gICAgIiRDTSsgJFNQIC8g
LjsiCi0gICAgIiRTUCsgJENNKiAkT1A7IgotICAgICIkU1ArICRDTSogJFFVOyIKLSAgICAiJFNQ
KyAkQ00qICgkQ0wgfCAkQ1ApOyIKLSAgICAiJFNQKyAkQ00qICRCMjsiCi0gICAgIiRDTSogKCRI
WSB8ICRCQSkgJENNKiAkSEw7IgotICAgICIoJENNKiAoJElTIHwgJFNZKSkrICRDTSogJE5VOyIK
LSAgICAiKCRDTCB8ICRDUCkgJENNKiAoJE5VIHwgJElTIHwgJFNZKTsiCi0gICAgIiRkaWN0aW9u
YXJ5ICRkaWN0aW9uYXJ5OyI7Ci0KLXN0YXRpYyBTdHJpbmcgbWFwTGluZUl0ZXJhdG9yTW9kZVRv
UnVsZXMoTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSkspCi17Ci0gICAgU3Ry
aW5nQnVpbGRlciBydWxlc0J1aWxkZXI7Ci0gICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFBy
b2xvZ3VlKTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0QXNzaWdubWVudHNCZWZvcmUp
OwotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFY
MTQ6Ci0gICAgICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQoaXNDSksgPyB1YXgxNEFzc2lnbm1lbnRz
Q3VzdG9tRGVmYXVsdENKSyA6IHVheDE0QXNzaWdubWVudHNDdXN0b21EZWZhdWx0Tm9uQ0pLKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNExvb3Nl
OgotICAgICAgICBydWxlc0J1aWxkZXIuYXBwZW5kKGlzQ0pLID8gdWF4MTRBc3NpZ25tZW50c0N1
c3RvbUxvb3NlQ0pLIDogdWF4MTRBc3NpZ25tZW50c0N1c3RvbUxvb3NlTm9uQ0pLKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbDoKLSAg
ICAgICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21O
b3JtYWxDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tTm9ybWFsTm9uQ0pLKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdDoKLSAgICAg
ICAgcnVsZXNCdWlsZGVyLmFwcGVuZChpc0NKSyA/IHVheDE0QXNzaWdubWVudHNDdXN0b21TdHJp
Y3RDSksgOiB1YXgxNEFzc2lnbm1lbnRzQ3VzdG9tU3RyaWN0Tm9uQ0pLKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRBc3NpZ25tZW50c0FmdGVy
KTsKLSAgICBydWxlc0J1aWxkZXIuYXBwZW5kKHVheDE0Rm9yd2FyZCk7Ci0gICAgcnVsZXNCdWls
ZGVyLmFwcGVuZCh1YXgxNFJldmVyc2UpOwotICAgIHJ1bGVzQnVpbGRlci5hcHBlbmQodWF4MTRT
YWZlRm9yd2FyZCk7Ci0gICAgcnVsZXNCdWlsZGVyLmFwcGVuZCh1YXgxNFNhZmVSZXZlcnNlKTsK
LSAgICByZXR1cm4gcnVsZXNCdWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLS8vIFJlY29nbml6ZSBC
Q1A0NyBjb21wbGlhbnQgcHJpbWFyeSBsYW5ndWFnZSB2YWx1ZXMgb2YgJ3poJywgJ2phJywgJ2tv
JwotLy8gKGluIGFueSBjb21iaW5hdGlvbiBvZiBjYXNlKSwgb3B0aW9uYWxseSBmb2xsb3dlZCBi
eSBzdWJ0YWdzLiBEb24ndAotLy8gcmVjb2duaXplIDMtbGV0dGVyIHZhcmlhbnRzICdjaGknLyd6
aG8nLCAnanBuJywgb3IgJ2tvcicgc2luY2UgQkNQNDcKLS8vIHJlcXVpcmVzIHVzZSBvZiBzaG9y
dGVzdCBsYW5ndWFnZSB0YWcuCi1ib29sIGlzQ0pLTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlKQotewotICAgIHNpemVfdCBsZW5ndGggPSBsb2NhbGUubGVuZ3RoKCk7Ci0gICAgaWYg
KGxlbmd0aCA8IDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIGMxID0gbG9jYWxl
WzBdOwotICAgIGF1dG8gYzIgPSBsb2NhbGVbMV07Ci0gICAgYXV0byBjMyA9IGxlbmd0aCA9PSAy
ID8gMCA6IGxvY2FsZVsyXTsKLSAgICBpZiAoIWMzIHx8IGMzID09ICctJyB8fCBjMyA9PSAnXycg
fHwgYzMgPT0gJ0AnKSB7Ci0gICAgICAgIGlmIChjMSA9PSAneicgfHwgYzEgPT0gJ1onKQotICAg
ICAgICAgICAgcmV0dXJuIGMyID09ICdoJyB8fCBjMiA9PSAnSCc7Ci0gICAgICAgIGlmIChjMSA9
PSAnaicgfHwgYzEgPT0gJ0onKQotICAgICAgICAgICAgcmV0dXJuIGMyID09ICdhJyB8fCBjMiA9
PSAnQSc7Ci0gICAgICAgIGlmIChjMSA9PSAnaycgfHwgYzEgPT0gJ0snKQotICAgICAgICAgICAg
cmV0dXJuIGMyID09ICdvJyB8fCBjMiA9PSAnTyc7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJdGVyYXRvcihjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUsIGJvb2wgaXNDSksp
Ci17Ci0gICAgVUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyOwotICAgIFVFcnJvckNvZGUgb3BlblN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBib29sIGxvY2FsZUlzRW1wdHkgPSBsb2NhbGUuaXNF
bXB0eSgpOwotICAgIGlmIChtb2RlID09IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KQotICAg
ICAgICB1YnJrSXRlciA9IHVicmtfb3BlbihVQlJLX0xJTkUsIGxvY2FsZUlzRW1wdHkgPyBjdXJy
ZW50VGV4dEJyZWFrTG9jYWxlSUQoKSA6IGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAw
LCAwLCAmb3BlblN0YXR1cyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFVQYXJzZUVycm9yIHBhcnNl
U3RhdHVzOwotICAgICAgICBhdXRvIHJ1bGVzID0gbWFwTGluZUl0ZXJhdG9yTW9kZVRvUnVsZXMo
bW9kZSwgaXNDSkspOwotICAgICAgICB1YnJrSXRlciA9IHVicmtfb3BlblJ1bGVzKFN0cmluZ1Zp
ZXcocnVsZXMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBydWxlcy5sZW5ndGgoKSwgMCwgMCwg
JnBhcnNlU3RhdHVzLCAmb3BlblN0YXR1cyk7Ci0gICAgfQotICAgIC8vIGxvY2FsZSBjb21lcyBm
cm9tIGEgd2ViIHBhZ2UgYW5kIGl0IGNhbiBiZSBpbnZhbGlkLCBsZWFkaW5nIElDVQotICAgIC8v
IHRvIGZhaWwsIGluIHdoaWNoIGNhc2Ugd2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGxvY2Fs
ZS4KLSAgICBpZiAoIWxvY2FsZUlzRW1wdHkgJiYgVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0g
ICAgICAgIG9wZW5TdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVicmtJdGVyID0gdWJy
a19vcGVuKFVCUktfTElORSwgY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCksIDAsIDAsICZvcGVu
U3RhdHVzKTsKLSAgICB9Ci0KLSAgICBpZiAoVV9GQUlMVVJFKG9wZW5TdGF0dXMpKSB7Ci0gICAg
ICAgIExPR19FUlJPUigidWJya19vcGVuIGZhaWxlZCB3aXRoIHN0YXR1cyAlZCIsIG9wZW5TdGF0
dXMpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtJdGVyKTsKLX0KLQotdm9pZCBjbG9z
ZUxpbmVCcmVha0l0ZXJhdG9yKFRleHRCcmVha0l0ZXJhdG9yKiYgaXRlcmF0b3IpCi17Ci0gICAg
VUJyZWFrSXRlcmF0b3IqIHVicmtJdGVyID0gcmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRv
cio+KGl0ZXJhdG9yKTsKLSAgICBBU1NFUlQodWJya0l0ZXIpOwotICAgIHVicmtfY2xvc2UodWJy
a0l0ZXIpOwotICAgIGl0ZXJhdG9yID0gbnVsbHB0cjsKLX0KLQotc3RhdGljIFRleHRCcmVha0l0
ZXJhdG9yKiBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOwotCi1zdGF0aWMgaW5saW5l
IGJvb2wgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFRleHRC
cmVha0l0ZXJhdG9yKiBleHBlY3RlZCwgVGV4dEJyZWFrSXRlcmF0b3IqIG5ld1ZhbHVlKQotewot
ICAgIHJldHVybiBXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvciwgZXhwZWN0ZWQsIG5ld1ZhbHVlKTsKLX0KLQotTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3
IHN0cmluZykKLXsKLSAgICBtX2l0ZXJhdG9yID0gbm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcjsKLQotICAgIGJvb2wgY3JlYXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJl
QW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgMCk7Ci0g
ICAgaWYgKCFjcmVhdGVkSXRlcmF0b3IpCi0gICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXpl
SXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwotICAgIGlmICghbV9pdGVyYXRvcikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9pdGVyYXRvciA9IHNldFRleHRGb3JJdGVyYXRvcigqbV9pdGVyYXRv
ciwgc3RyaW5nKTsKLX0KLQotTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQotewotICAgIGlmICghY29tcGFyZUFuZFN3YXBO
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKDAsIG1faXRlcmF0b3IpKQotICAgICAgICB1
YnJrX2Nsb3NlKHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7
Ci19Ci0KLQotLy8gSXRlcmF0b3IgaW1wbGVtZW5hdGlvbi4KLQotaW50IHRleHRCcmVha0ZpcnN0
KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19maXJzdChy
ZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4oaXRlcmF0b3IpKTsKLX0KLQotaW50IHRl
eHRCcmVha0xhc3QoVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXJhdG9yKQotewotICAgIHJldHVybiB1
YnJrX2xhc3QocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSk7Ci19
Ci0KLWludCB0ZXh0QnJlYWtOZXh0KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAg
ICByZXR1cm4gdWJya19uZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVy
YXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrUHJldmlvdXMoVGV4dEJyZWFrSXRlcmF0b3IqIGl0
ZXJhdG9yKQotewotICAgIHJldHVybiB1YnJrX3ByZXZpb3VzKHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQotCi1pbnQgdGV4dEJyZWFrUHJlY2VkaW5nKFRl
eHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvcykKLXsKLSAgICByZXR1cm4gdWJya19w
cmVjZWRpbmcocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9z
KTsKLX0KLQotaW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0
b3IsIGludCBwb3MpCi17Ci0gICAgcmV0dXJuIHVicmtfZm9sbG93aW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvciksIHBvcyk7Ci19Ci0KLWludCB0ZXh0QnJlYWtD
dXJyZW50KFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvcikKLXsKLSAgICByZXR1cm4gdWJya19j
dXJyZW50KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihpdGVyYXRvcikpOwotfQot
Ci1ib29sIGlzVGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyYXRvciwgaW50IHBvc2l0
aW9uKQotewotICAgIHJldHVybiB1YnJrX2lzQm91bmRhcnkocmVpbnRlcnByZXRfY2FzdDxVQnJl
YWtJdGVyYXRvcio+KGl0ZXJhdG9yKSwgcG9zaXRpb24pOwotfQotCi1ib29sIGlzV29yZFRleHRC
cmVhayhUZXh0QnJlYWtJdGVyYXRvciogaXRlcmF0b3IpCi17Ci0gICAgaW50IHJ1bGVTdGF0dXMg
PSB1YnJrX2dldFJ1bGVTdGF0dXMocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KGl0
ZXJhdG9yKSk7Ci0gICAgcmV0dXJuIHJ1bGVTdGF0dXMgIT0gVUJSS19XT1JEX05PTkU7Ci19Ci0K
LXVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nJiBzKQotewotICAgIHVu
c2lnbmVkIHN0cmluZ0xlbmd0aCA9IHMubGVuZ3RoKCk7Ci0gICAgCi0gICAgaWYgKCFzdHJpbmdM
ZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIG9ubHkgTGF0aW4tMSBFeHRl
bmRlZCBHcmFwaGVtZSBDbHVzdGVyIGlzIENSIExGCi0gICAgaWYgKHMuaXM4Qml0KCkgJiYgIXMu
Y29udGFpbnMoJ1xyJykpCi0gICAgICAgIHJldHVybiBzdHJpbmdMZW5ndGg7Ci0KLSAgICBOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHMpOwotICAgIGlmICghaXQpCi0gICAgICAg
IHJldHVybiBzdHJpbmdMZW5ndGg7Ci0KLSAgICB1bnNpZ25lZCBudW0gPSAwOwotICAgIHdoaWxl
ICh0ZXh0QnJlYWtOZXh0KGl0KSAhPSBUZXh0QnJlYWtEb25lKQotICAgICAgICArK251bTsKLSAg
ICByZXR1cm4gbnVtOwotfQotCi11bnNpZ25lZCBudW1DaGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0
ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHMsIHVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMpCi17
Ci0gICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gcy5sZW5ndGgoKTsKLQotICAgIGlmICghc3Ry
aW5nTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRoZSBvbmx5IExhdGluLTEg
RXh0ZW5kZWQgR3JhcGhlbWUgQ2x1c3RlciBpcyBDUiBMRgotICAgIGlmIChzLmlzOEJpdCgpICYm
ICFzLmNvbnRhaW5zKCdccicpKQotICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3Ro
LCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsKLQotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IgaXQocyk7Ci0gICAgaWYgKCFpdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmlu
Z0xlbmd0aCwgbnVtR3JhcGhlbWVDbHVzdGVycyk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtR3JhcGhlbWVDbHVzdGVyczsgKytpKSB7Ci0gICAgICAgIGlmICh0ZXh0QnJlYWtO
ZXh0KGl0KSA9PSBUZXh0QnJlYWtEb25lKQotICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0
aDsKLSAgICB9Ci0gICAgcmV0dXJuIHRleHRCcmVha0N1cnJlbnQoaXQpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRC
cmVha0l0ZXJhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMWMyMzUwYjQ3
NjdkNmNlMWMzNGRlMmMzNGMyMmQ0MzUyMmM1OGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTGFycyBLbm9sbCA8bGFyc0B0cm9sbHRlY2guY29tPgotICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICov
Ci0KLSNpZm5kZWYgVGV4dEJyZWFrSXRlcmF0b3JfaAotI2RlZmluZSBUZXh0QnJlYWtJdGVyYXRv
cl9oCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGV4dEJy
ZWFrSXRlcmF0b3I7Ci0KLS8vIE5vdGU6IFRoZSByZXR1cm5lZCBpdGVyYXRvciBpcyBnb29kIG9u
bHkgdW50aWwgeW91IGdldCBhbm90aGVyIGl0ZXJhdG9yLCB3aXRoIHRoZSBleGNlcHRpb24gb2Yg
YWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yLgotCi1lbnVtIExpbmVCcmVha0l0ZXJhdG9yTW9kZSB7
Ci0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQsCi0gICAgTGluZUJyZWFrSXRlcmF0b3JN
b2RlVUFYMTRMb29zZSwKLSAgICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNE5vcm1hbCwKLSAg
ICBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNFN0cmljdCwKLX07Ci0KLS8vIFRoaXMgaXMgc2lt
aWxhciB0byBjaGFyYWN0ZXIgYnJlYWsgaXRlcmF0b3IgaW4gbW9zdCBjYXNlcywgYnV0IGlzIHN1
YmplY3QgdG8KLS8vIHBsYXRmb3JtIFVJIGNvbnZlbnRpb25zLiBPbmUgbm90YWJsZSBleGFtcGxl
IHdoZXJlIHRoaXMgY2FuIGJlIGRpZmZlcmVudAotLy8gZnJvbSBjaGFyYWN0ZXIgYnJlYWsgaXRl
cmF0b3IgaXMgVGhhaSBwcmVwZW5kIGNoYXJhY3RlcnMsIHNlZSBidWcgMjQzNDIuCi0vLyBVc2Ug
dGhpcyBmb3IgaW5zZXJ0aW9uIHBvaW50IGFuZCBzZWxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KLVRl
eHRCcmVha0l0ZXJhdG9yKiBjdXJzb3JNb3ZlbWVudEl0ZXJhdG9yKFN0cmluZ1ZpZXcpOwotCi1U
ZXh0QnJlYWtJdGVyYXRvciogd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyk7Ci1UZXh0QnJl
YWtJdGVyYXRvciogc2VudGVuY2VCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOwotCi1XRUJDT1JF
X0VYUE9SVCBUZXh0QnJlYWtJdGVyYXRvciogYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKFN0cmlu
Z1ZpZXcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBjb25zdCBVQ2hhciogcHJpb3JDb250
ZXh0LCB1bnNpZ25lZCBwcmlvckNvbnRleHRMZW5ndGgsIExpbmVCcmVha0l0ZXJhdG9yTW9kZSwg
Ym9vbCBpc0NKSyk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHJlbGVhc2VMaW5lQnJlYWtJdGVyYXRv
cihUZXh0QnJlYWtJdGVyYXRvciopOwotVGV4dEJyZWFrSXRlcmF0b3IqIG9wZW5MaW5lQnJlYWtJ
dGVyYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2Rl
LCBib29sIGlzQ0pLKTsKLXZvaWQgY2xvc2VMaW5lQnJlYWtJdGVyYXRvcihUZXh0QnJlYWtJdGVy
YXRvciomKTsKLQotaW50IHRleHRCcmVha0ZpcnN0KFRleHRCcmVha0l0ZXJhdG9yKik7Ci1pbnQg
dGV4dEJyZWFrTGFzdChUZXh0QnJlYWtJdGVyYXRvciopOwotaW50IHRleHRCcmVha05leHQoVGV4
dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0QnJlYWtQcmV2aW91cyhUZXh0QnJlYWtJdGVyYXRv
ciopOwotaW50IHRleHRCcmVha0N1cnJlbnQoVGV4dEJyZWFrSXRlcmF0b3IqKTsKLWludCB0ZXh0
QnJlYWtQcmVjZWRpbmcoVGV4dEJyZWFrSXRlcmF0b3IqLCBpbnQpOwotV0VCQ09SRV9FWFBPUlQg
aW50IHRleHRCcmVha0ZvbGxvd2luZyhUZXh0QnJlYWtJdGVyYXRvciosIGludCk7Ci1ib29sIGlz
VGV4dEJyZWFrKFRleHRCcmVha0l0ZXJhdG9yKiwgaW50KTsKLWJvb2wgaXNXb3JkVGV4dEJyZWFr
KFRleHRCcmVha0l0ZXJhdG9yKik7Ci0KLWNvbnN0IGludCBUZXh0QnJlYWtEb25lID0gLTE7Ci0K
LVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDSktMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJik7Ci0K
LWNsYXNzIExhenlMaW5lQnJlYWtJdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgTGF6eUxpbmVCcmVh
a0l0ZXJhdG9yKCkKLSAgICAgICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCi0gICAgICAgICwgbV9j
YWNoZWRQcmlvckNvbnRleHQobnVsbHB0cikKLSAgICAgICAgLCBtX21vZGUoTGluZUJyZWFrSXRl
cmF0b3JNb2RlVUFYMTQpCi0gICAgICAgICwgbV9jYWNoZWRQcmlvckNvbnRleHRMZW5ndGgoMCkK
LSAgICAgICAgLCBtX2lzQ0pLKGZhbHNlKQotICAgIHsKLSAgICAgICAgcmVzZXRQcmlvckNvbnRl
eHQoKTsKLSAgICB9Ci0KLSAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IoU3RyaW5nIHN0cmluZywg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBBdG9taWNTdHJpbmcoKSwgTGluZUJyZWFrSXRl
cmF0b3JNb2RlIG1vZGUgPSBMaW5lQnJlYWtJdGVyYXRvck1vZGVVQVgxNCkKLSAgICAgICAgOiBt
X3N0cmluZyhzdHJpbmcpCi0gICAgICAgICwgbV9sb2NhbGUobG9jYWxlKQotICAgICAgICAsIG1f
aXRlcmF0b3IobnVsbHB0cikKLSAgICAgICAgLCBtX2NhY2hlZFByaW9yQ29udGV4dChudWxscHRy
KQotICAgICAgICAsIG1fbW9kZShtb2RlKQotICAgICAgICAsIG1fY2FjaGVkUHJpb3JDb250ZXh0
TGVuZ3RoKDApCi0gICAgewotICAgICAgICByZXNldFByaW9yQ29udGV4dCgpOwotICAgICAgICBt
X2lzQ0pLID0gaXNDSktMb2NhbGUobG9jYWxlKTsKLSAgICB9Ci0KLSAgICB+TGF6eUxpbmVCcmVh
a0l0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2l0ZXJhdG9yKQotICAgICAgICAgICAg
cmVsZWFzZUxpbmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOwotICAgIH0KLQotICAgIFN0cmlu
ZyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIGJvb2wgaXNMb29zZUNK
S01vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ0pLICYmIG1fbW9kZSA9PSBMaW5lQnJlYWtJdGVy
YXRvck1vZGVVQVgxNExvb3NlOyB9Ci0KLSAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNv
bnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9s
ZW5ndGgpOwotICAgICAgICByZXR1cm4gbV9wcmlvckNvbnRleHRbMV07Ci0gICAgfQotCi0gICAg
VUNoYXIgc2Vjb25kVG9MYXN0Q2hhcmFjdGVyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIENPTVBJ
TEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRleHQpID09IDIsIFRleHRCcmVh
a0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5ndGgpOwotICAgICAgICByZXR1
cm4gbV9wcmlvckNvbnRleHRbMF07Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQcmlvckNvbnRleHQo
VUNoYXIgbGFzdCwgVUNoYXIgc2Vjb25kVG9MYXN0KQotICAgIHsKLSAgICAgICAgQ09NUElMRV9B
U1NFUlQoV1RGX0FSUkFZX0xFTkdUSChtX3ByaW9yQ29udGV4dCkgPT0gMiwgVGV4dEJyZWFrSXRl
cmF0b3JfdW5leHBlY3RlZF9wcmlvcl9jb250ZXh0X2xlbmd0aCk7Ci0gICAgICAgIG1fcHJpb3JD
b250ZXh0WzBdID0gc2Vjb25kVG9MYXN0OwotICAgICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxh
c3Q7Ci0gICAgfQotCi0gICAgdm9pZCB1cGRhdGVQcmlvckNvbnRleHQoVUNoYXIgbGFzdCkKLSAg
ICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9wcmlvckNvbnRl
eHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29udGV4dF9sZW5n
dGgpOwotICAgICAgICBtX3ByaW9yQ29udGV4dFswXSA9IG1fcHJpb3JDb250ZXh0WzFdOwotICAg
ICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IGxhc3Q7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldFBy
aW9yQ29udGV4dCgpCi0gICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChXVEZfQVJSQVlfTEVO
R1RIKG1fcHJpb3JDb250ZXh0KSA9PSAyLCBUZXh0QnJlYWtJdGVyYXRvcl91bmV4cGVjdGVkX3By
aW9yX2NvbnRleHRfbGVuZ3RoKTsKLSAgICAgICAgbV9wcmlvckNvbnRleHRbMF0gPSAwOwotICAg
ICAgICBtX3ByaW9yQ29udGV4dFsxXSA9IDA7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgcHJpb3JD
b250ZXh0TGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHByaW9yQ29udGV4
dExlbmd0aCA9IDA7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKFdURl9BUlJBWV9MRU5HVEgobV9w
cmlvckNvbnRleHQpID09IDIsIFRleHRCcmVha0l0ZXJhdG9yX3VuZXhwZWN0ZWRfcHJpb3JfY29u
dGV4dF9sZW5ndGgpOwotICAgICAgICBpZiAobV9wcmlvckNvbnRleHRbMV0pIHsKLSAgICAgICAg
ICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOwotICAgICAgICAgICAgaWYgKG1fcHJpb3JDb250ZXh0
WzBdKQotICAgICAgICAgICAgICAgICsrcHJpb3JDb250ZXh0TGVuZ3RoOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBwcmlvckNvbnRleHRMZW5ndGg7Ci0gICAgfQotCi0gICAgLy8gT2J0YWlu
IHRleHQgYnJlYWsgaXRlcmF0b3IsIHBvc3NpYmx5IHByZXZpb3VzbHkgY2FjaGVkLCB3aGVyZSB0
aGlzIGl0ZXJhdG9yIGlzIChvciBoYXMgYmVlbikKLSAgICAvLyBpbml0aWFsaXplZCB0byB1c2Ug
dGhlIHByZXZpb3VzbHkgc3RvcmVkIHN0cmluZyBhcyB0aGUgcHJpbWFyeSBicmVha2luZyBjb250
ZXh0IGFuZCB1c2luZwotICAgIC8vIHByZXZpb3VzbHkgc3RvcmVkIHByaW9yIGNvbnRleHQgaWYg
bm9uLWVtcHR5LgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBnZXQodW5zaWduZWQgcHJpb3JDb250
ZXh0TGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHByaW9yQ29udGV4dExlbmd0aCA8PSBw
cmlvckNvbnRleHRDYXBhY2l0eSk7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBwcmlvckNvbnRleHQg
PSBwcmlvckNvbnRleHRMZW5ndGggPyAmbV9wcmlvckNvbnRleHRbcHJpb3JDb250ZXh0Q2FwYWNp
dHkgLSBwcmlvckNvbnRleHRMZW5ndGhdIDogMDsKLSAgICAgICAgaWYgKCFtX2l0ZXJhdG9yKSB7
Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gYWNxdWlyZUxpbmVCcmVha0l0ZXJhdG9yKG1fc3Ry
aW5nLCBtX2xvY2FsZSwgcHJpb3JDb250ZXh0LCBwcmlvckNvbnRleHRMZW5ndGgsIG1fbW9kZSwg
bV9pc0NKSyk7Ci0gICAgICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IHByaW9yQ29udGV4
dDsKLSAgICAgICAgICAgIG1fY2FjaGVkUHJpb3JDb250ZXh0TGVuZ3RoID0gcHJpb3JDb250ZXh0
TGVuZ3RoOwotICAgICAgICB9IGVsc2UgaWYgKHByaW9yQ29udGV4dCAhPSBtX2NhY2hlZFByaW9y
Q29udGV4dCB8fCBwcmlvckNvbnRleHRMZW5ndGggIT0gbV9jYWNoZWRQcmlvckNvbnRleHRMZW5n
dGgpIHsKLSAgICAgICAgICAgIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKG1fc3RyaW5n
LCBtX2xvY2FsZSwgbV9tb2RlKTsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5nZXQocHJpb3JD
b250ZXh0TGVuZ3RoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbV9pdGVyYXRvcjsKLSAg
ICB9Ci0KLSAgICB2b2lkIHJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKFN0cmluZyBzdHJp
bmcsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9k
ZSkKLSAgICB7Ci0gICAgICAgIGlmIChtX2l0ZXJhdG9yKQotICAgICAgICAgICAgcmVsZWFzZUxp
bmVCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IpOwotICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsK
LSAgICAgICAgbV9sb2NhbGUgPSBsb2NhbGU7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBudWxscHRy
OwotICAgICAgICBtX2NhY2hlZFByaW9yQ29udGV4dCA9IG51bGxwdHI7Ci0gICAgICAgIG1fbW9k
ZSA9IG1vZGU7Ci0gICAgICAgIG1faXNDSksgPSBpc0NKS0xvY2FsZShsb2NhbGUpOwotICAgICAg
ICBtX2NhY2hlZFByaW9yQ29udGV4dExlbmd0aCA9IDA7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcmlvckNvbnRleHRDYXBhY2l0eSA9IDI7Ci0gICAgU3Ry
aW5nIG1fc3RyaW5nOwotICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKLSAgICBUZXh0QnJlYWtJ
dGVyYXRvciogbV9pdGVyYXRvcjsKLSAgICBjb25zdCBVQ2hhciogbV9jYWNoZWRQcmlvckNvbnRl
eHQ7Ci0gICAgTGluZUJyZWFrSXRlcmF0b3JNb2RlIG1fbW9kZTsKLSAgICB1bnNpZ25lZCBtX2Nh
Y2hlZFByaW9yQ29udGV4dExlbmd0aDsKLSAgICBVQ2hhciBtX3ByaW9yQ29udGV4dFtwcmlvckNv
bnRleHRDYXBhY2l0eV07Ci0gICAgYm9vbCBtX2lzQ0pLOwotfTsKLQotLy8gSXRlcmF0ZXMgb3Zl
ciAiZXh0ZW5kZWQgZ3JhcGhlbWUgY2x1c3RlcnMiLCBhcyBkZWZpbmVkIGluIFVBWCAjMjkuCi0v
LyBOb3RlIHRoYXQgcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIG1heSBiZSBsZXNzIHNvcGhpc3Rp
Y2F0ZWQgLSBlLmcuIElDVSBwcmlvciB0bwotLy8gdmVyc2lvbiA0LjAgb25seSBzdXBwb3J0cyAi
bGVnYWN5IGdyYXBoZW1lIGNsdXN0ZXJzIi4KLS8vIFVzZSB0aGlzIGZvciBnZW5lcmFsIHRleHQg
cHJvY2Vzc2luZywgZS5nLiBzdHJpbmcgdHJ1bmNhdGlvbi4KLQotY2xhc3MgTm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcik7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpOwotCi0gICAgb3BlcmF0b3Ig
VGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQotCi1wcml2
YXRlOgotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBtX2l0ZXJhdG9yOwotfTsKLQotLy8gQ291bnRz
IHRoZSBudW1iZXIgb2YgZ3JhcGhlbWUgY2x1c3RlcnMuIEEgc3Vycm9nYXRlIHBhaXIgb3IgYSBz
ZXF1ZW5jZQotLy8gb2YgYSBub24tY29tYmluaW5nIGNoYXJhY3RlciBhbmQgZm9sbG93aW5nIGNv
bWJpbmluZyBjaGFyYWN0ZXJzIGlzCi0vLyBjb3VudGVkIGFzIDEgZ3JhcGhlbWUgY2x1c3Rlci4K
LXVuc2lnbmVkIG51bUdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nJik7Ci0vLyBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3aGljaCB3aWxsIGJlIGxlc3MgdGhhbiBvciBlcXVh
bCB0bwotLy8gdGhlIHNwZWNpZmllZCBncmFwaGVtZSBjbHVzdGVyIGxlbmd0aC4KLXVuc2lnbmVk
IG51bUNoYXJhY3RlcnNJbkdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYsIHVuc2ln
bmVkKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDY4YjcwMDNjMzVmZDIxZWE2YWEyMTk5MzVlN2EyODk5YTI2NWFkN2Eu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVV9oCi0jZGVmaW5lIFRleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VfaAotCi0v
LyBGSVhNRTogTm93IHRoYXQgdGhpcyBoYW5kbGVzIGxvY2FsZXMgZm9yIElDVSwgbm90IGp1c3Qg
Zm9yIHRleHQgYnJlYWtpbmcsCi0vLyB0aGlzIGZpbGUgYW5kIHRoZSB2YXJpb3VzIGltcGxlbWVu
dGF0aW9uIGZpbGVzIHNob3VsZCBiZSByZW5hbWVkLgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LSAgICBjb25zdCBjaGFyKiBjdXJyZW50U2VhcmNoTG9jYWxlSUQoKTsKLSAgICBjb25zdCBjaGFy
KiBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDllMzQz
YzAyOTE3NWRlZTU0YTM1NGQ3ZDUyODI2M2I5NDBlNDdiZDEuLmM0MGU2MjI3M2UwMzQ4MmM1MWRl
M2RkMTllMTI0NjgyMjE3MjUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtMjcsMTMgKzI3LDEzIEBACiAjaW5jbHVkZSAi
SHlwaGVuYXRpb24uaCIKIAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1UuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIFRpbnlMUlVDYWNoZVBvbGljeTxBdG9t
aWNTdHJpbmcsIFJldGFpblB0cjxDRkxvY2FsZVJlZj4+CkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIC8vIENGIGh5cGhlbmF0aW9uIGZ1bmN0aW9ucyB1c2UgbG9jYWxl
IChyZWdpb25hbCBmb3JtYXRzKSBsYW5ndWFnZSwgd2hpY2ggZG9lc24ndCBuZWNlc3NhcmlseSBt
YXRjaCBwcmltYXJ5IFVJIGxhbmd1YWdlLAogICAgICAgICAvLyBzbyB3ZSBjYW4ndCB1c2UgZGVm
YXVsdCBsb2NhbGUgaGVyZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNDg5NzY2ND4uCi0gICAgICAg
IFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBkZWZhdWx0TGFuZ3VhZ2UoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKSk7CisgICAgICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihD
RkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBXZWJDb3JlOjpkZWZhdWx0TGFuZ3Vh
Z2UoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAgICAgICAgIHJldHVybiBDRlN0cmluZ0lz
SHlwaGVuYXRpb25BdmFpbGFibGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IG51
bGxwdHI7CiAgICAgfQogCkBAIC02NSw2ICs2NSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8g
bG9jYWxlIDogbnVsbHB0cjsKICAgICB9CiB9OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGJvb2wgY2FuSHlwaGVuYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZWZsL1RleHRCcmVh
a0l0ZXJhdG9ySW50ZXJuYWxJQ1VFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwNTY4NjlmMTQ1ZGQ3NjgxZGZlYmI2ODg4OTViYzE5NTUxZTEzYmMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9lZmwvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUVmbC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
MCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0
IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB1
c2Ugc3lzdGVtIGxvY2FsZS4KLSAgICByZXR1cm4gIiI7Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJl
bnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgcmV0dXJuICJlbl91cyI7Ci19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tl
ckVuY2hhbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRD
aGVja2VyRW5jaGFudC5jcHAKaW5kZXggNDdmNTZmMDhiMzU0ODJjYWUwNjRkNGZiMTk0MmNhZTVj
OGFiMDcyMC4uNDExYzgwNjE0ZTI2N2NmYzUxMWZmYWRiMGE5NTM2MWM4MWI1NDkzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRDaGVja2VyRW5j
aGFudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9lbmNoYW50L1RleHRD
aGVja2VyRW5jaGFudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIAogI2luY2x1ZGUgPExhbmd1YWdl
Lmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHRleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvZ3Rr
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUd0ay5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZTVhMDVmYTQ5MTk1ZmIzMGJmNjlkZWQ1NjJkNTQz
YjhiNjEwMTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVUd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2FsZUlEKCkKLXsKLSAg
ICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAiIjsKLX0K
LQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsKLSAgICAvLyBGSVhN
RTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJldHVybiAiZW5fdXMiOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5h
dGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9I
eXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggMTZhNTQwYzkxNzgyZmQxN2Q5ZGNmYWEyMDAw
ODY1OTAyMWE3OTNkYS4uYjI4MWRkODVkMTQzODBjODJlNDQwOGRiMWMyYjE2ZDFjZjM1YjIwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVu
L0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtMTY2LDEzICsxNjYsMTcgQEAgcHJpdmF0ZToK
ICAgICBIeXBoZW5EaWN0VW5pcXVlUHRyIG1fbGliaHlwaGVuRGljdGlvbmFyeTsKIH07CiAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKIHRlbXBsYXRlPD4KLWNs
YXNzIFRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNTdHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRp
Y3Rpb25hcnk+PgorY2xhc3MgVGlueUxSVUNhY2hlUG9saWN5PEF0b21pY1N0cmluZywgUmVmUHRy
PFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4+CiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFRpbnlMUlVDYWNoZTxBdG9taWNTdHJpbmcsIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+
PiYgY2FjaGUoKQorICAgIHN0YXRpYyBUaW55TFJVQ2FjaGU8QXRvbWljU3RyaW5nLCBSZWZQdHI8
V2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5Pj4mIGNhY2hlKCkKICAgICB7Ci0gICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8QXRvbWljU3RyaW5nLCBSZWZQdHI8
SHlwaGVuYXRpb25EaWN0aW9uYXJ5Pj4+IGNhY2hlOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlueUxSVUNhY2hlPEF0b21pY1N0cmluZywgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0
aW9uRGljdGlvbmFyeT4+PiBjYWNoZTsKICAgICAgICAgcmV0dXJuIGNhY2hlOwogICAgIH0KIApA
QCAtMTgxLDE3ICsxODUsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbG9jYWxlSWRlbnRp
Zmllci5pc051bGwoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEh5cGhlbmF0aW9uRGlj
dGlvbmFyeT4gY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNv
cmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3JlYXRlVmFsdWVGb3JOdWxsS2V5KCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZU51bGwoKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlTnVsbCgp
OwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVh
dGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGRpY3Rpb25hcnlQYXRoKQorICAgIHN0
YXRpYyBSZWZQdHI8V2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVWYWx1ZUZv
cktleShjb25zdCBBdG9taWNTdHJpbmcmIGRpY3Rpb25hcnlQYXRoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIEh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CiAgICAgfQogfTsKIAorfSAvLyBuYW1l
c3BhY2UgV1RGCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogc3RhdGljIHZvaWQgY291bnRMZWFk
aW5nU3BhY2VzKGNvbnN0IENTdHJpbmcmIHV0ZjhTdHJpbmcsIGludDMyX3QmIHBvaW50ZXJPZmZz
ZXQsIGludDMyX3QmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBwb2ludGVyT2Zmc2V0ID0gMDsK
QEAgLTIzMyw3ICsyNDEsNyBAQCBzaXplX3QgbGFzdEh5cGhlbkxvY2F0aW9uKFN0cmluZ1ZpZXcg
c3RyaW5nLCBzaXplX3QgYmVmb3JlSW5kZXgsIGNvbnN0IEF0b21pY1N0cgogICAgIFN0cmluZyBs
b3dlcmNhc2VMb2NhbGVJZGVudGlmaWVyID0gQXRvbWljU3RyaW5nKGxvY2FsZUlkZW50aWZpZXIu
c3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgQVNTRVJUKGF2YWlsYWJs
ZUxvY2FsZXMoKS5jb250YWlucyhsb3dlcmNhc2VMb2NhbGVJZGVudGlmaWVyKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBkaWN0aW9uYXJ5UGF0aCA6IGF2YWlsYWJsZUxvY2FsZXMoKS5nZXQobG93
ZXJjYXNlTG9jYWxlSWRlbnRpZmllcikpIHsKLSAgICAgICAgUmVmUHRyPEh5cGhlbmF0aW9uRGlj
dGlvbmFyeT4gZGljdGlvbmFyeSA9IFRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNTdHJpbmcsIFJl
ZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRvbWljU3RyaW5nKGRp
Y3Rpb25hcnlQYXRoKSk7CisgICAgICAgIFJlZlB0cjxIeXBoZW5hdGlvbkRpY3Rpb25hcnk+IGRp
Y3Rpb25hcnkgPSBXVEY6OlRpbnlMUlVDYWNoZVBvbGljeTxBdG9taWNTdHJpbmcsIFJlZlB0cjxI
eXBoZW5hdGlvbkRpY3Rpb25hcnk+Pjo6Y2FjaGUoKS5nZXQoQXRvbWljU3RyaW5nKGRpY3Rpb25h
cnlQYXRoKSk7CiAKICAgICAgICAgY2hhcioqIHJlcGxhY2VtZW50cyA9IG51bGxwdHI7CiAgICAg
ICAgIGludCogcG9zaXRpb25zID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGZkYWVlODFlNjA3ZTY3NTQzYmY2N2ZlODY1MzJhYjUzNWJmN2IyYzAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVUZXh0
UHJvdmlkZXIuaCIKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIFJlbG9jYXRlIHBvaW50ZXIgZnJvbSBzb3VyY2UgaW50byBkZXN0aW5hdGlvbiBhcyBy
ZXF1aXJlZC4KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaXhQb2ludGVyKGNvbnN0IFVUZXh0KiBzb3Vy
Y2UsIFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZComIHBvaW50ZXIpCi17Ci0gICAgaWYg
KHBvaW50ZXIgPj0gc291cmNlLT5wRXh0cmEgJiYgcG9pbnRlciA8IHN0YXRpY19jYXN0PGNoYXIq
Pihzb3VyY2UtPnBFeHRyYSkgKyBzb3VyY2UtPmV4dHJhU2l6ZSkgewotICAgICAgICAvLyBQb2lu
dGVyIHJlZmVyZW5jZXMgc291cmNlIGV4dHJhIGJ1ZmZlci4KLSAgICAgICAgcG9pbnRlciA9IHN0
YXRpY19jYXN0PGNoYXIqPihkZXN0aW5hdGlvbi0+cEV4dHJhKSArIChzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4ocG9pbnRlcikgLSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLT5wRXh0
cmEpKTsKLSAgICB9IGVsc2UgaWYgKHBvaW50ZXIgPj0gc291cmNlICYmIHBvaW50ZXIgPCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzb3VyY2UpICsgc291cmNlLT5zaXplT2ZTdHJ1Y3Qp
IHsKLSAgICAgICAgLy8gUG9pbnRlciByZWZlcmVuY2VzIHNvdXJjZSB0ZXh0IHN0cnVjdHVyZSwg
YnV0IG5vdCBzb3VyY2UgZXh0cmEgYnVmZmVyLgotICAgICAgICBwb2ludGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oZGVzdGluYXRpb24pICsgKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihw
b2ludGVyKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZSkpOwotICAgIH0K
LX0KLQotVVRleHQqIHVUZXh0Q2xvbmVJbXBsKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRl
eHQqIHNvdXJjZSwgVUJvb2wgZGVlcCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIEFTU0VS
VF9VTlVTRUQoZGVlcCwgIWRlZXApOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGludDMyX3QgZXh0cmFTaXplID0gc291cmNlLT5leHRy
YVNpemU7Ci0gICAgZGVzdGluYXRpb24gPSB1dGV4dF9zZXR1cChkZXN0aW5hdGlvbiwgZXh0cmFT
aXplLCBzdGF0dXMpOwotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVy
biBkZXN0aW5hdGlvbjsKLSAgICB2b2lkKiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7
Ci0gICAgaW50MzJfdCBmbGFncyA9IGRlc3RpbmF0aW9uLT5mbGFnczsKLSAgICBpbnQgc2l6ZVRv
Q29weSA9IHN0ZDo6bWluKHNvdXJjZS0+c2l6ZU9mU3RydWN0LCBkZXN0aW5hdGlvbi0+c2l6ZU9m
U3RydWN0KTsKLSAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgc2l6ZVRvQ29weSk7Ci0g
ICAgZGVzdGluYXRpb24tPnBFeHRyYSA9IGV4dHJhTmV3OwotICAgIGRlc3RpbmF0aW9uLT5mbGFn
cyA9IGZsYWdzOwotICAgIG1lbWNweShkZXN0aW5hdGlvbi0+cEV4dHJhLCBzb3VyY2UtPnBFeHRy
YSwgZXh0cmFTaXplKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uLT5jb250ZXh0KTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRl
c3RpbmF0aW9uLT5wKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uLT5xKTsKLSAgICBBU1NFUlQoIWRlc3RpbmF0aW9uLT5yKTsKLSAgICBjb25zdCB2b2lk
KiBjaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRlc3RpbmF0aW9uLT5j
aHVua0NvbnRlbnRzKTsKLSAgICBmaXhQb2ludGVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNodW5r
Q29udGVudHMpOwotICAgIGRlc3RpbmF0aW9uLT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVUNoYXIqPihjaHVua0NvbnRlbnRzKTsKLSAgICByZXR1cm4gZGVzdGluYXRpb247Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaWN1L1VUZXh0UHJvdmlkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzI1NGZjNGM3Y2UyMzU5NDQyYzY3ZmFiZjE4YjVlZjZhYjFjNDNhNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgVVRleHRQcm92aWRlcl9oCi0jZGVmaW5lIFVUZXh0UHJvdmlk
ZXJfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4dC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWVudW0gY2xhc3MgVVRleHRQcm92aWRlckNvbnRleHQgewotICAgIE5vQ29udGV4dCwKLSAg
ICBQcmlvckNvbnRleHQsCi0gICAgUHJpbWFyeUNvbnRleHQKLX07Ci0KLWlubGluZSBVVGV4dFBy
b3ZpZGVyQ29udGV4dCB1VGV4dFByb3ZpZGVyQ29udGV4dChjb25zdCBVVGV4dCogdGV4dCwgaW50
NjRfdCBuYXRpdmVJbmRleCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpZiAoIXRleHQtPmIgfHwg
bmF0aXZlSW5kZXggPiB0ZXh0LT5iKQotICAgICAgICByZXR1cm4gVVRleHRQcm92aWRlckNvbnRl
eHQ6OlByaW1hcnlDb250ZXh0OwotICAgIGlmIChuYXRpdmVJbmRleCA9PSB0ZXh0LT5iKQotICAg
ICAgICByZXR1cm4gZm9yd2FyZCA/IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4
dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci0gICAgcmV0dXJuIFVUZXh0
UHJvdmlkZXJDb250ZXh0OjpQcmlvckNvbnRleHQ7Ci19Ci0KLWlubGluZSB2b2lkIGluaXRpYWxp
emVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKFVUZXh0KiB0ZXh0LCBjb25zdCBVVGV4dEZ1bmNz
KiBmdW5jcywgY29uc3Qgdm9pZCogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFVDaGFy
KiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgpCi17Ci0gICAgdGV4dC0+cEZ1
bmNzID0gZnVuY3M7Ci0gICAgdGV4dC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gMSA8PCBVVEVYVF9Q
Uk9WSURFUl9TVEFCTEVfQ0hVTktTOwotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0gICAg
dGV4dC0+cCA9IHN0cmluZzsKLSAgICB0ZXh0LT5hID0gbGVuZ3RoOwotICAgIHRleHQtPnEgPSBw
cmlvckNvbnRleHQ7Ci0gICAgdGV4dC0+YiA9IHByaW9yQ29udGV4dExlbmd0aDsKLX0KLQotLy8g
U2hhcmVkIGltcGxlbWVudGF0aW9uIGZvciB0aGUgVVRleHRDbG9uZSBmdW5jdGlvbiBvbiBVVGV4
dEZ1bmNzLgotCi1VVGV4dCogdVRleHRDbG9uZUltcGwoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25z
dCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpOwotCi0KLS8v
IEhlbHBlcnMgZm9yIHRoZSBVVGV4dEFjY2VzcyBmdW5jdGlvbiBvbiBVVGV4dEZ1bmNzLgotCi1p
bmxpbmUgaW50NjRfdCB1VGV4dEFjY2Vzc1BpbkluZGV4KGludDY0X3QmIGluZGV4LCBpbnQ2NF90
IGxpbWl0KQotewotICAgIGlmIChpbmRleCA8IDApCi0gICAgICAgIGluZGV4ID0gMDsKLSAgICBl
bHNlIGlmIChpbmRleCA+IGxpbWl0KQotICAgICAgICBpbmRleCA9IGxpbWl0OwotICAgIHJldHVy
biBpbmRleDsKLX0KLQotaW5saW5lIGJvb2wgdVRleHRBY2Nlc3NJbkNodW5rT3JPdXRPZlJhbmdl
KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2ZUxlbmd0aCwg
VUJvb2wgZm9yd2FyZCwgVUJvb2wmIGlzQWNjZXNzaWJsZSkKLXsKLSAgICBpZiAoZm9yd2FyZCkg
ewotICAgICAgICBpZiAobmF0aXZlSW5kZXggPj0gdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAmJiBu
YXRpdmVJbmRleCA8IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKLSAgICAgICAgICAgIGludDY0
X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgICAg
ICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21wdXRlZCBv
ZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICAgICAgICAgIHRleHQt
PmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKLSAgICAgICAgICAgIGlzQWNj
ZXNzaWJsZSA9IFRSVUU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAobmF0aXZlSW5kZXggPj0gbmF0aXZlTGVuZ3RoICYmIHRleHQtPmNodW5rTmF0aXZl
TGltaXQgPT0gbmF0aXZlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9
IHRleHQtPmNodW5rTGVuZ3RoOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0gRkFMU0U7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChuYXRpdmVJbmRleCA+IHRleHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXgg
PD0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCkgewotICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQg
PSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgICAgICAgICAvLyBF
bnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZm9ybWVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNl
ZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZz
ZXQgPSBvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRp
Y19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOwotICAgICAgICAgICAgaXNBY2Nlc3NpYmxlID0g
VFJVRTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChu
YXRpdmVJbmRleCA8PSAwICYmICF0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAg
ICB0ZXh0LT5jaHVua09mZnNldCA9IDA7Ci0gICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBGQUxT
RTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQ
cm92aWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9V
VGV4dFByb3ZpZGVyTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaWN1
L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
ZDY4NTJjNzFlNTVlZjk3Y2EwYjBiYTFjZmY4ODBiOTk3MGY3M2M1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvaWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzk0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQ
cm92aWRlckxhdGluMS5oIgotCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlci5oIgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBMYXRp
bjEgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dExhdGluMUNsb25lKFVUZXh0KiwgY29u
c3QgVVRleHQqLCBVQm9vbCwgVUVycm9yQ29kZSopOwotc3RhdGljIGludDY0X3QgdVRleHRMYXRp
bjFOYXRpdmVMZW5ndGgoVVRleHQqKTsKLXN0YXRpYyBVQm9vbCB1VGV4dExhdGluMUFjY2VzcyhV
VGV4dCosIGludDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0TGF0aW4xRXh0cmFj
dChVVGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSop
Owotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFNYXBPZmZzZXRUb05hdGl2ZShjb25zdCBVVGV4
dCopOwotc3RhdGljIGludDMyX3QgdVRleHRMYXRpbjFNYXBOYXRpdmVJbmRleFRvVVRGMTYoY29u
c3QgVVRleHQqLCBpbnQ2NF90KTsKLXN0YXRpYyB2b2lkIHVUZXh0TGF0aW4xQ2xvc2UoVVRleHQq
KTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHVUZXh0TGF0aW4xRnVuY3MgPSB7
Ci0gICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAgIDAsCi0gICAgMCwKLSAgICAwLAotICAgIHVU
ZXh0TGF0aW4xQ2xvbmUsCi0gICAgdVRleHRMYXRpbjFOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRM
YXRpbjFBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAg
bnVsbHB0ciwKLSAgICB1VGV4dExhdGluMU1hcE9mZnNldFRvTmF0aXZlLAotICAgIHVUZXh0TGF0
aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2LAotICAgIHVUZXh0TGF0aW4xQ2xvc2UsCi0gICAgbnVs
bHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIKLX07Ci0KLXN0YXRpYyBVVGV4dCogdVRl
eHRMYXRpbjFDbG9uZShVVGV4dCogZGVzdGluYXRpb24sIGNvbnN0IFVUZXh0KiBzb3VyY2UsIFVC
b29sIGRlZXAsIFVFcnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGRlZXAs
ICFkZWVwKTsKLQotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgVVRleHQqIHJlc3VsdCA9IHV0ZXh0X3NldHVwKGRlc3RpbmF0aW9uLCBzaXplb2Yo
VUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHksIHN0YXR1cyk7Ci0gICAgaWYg
KFVfRkFJTFVSRSgqc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uOwotICAgIAot
ICAgIHJlc3VsdC0+cHJvdmlkZXJQcm9wZXJ0aWVzID0gc291cmNlLT5wcm92aWRlclByb3BlcnRp
ZXM7Ci0gICAgCi0gICAgLy8gUG9pbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24sIGJ1dCB3aXRoIGFu
IGVtcHR5IGJ1ZmZlci4KLSAgICByZXN1bHQtPmNodW5rTmF0aXZlU3RhcnQgPSBzb3VyY2UtPmNo
dW5rTmF0aXZlU3RhcnQ7Ci0gICAgcmVzdWx0LT5jaHVua05hdGl2ZUxpbWl0ID0gc291cmNlLT5j
aHVua05hdGl2ZVN0YXJ0OwotICAgIHJlc3VsdC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KHNvdXJjZS0+Y2h1bmtOYXRpdmVTdGFydCk7Ci0gICAgcmVzdWx0LT5j
aHVua09mZnNldCA9IDA7Ci0gICAgcmVzdWx0LT5jb250ZXh0ID0gc291cmNlLT5jb250ZXh0Owot
ICAgIHJlc3VsdC0+YSA9IHNvdXJjZS0+YTsKLSAgICByZXN1bHQtPnBGdW5jcyA9ICZ1VGV4dExh
dGluMUZ1bmNzOwotICAgIHJlc3VsdC0+Y2h1bmtDb250ZW50cyA9IChVQ2hhciopcmVzdWx0LT5w
RXh0cmE7Ci0gICAgbWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPihyZXN1bHQtPmNodW5rQ29udGVu
dHMpLCAwLCBzaXplb2YoVUNoYXIpICogVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkpOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludDY0X3QgdVRleHRMYXRpbjFOYXRp
dmVMZW5ndGgoVVRleHQqIHVUZXh0KQotewotICAgIHJldHVybiB1VGV4dC0+YTsKLX0KLQotc3Rh
dGljIFVCb29sIHVUZXh0TGF0aW4xQWNjZXNzKFVUZXh0KiB1VGV4dCwgaW50NjRfdCBpbmRleCwg
VUJvb2wgZm9yd2FyZCkKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotCi0gICAg
aWYgKGZvcndhcmQpIHsKLSAgICAgICAgaWYgKGluZGV4IDwgdVRleHQtPmNodW5rTmF0aXZlTGlt
aXQgJiYgaW5kZXggPj0gdVRleHQtPmNodW5rTmF0aXZlU3RhcnQpIHsKLSAgICAgICAgICAgIC8v
IEFscmVhZHkgaW5zaWRlIHRoZSBidWZmZXIuIFNldCB0aGUgbmV3IG9mZnNldC4KLSAgICAgICAg
ICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0gdVRl
eHQtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCAmJiB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1p
dCA9PSBsZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIE9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIs
IGJ1dCB3ZSBjYW4ndCBnZXQgaXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQgPSBz
dGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsKLSAg
ICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChpbmRleCA8PSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAmJiBpbmRleCA+IHVUZXh0LT5j
aHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGluc2lkZSB0aGUgYnVm
ZmVyLiBTZXQgdGhlIG5ldyBvZmZzZXQuCi0gICAgICAgICAgICB1VGV4dC0+Y2h1bmtPZmZzZXQg
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbmRleCAtIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KTsK
LSAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICB9Ci0gICAgICAgIGlmICghaW5kZXgg
JiYgIXVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0KSB7Ci0gICAgICAgICAgICAvLyBBbHJlYWR5IGF0
IHRoZSBiZWdpbm5pbmc7IGNhbid0IGdvIGFueSBmYXJ0aGVyLgotICAgICAgICAgICAgdVRleHQt
PmNodW5rT2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICAKLSAgICBpZiAoZm9yd2FyZCkgewotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRp
dmVTdGFydCA9IGluZGV4OwotICAgICAgICB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IHVUZXh0
LT5jaHVua05hdGl2ZVN0YXJ0ICsgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHk7Ci0gICAg
ICAgIGlmICh1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA+IGxlbmd0aCkKLSAgICAgICAgICAgIHVU
ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID0gbGVuZ3RoOwotCi0gICAgICAgIHVUZXh0LT5jaHVua09m
ZnNldCA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQg
PSBpbmRleDsKLSAgICAgICAgaWYgKHVUZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbGVuZ3RoKQot
ICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBsZW5ndGg7Ci0KLSAgICAgICAg
dVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIFVUZXh0
V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5OwotICAgICAgICBpZiAodVRleHQtPmNodW5rTmF0aXZl
U3RhcnQgPCAwKQotICAgICAgICAgICAgdVRleHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotCi0g
ICAgICAgIHVUZXh0LT5jaHVua09mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KGluZGV4IC0g
dVRleHQtPmNodW5rTmF0aXZlU3RhcnQpOwotICAgIH0KLSAgICB1VGV4dC0+Y2h1bmtMZW5ndGgg
PSBzdGF0aWNfY2FzdDxpbnQzMl90Pih1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHVUZXh0LT5j
aHVua05hdGl2ZVN0YXJ0KTsKLQotICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0
PFVDaGFyKj4odVRleHQtPmNodW5rQ29udGVudHMpLCBzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+
KHVUZXh0LT5jb250ZXh0KSArIHVUZXh0LT5jaHVua05hdGl2ZVN0YXJ0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odVRleHQtPmNodW5rTGVuZ3RoKSk7Ci0KLSAgICB1VGV4dC0+bmF0aXZlSW5kZXhp
bmdMaW1pdCA9IHVUZXh0LT5jaHVua0xlbmd0aDsKLQotICAgIHJldHVybiBUUlVFOwotfQotCi1z
dGF0aWMgaW50MzJfdCB1VGV4dExhdGluMUV4dHJhY3QoVVRleHQqIHVUZXh0LCBpbnQ2NF90IHN0
YXJ0LCBpbnQ2NF90IGxpbWl0LCBVQ2hhciogZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksIFVF
cnJvckNvZGUqIHN0YXR1cykKLXsKLSAgICBpbnQ2NF90IGxlbmd0aCA9IHVUZXh0LT5hOwotICAg
IGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRl
c3RDYXBhY2l0eSA8IDAgfHwgKCFkZXN0ICYmIGRlc3RDYXBhY2l0eSA+IDApKSB7Ci0gICAgICAg
ICpzdGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBsaW1pdCB8fCAobGltaXQgLSBz
dGFydCkgPiBJTlQzMl9NQVgpIHsKLSAgICAgICAgKnN0YXR1cyA9IFVfSU5ERVhfT1VUT0ZCT1VO
RFNfRVJST1I7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdGFydCA+IGxl
bmd0aCkKLSAgICAgICAgc3RhcnQgPSBsZW5ndGg7Ci0gICAgaWYgKGxpbWl0ID4gbGVuZ3RoKQot
ICAgICAgICBsaW1pdCA9IGxlbmd0aDsKLQotICAgIGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7Ci0g
ICAgCi0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRlc3RD
YXBhY2l0eSA+IDAgJiYgIWRlc3QpIHsKLSAgICAgICAgaW50MzJfdCB0cmltbWVkTGVuZ3RoID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKTsKLSAgICAgICAgaWYgKHRyaW1tZWRMZW5ndGgg
PiBkZXN0Q2FwYWNpdHkpCi0gICAgICAgICAgICB0cmltbWVkTGVuZ3RoID0gZGVzdENhcGFjaXR5
OwotCi0gICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhkZXN0LCBzdGF0aWNfY2FzdDxjb25z
dCBMQ2hhcio+KHVUZXh0LT5jb250ZXh0KSArIHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dHJpbW1lZExlbmd0aCkpOwotICAgIH0KLQotICAgIGlmIChsZW5ndGggPCBkZXN0Q2FwYWNpdHkp
IHsKLSAgICAgICAgZGVzdFtsZW5ndGhdID0gMDsKLSAgICAgICAgaWYgKCpzdGF0dXMgPT0gVV9T
VFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORykKLSAgICAgICAgICAgICpzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgfSBlbHNlIGlmIChsZW5ndGggPT0gZGVzdENhcGFjaXR5KQotICAgICAg
ICAqc3RhdHVzID0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsKLSAgICBlbHNlCi0g
ICAgICAgICpzdGF0dXMgPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKLQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpOwotfQotCi1zdGF0aWMgaW50NjRfdCB1VGV4dExh
dGluMU1hcE9mZnNldFRvTmF0aXZlKGNvbnN0IFVUZXh0KiB1VGV4dCkKLXsKLSAgICByZXR1cm4g
dVRleHQtPmNodW5rTmF0aXZlU3RhcnQgKyB1VGV4dC0+Y2h1bmtPZmZzZXQ7Ci19Ci0KLXN0YXRp
YyBpbnQzMl90IHVUZXh0TGF0aW4xTWFwTmF0aXZlSW5kZXhUb1VURjE2KGNvbnN0IFVUZXh0KiB1
VGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHVUZXh0LCB1
VGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA+PSBuYXRpdmVJbmRleCk7Ci0gICAgQVNTRVJUX1VOVVNF
RCh1VGV4dCwgbmF0aXZlSW5kZXggPCB1VGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KG5hdGl2ZUluZGV4KTsKLX0KLQotc3RhdGljIHZvaWQg
dVRleHRMYXRpbjFDbG9zZShVVGV4dCogdVRleHQpCi17Ci0gICAgdVRleHQtPmNvbnRleHQgPSBu
dWxscHRyOwotfQotCi1VVGV4dCogb3BlbkxhdGluMVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVm
ZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwg
VUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAg
ICAgICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1
ZmZlci0+dGV4dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBp
ZiAoVV9GQUlMVVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHRleHQtPmNvbnRleHQgPSBzdHJpbmc7Ci0g
ICAgdGV4dC0+YSA9IGxlbmd0aDsKLSAgICB0ZXh0LT5wRnVuY3MgPSAmdVRleHRMYXRpbjFGdW5j
czsKLSAgICB0ZXh0LT5jaHVua0NvbnRlbnRzID0gKFVDaGFyKil0ZXh0LT5wRXh0cmE7Ci0gICAg
bWVtc2V0KGNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0LT5jaHVua0NvbnRlbnRzKSwgMCwgc2l6ZW9m
KFVDaGFyKSAqIFVUZXh0V2l0aEJ1ZmZlcklubGluZUNhcGFjaXR5KTsKLQotICAgIHJldHVybiB0
ZXh0OwotfQotCi0KLS8vIExhdGluMUNvbnRleHRBd2FyZSBwcm92aWRlcgotCi1zdGF0aWMgVVRl
eHQqIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVC
b29sLCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgaW50NjRfdCB1VGV4dExhdGluMUNvbnRleHRBd2Fy
ZU5hdGl2ZUxlbmd0aChVVGV4dCopOwotc3RhdGljIFVCb29sIHVUZXh0TGF0aW4xQ29udGV4dEF3
YXJlQWNjZXNzKFVUZXh0KiwgaW50NjRfdCwgVUJvb2wpOwotc3RhdGljIGludDMyX3QgdVRleHRM
YXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIq
LCBpbnQzMl90LCBVRXJyb3JDb2RlKik7Ci1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNvbnRleHRB
d2FyZUNsb3NlKFVUZXh0Kik7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgVVRleHRGdW5jcyB0ZXh0
TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MgPSB7Ci0gICAgc2l6ZW9mKFVUZXh0RnVuY3MpLAotICAg
IDAsCi0gICAgMCwKLSAgICAwLAotICAgIHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUsCi0g
ICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVOYXRpdmVMZW5ndGgsCi0gICAgdVRleHRMYXRpbjFD
b250ZXh0QXdhcmVBY2Nlc3MsCi0gICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0LAot
ICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0g
ICAgdVRleHRMYXRpbjFDb250ZXh0QXdhcmVDbG9zZSwKLSAgICBudWxscHRyLAotICAgIG51bGxw
dHIsCi0gICAgbnVsbHB0cgotfTsKLQotc3RhdGljIGlubGluZSBVVGV4dFByb3ZpZGVyQ29udGV4
dCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQoY29uc3QgVVRleHQqIHRl
eHQpCi17Ci0gICAgaWYgKCF0ZXh0LT5jaHVua0NvbnRlbnRzKQotICAgICAgICByZXR1cm4gVVRl
eHRQcm92aWRlckNvbnRleHQ6Ok5vQ29udGV4dDsKLSAgICByZXR1cm4gdGV4dC0+Y2h1bmtDb250
ZW50cyA9PSB0ZXh0LT5wRXh0cmEgPyBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpbWFyeUNvbnRl
eHQgOiBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0OwotfQotCi1zdGF0aWMgdm9p
ZCB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRleHQoVVRleHQqIHRleHQs
IGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3YXJk
KQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnBFeHRyYSk7Ci0g
ICAgaWYgKGZvcndhcmQpIHsKLSAgICAgICAgQVNTRVJUKG5hdGl2ZUluZGV4ID49IHRleHQtPmIg
JiYgbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGgpOwotICAgICAgICB0ZXh0LT5jaHVua05hdGl2
ZVN0YXJ0ID0gbmF0aXZlSW5kZXg7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBu
YXRpdmVJbmRleCArIHRleHQtPmV4dHJhU2l6ZSAvIHNpemVvZihVQ2hhcik7Ci0gICAgICAgIGlm
ICh0ZXh0LT5jaHVua05hdGl2ZUxpbWl0ID4gbmF0aXZlTGVuZ3RoKQotICAgICAgICAgICAgdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAgICB9IGVsc2UgewotICAgICAg
ICBBU1NFUlQobmF0aXZlSW5kZXggPiB0ZXh0LT5iICYmIG5hdGl2ZUluZGV4IDw9IG5hdGl2ZUxl
bmd0aCk7Ci0gICAgICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSBuYXRpdmVJbmRleDsKLSAg
ICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+ZXh0cmFT
aXplIC8gc2l6ZW9mKFVDaGFyKTsKLSAgICAgICAgaWYgKHRleHQtPmNodW5rTmF0aXZlU3RhcnQg
PCB0ZXh0LT5iKQotICAgICAgICAgICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9IHRleHQtPmI7
Ci0gICAgfQotICAgIGludDY0X3QgbGVuZ3RoID0gdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCAtIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNodW5rIGxlbmd0aCBpcyB3ZWxs
IGRlZmluZWQgaWYgY29tcHV0ZWQgbGVuZ3RoIGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAgICBB
U1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOwotICAg
IHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKLSAgICB0ZXh0LT5u
YXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgdGV4dC0+Y2h1bmtP
ZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIFN0cmluZ0ltcGw6
OmNvcHlDaGFycyhjb25zdF9jYXN0PFVDaGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRp
Y19jYXN0PGNvbnN0IExDaGFyKj4odGV4dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAt
IHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKLX0K
LQotc3RhdGljIHZvaWQgdGV4dExhdGluMUNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRl
eHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3Ro
LCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0
ZXh0LT5jaHVua0NvbnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMg
PSBzdGF0aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnBFeHRyYSk7Ci0gICAgdGV4dExhdGlu
MUNvbnRleHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRp
dmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0TGF0aW4xQ29udGV4dEF3
YXJlTW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBp
bnQ2NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+
Y2h1bmtDb250ZW50cyA9PSB0ZXh0LT5xKTsKLSAgICBBU1NFUlQoZm9yd2FyZCA/IG5hdGl2ZUlu
ZGV4IDwgdGV4dC0+YiA6IG5hdGl2ZUluZGV4IDw9IHRleHQtPmIpOwotICAgIEFTU0VSVF9VTlVT
RUQobmF0aXZlTGVuZ3RoLCBmb3J3YXJkID8gbmF0aXZlSW5kZXggPCBuYXRpdmVMZW5ndGggOiBu
YXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIEFTU0VSVF9VTlVTRUQoZm9yd2FyZCwg
Zm9yd2FyZCA/IG5hdGl2ZUluZGV4IDwgbmF0aXZlTGVuZ3RoIDogbmF0aXZlSW5kZXggPD0gbmF0
aXZlTGVuZ3RoKTsKLSAgICB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0ID0gMDsKLSAgICB0ZXh0LT5j
aHVua05hdGl2ZUxpbWl0ID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5jaHVua0xlbmd0aCA9IHRleHQt
PmI7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhpbmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwot
ICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVk
IG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFuZ2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VS
VChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4
dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5j
aHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0
Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRleCwgaW50NjRf
dCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCi17Ci0gICAgQVNTRVJUKCF0ZXh0LT5jaHVu
a0NvbnRlbnRzIHx8IHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cEV4dHJhKTsKLSAgICB0
ZXh0LT5jaHVua0NvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPih0ZXh0LT5xKTsK
LSAgICB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2
ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotfQotCi1zdGF0aWMgVVRleHQqIHVUZXh0
TGF0aW4xQ29udGV4dEF3YXJlQ2xvbmUoVVRleHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCog
c291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVU
ZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBzb3VyY2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0
YXRpYyBpbnQ2NF90IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0
ZXh0KQotewotICAgIHJldHVybiB0ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29s
IHVUZXh0TGF0aW4xQ29udGV4dEF3YXJlQWNjZXNzKFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2
ZUluZGV4LCBVQm9vbCBmb3J3YXJkKQotewotICAgIGlmICghdGV4dC0+Y29udGV4dCkKLSAgICAg
ICAgcmV0dXJuIEZBTFNFOwotICAgIGludDY0X3QgbmF0aXZlTGVuZ3RoID0gdVRleHRMYXRpbjFD
b250ZXh0QXdhcmVOYXRpdmVMZW5ndGgodGV4dCk7Ci0gICAgVUJvb2wgaXNBY2Nlc3NpYmxlOwot
ICAgIGlmICh1VGV4dEFjY2Vzc0luQ2h1bmtPck91dE9mUmFuZ2UodGV4dCwgbmF0aXZlSW5kZXgs
IG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCwgaXNBY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuIGlz
QWNjZXNzaWJsZTsKLSAgICBuYXRpdmVJbmRleCA9IHVUZXh0QWNjZXNzUGluSW5kZXgobmF0aXZl
SW5kZXgsIG5hdGl2ZUxlbmd0aCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQgY3VycmVudENv
bnRleHQgPSB0ZXh0TGF0aW4xQ29udGV4dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0g
ICAgVVRleHRQcm92aWRlckNvbnRleHQgbmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0
KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBV
VGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9Db250ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBj
dXJyZW50Q29udGV4dCkgewotICAgICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92
aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAgICAgICAgICAgdGV4dExhdGluMUNvbnRl
eHRBd2FyZU1vdmVJblByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5n
dGgsIGZvcndhcmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZXh0TGF0aW4xQ29udGV4
dEF3YXJlTW92ZUluUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgs
IGZvcndhcmQpOwotICAgIH0gZWxzZSBpZiAobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29u
dGV4dDo6UHJpbWFyeUNvbnRleHQpCi0gICAgICAgIHRleHRMYXRpbjFDb250ZXh0QXdhcmVTd2l0
Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndh
cmQpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3Zp
ZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsKLSAgICAgICAgdGV4dExhdGluMUNvbnRleHRBd2Fy
ZVN3aXRjaFRvUHJpb3JDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZv
cndhcmQpOwotICAgIH0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGludDMyX3QgdVRl
eHRMYXRpbjFDb250ZXh0QXdhcmVFeHRyYWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNo
YXIqLCBpbnQzMl90LCBVRXJyb3JDb2RlKiBlcnJvckNvZGUpCi17Ci0gICAgLy8gSW4gdGhlIHBy
ZXNlbnQgY29udGV4dCwgdGhpcyB0ZXh0IHByb3ZpZGVyIGlzIHVzZWQgb25seSB3aXRoIElDVSBm
dW5jdGlvbnMKLSAgICAvLyB0aGF0IGRvIG5vdCBwZXJmb3JtIGFuIGV4dHJhY3Qgb3BlcmF0aW9u
LgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICplcnJvckNvZGUgPSBVX1VOU1VQUE9S
VEVEX0VSUk9SOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCB1VGV4dExhdGluMUNv
bnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQotewotICAgIHRleHQtPmNvbnRleHQgPSBudWxs
cHRyOwotfQotCi1VVGV4dCogb3BlbkxhdGluMUNvbnRleHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRl
eHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4dCwgaW50IHByaW9yQ29udGV4dExlbmd0
aCwgVUVycm9yQ29kZSogc3RhdHVzKQotewotICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpIHsKLSAgICAg
ICAgKnN0YXR1cyA9IFVfSUxMRUdBTF9BUkdVTUVOVF9FUlJPUjsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotICAgIFVUZXh0KiB0ZXh0ID0gdXRleHRfc2V0dXAoJnV0V2l0aEJ1ZmZlci0+dGV4
dCwgc2l6ZW9mKHV0V2l0aEJ1ZmZlci0+YnVmZmVyKSwgc3RhdHVzKTsKLSAgICBpZiAoVV9GQUlM
VVJFKCpzdGF0dXMpKSB7Ci0gICAgICAgIEFTU0VSVCghdGV4dCk7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIGluaXRpYWxpemVDb250ZXh0QXdhcmVVVGV4dFByb3ZpZGVyKHRleHQs
ICZ0ZXh0TGF0aW4xQ29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVuZ3RoLCBwcmlvckNvbnRl
eHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
aWN1L1VUZXh0UHJvdmlkZXJMYXRpbjEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzlkNWQyODRiZWMwYTgxYjNmODdhYWM2ODNiNDhlMzQ4MGU1MjRlOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2ljdS9VVGV4dFByb3ZpZGVyTGF0aW4xLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyTGF0aW4xX2gKLSNkZWZpbmUg
VVRleHRQcm92aWRlckxhdGluMV9oCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0ZXh0Lmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvTENoYXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBp
bnQgVVRleHRXaXRoQnVmZmVySW5saW5lQ2FwYWNpdHkgPSAxNjsKLQotc3RydWN0IFVUZXh0V2l0
aEJ1ZmZlciB7Ci0gICAgVVRleHQgdGV4dDsKLSAgICBVQ2hhciBidWZmZXJbVVRleHRXaXRoQnVm
ZmVySW5saW5lQ2FwYWNpdHldOwotfTsKLQotVVRleHQqIG9wZW5MYXRpbjFVVGV4dFByb3ZpZGVy
KFVUZXh0V2l0aEJ1ZmZlciogdXRXaXRoQnVmZmVyLCBjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgsIFVFcnJvckNvZGUqIHN0YXR1cyk7Ci1VVGV4dCogb3BlbkxhdGluMUNvbnRl
eHRBd2FyZVVUZXh0UHJvdmlkZXIoVVRleHRXaXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0
IExDaGFyKiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgVUNoYXIqIHByaW9yQ29udGV4
dCwgaW50IHByaW9yQ29udGV4dExlbmd0aCwgVUVycm9yQ29kZSogc3RhdHVzKTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRlckxhdGluMV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3ZpZGVyVVRG
MTYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVU
RjE2LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhYWM0OGM4MTUxY2UwMTI1
MzZhOGM0YjE1YWFlZGI4NDg2YjBjMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2ljdS9VVGV4dFByb3Zp
ZGVyVVRGMTYuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVVRleHRQcm92aWRlclVURjE2LmgiCi0K
LSNpbmNsdWRlICJVVGV4dFByb3ZpZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8g
VVRGMTZDb250ZXh0QXdhcmUgcHJvdmlkZXIKLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29u
dGV4dEF3YXJlQ2xvbmUoVVRleHQqLCBjb25zdCBVVGV4dCosIFVCb29sLCBVRXJyb3JDb2RlKik7
Ci1zdGF0aWMgaW50NjRfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0
Kik7Ci1zdGF0aWMgVUJvb2wgdVRleHRVVEYxNkNvbnRleHRBd2FyZUFjY2VzcyhVVGV4dCosIGlu
dDY0X3QsIFVCb29sKTsKLXN0YXRpYyBpbnQzMl90IHVUZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRy
YWN0KFVUZXh0KiwgaW50NjRfdCwgaW50NjRfdCwgVUNoYXIqLCBpbnQzMl90LCBVRXJyb3JDb2Rl
Kik7Ci1zdGF0aWMgdm9pZCB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvc2UoVVRleHQqKTsKLQot
c3RhdGljIGNvbnN0IHN0cnVjdCBVVGV4dEZ1bmNzIHRleHRVVEYxNkNvbnRleHRBd2FyZUZ1bmNz
ID0gewotICAgIHNpemVvZihVVGV4dEZ1bmNzKSwKLSAgICAwLAotICAgIDAsCi0gICAgMCwKLSAg
ICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2Fy
ZU5hdGl2ZUxlbmd0aCwKLSAgICB1VGV4dFVURjE2Q29udGV4dEF3YXJlQWNjZXNzLAotICAgIHVU
ZXh0VVRGMTZDb250ZXh0QXdhcmVFeHRyYWN0LAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwK
LSAgICBudWxscHRyLAotICAgIG51bGxwdHIsCi0gICAgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNs
b3NlLAotICAgIG51bGxwdHIsCi0gICAgbnVsbHB0ciwKLSAgICBudWxscHRyCi19OwotCi1zdGF0
aWMgaW5saW5lIFVUZXh0UHJvdmlkZXJDb250ZXh0IHRleHRVVEYxNkNvbnRleHRBd2FyZUdldEN1
cnJlbnRDb250ZXh0KGNvbnN0IFVUZXh0KiB0ZXh0KQotewotICAgIGlmICghdGV4dC0+Y2h1bmtD
b250ZW50cykKLSAgICAgICAgcmV0dXJuIFVUZXh0UHJvdmlkZXJDb250ZXh0OjpOb0NvbnRleHQ7
Ci0gICAgcmV0dXJuIHRleHQtPmNodW5rQ29udGVudHMgPT0gdGV4dC0+cCA/IFVUZXh0UHJvdmlk
ZXJDb250ZXh0OjpQcmltYXJ5Q29udGV4dCA6IFVUZXh0UHJvdmlkZXJDb250ZXh0OjpQcmlvckNv
bnRleHQ7Ci19Ci0KLXN0YXRpYyB2b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW1h
cnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2
ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKLXsKLSAgICBBU1NFUlQodGV4dC0+Y2h1bmtDb250ZW50
cyA9PSB0ZXh0LT5wKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRp
dmVJbmRleCA+PSB0ZXh0LT5iIDogbmF0aXZlSW5kZXggPiB0ZXh0LT5iKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGZvcndhcmQsIGZvcndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5h
dGl2ZUluZGV4IDw9IG5hdGl2ZUxlbmd0aCk7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVTdGFydCA9
IHRleHQtPmI7Ci0gICAgdGV4dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKLSAg
ICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05h
dGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlm
IGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0
aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVu
a0xlbmd0aCA9IGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8g
c3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSA6IDA7Ci0gICAgdGV4dC0+bmF0aXZlSW5kZXhp
bmdMaW1pdCA9IHRleHQtPmNodW5rTGVuZ3RoOwotICAgIGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZl
SW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwotICAgIC8vIEVuc3VyZSBjaHVuayBvZmZz
ZXQgaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIG9mZnNldCBleGNlZWRzIGludDMyX3QgcmFu
Z2Ugb3IgY2h1bmsgbGVuZ3RoLgotICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihv
ZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIHRleHRVVEYxNkNvbnRleHRBd2FyZVN3aXRjaFRvUHJpbWFyeUNvbnRleHQoVVRleHQqIHRl
eHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9vbCBmb3J3
YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5jaHVua0Nv
bnRlbnRzID09IHRleHQtPnEpOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KHRleHQtPnApOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJ
blByaW1hcnlDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQp
OwotfQotCi1zdGF0aWMgdm9pZCB0ZXh0VVRGMTZDb250ZXh0QXdhcmVNb3ZlSW5QcmlvckNvbnRl
eHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3Ro
LCBVQm9vbCBmb3J3YXJkKQotewotICAgIEFTU0VSVCh0ZXh0LT5jaHVua0NvbnRlbnRzID09IHRl
eHQtPnEpOwotICAgIEFTU0VSVChmb3J3YXJkID8gbmF0aXZlSW5kZXggPCB0ZXh0LT5iIDogbmF0
aXZlSW5kZXggPD0gdGV4dC0+Yik7Ci0gICAgQVNTRVJUX1VOVVNFRChuYXRpdmVMZW5ndGgsIGZv
cndhcmQgPyBuYXRpdmVJbmRleCA8IG5hdGl2ZUxlbmd0aCA6IG5hdGl2ZUluZGV4IDw9IG5hdGl2
ZUxlbmd0aCk7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3J3YXJkLCBmb3J3YXJkID8gbmF0aXZlSW5k
ZXggPCBuYXRpdmVMZW5ndGggOiBuYXRpdmVJbmRleCA8PSBuYXRpdmVMZW5ndGgpOwotICAgIHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgPSAwOwotICAgIHRleHQtPmNodW5rTmF0aXZlTGltaXQgPSB0
ZXh0LT5iOwotICAgIHRleHQtPmNodW5rTGVuZ3RoID0gdGV4dC0+YjsKLSAgICB0ZXh0LT5uYXRp
dmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7Ci0gICAgaW50NjRfdCBvZmZzZXQg
PSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7Ci0gICAgLy8gRW5zdXJlIGNo
dW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50
MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0ZXh0LT5jaHVua09mZnNldCA9IHN0
ZDo6bWluKG9mZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKLX0KLQot
c3RhdGljIHZvaWQgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQoVVRl
eHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludDY0X3QgbmF0aXZlTGVuZ3RoLCBVQm9v
bCBmb3J3YXJkKQotewotICAgIEFTU0VSVCghdGV4dC0+Y2h1bmtDb250ZW50cyB8fCB0ZXh0LT5j
aHVua0NvbnRlbnRzID09IHRleHQtPnApOwotICAgIHRleHQtPmNodW5rQ29udGVudHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBVQ2hhcio+KHRleHQtPnEpOwotICAgIHRleHRVVEYxNkNvbnRleHRBd2Fy
ZU1vdmVJblByaW9yQ29udGV4dCh0ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3
YXJkKTsKLX0KLQotc3RhdGljIFVUZXh0KiB1VGV4dFVURjE2Q29udGV4dEF3YXJlQ2xvbmUoVVRl
eHQqIGRlc3RpbmF0aW9uLCBjb25zdCBVVGV4dCogc291cmNlLCBVQm9vbCBkZWVwLCBVRXJyb3JD
b2RlKiBzdGF0dXMpCi17Ci0gICAgcmV0dXJuIHVUZXh0Q2xvbmVJbXBsKGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGRlZXAsIHN0YXR1cyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgaW50NjRfdCB1VGV4dFVU
RjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3RoKFVUZXh0KiB0ZXh0KQotewotICAgIHJldHVybiB0
ZXh0LT5hICsgdGV4dC0+YjsKLX0KLQotc3RhdGljIFVCb29sIHVUZXh0VVRGMTZDb250ZXh0QXdh
cmVBY2Nlc3MoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIFVCb29sIGZvcndhcmQp
Ci17Ci0gICAgaWYgKCF0ZXh0LT5jb250ZXh0KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAg
aW50NjRfdCBuYXRpdmVMZW5ndGggPSB1VGV4dFVURjE2Q29udGV4dEF3YXJlTmF0aXZlTGVuZ3Ro
KHRleHQpOwotICAgIFVCb29sIGlzQWNjZXNzaWJsZTsKLSAgICBpZiAodVRleHRBY2Nlc3NJbkNo
dW5rT3JPdXRPZlJhbmdlKHRleHQsIG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQs
IGlzQWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBpc0FjY2Vzc2libGU7Ci0gICAgbmF0aXZl
SW5kZXggPSB1VGV4dEFjY2Vzc1BpbkluZGV4KG5hdGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgpOwot
ICAgIFVUZXh0UHJvdmlkZXJDb250ZXh0IGN1cnJlbnRDb250ZXh0ID0gdGV4dFVURjE2Q29udGV4
dEF3YXJlR2V0Q3VycmVudENvbnRleHQodGV4dCk7Ci0gICAgVVRleHRQcm92aWRlckNvbnRleHQg
bmV3Q29udGV4dCA9IHVUZXh0UHJvdmlkZXJDb250ZXh0KHRleHQsIG5hdGl2ZUluZGV4LCBmb3J3
YXJkKTsKLSAgICBBU1NFUlQobmV3Q29udGV4dCAhPSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6Tm9D
b250ZXh0KTsKLSAgICBpZiAobmV3Q29udGV4dCA9PSBjdXJyZW50Q29udGV4dCkgewotICAgICAg
ICBpZiAoY3VycmVudENvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250
ZXh0KQotICAgICAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlTW92ZUluUHJpbWFyeUNvbnRl
eHQodGV4dCwgbmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRleHRVVEYxNkNvbnRleHRBd2FyZU1vdmVJblByaW9yQ29udGV4dCh0
ZXh0LCBuYXRpdmVJbmRleCwgbmF0aXZlTGVuZ3RoLCBmb3J3YXJkKTsKLSAgICB9IGVsc2UgaWYg
KG5ld0NvbnRleHQgPT0gVVRleHRQcm92aWRlckNvbnRleHQ6OlByaW1hcnlDb250ZXh0KQotICAg
ICAgICB0ZXh0VVRGMTZDb250ZXh0QXdhcmVTd2l0Y2hUb1ByaW1hcnlDb250ZXh0KHRleHQsIG5h
dGl2ZUluZGV4LCBuYXRpdmVMZW5ndGgsIGZvcndhcmQpOwotICAgIGVsc2UgewotICAgICAgICBB
U1NFUlQobmV3Q29udGV4dCA9PSBVVGV4dFByb3ZpZGVyQ29udGV4dDo6UHJpb3JDb250ZXh0KTsK
LSAgICAgICAgdGV4dFVURjE2Q29udGV4dEF3YXJlU3dpdGNoVG9QcmlvckNvbnRleHQodGV4dCwg
bmF0aXZlSW5kZXgsIG5hdGl2ZUxlbmd0aCwgZm9yd2FyZCk7Ci0gICAgfQotICAgIHJldHVybiBU
UlVFOwotfQotCi1zdGF0aWMgaW50MzJfdCB1VGV4dFVURjE2Q29udGV4dEF3YXJlRXh0cmFjdChV
VGV4dCosIGludDY0X3QsIGludDY0X3QsIFVDaGFyKiwgaW50MzJfdCwgVUVycm9yQ29kZSogZXJy
b3JDb2RlKQotewotICAgIC8vIEluIHRoZSBwcmVzZW50IGNvbnRleHQsIHRoaXMgdGV4dCBwcm92
aWRlciBpcyB1c2VkIG9ubHkgd2l0aCBJQ1UgZnVuY3Rpb25zCi0gICAgLy8gdGhhdCBkbyBub3Qg
cGVyZm9ybSBhbiBleHRyYWN0IG9wZXJhdGlvbi4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAqZXJyb3JDb2RlID0gVV9VTlNVUFBPUlRFRF9FUlJPUjsKLSAgICByZXR1cm4gMDsKLX0K
LQotc3RhdGljIHZvaWQgdVRleHRVVEYxNkNvbnRleHRBd2FyZUNsb3NlKFVUZXh0KiB0ZXh0KQot
ewotICAgIHRleHQtPmNvbnRleHQgPSBudWxscHRyOwotfQotCi1VVGV4dCogb3BlblVURjE2Q29u
dGV4dEF3YXJlVVRleHRQcm92aWRlcihVVGV4dCogdGV4dCwgY29uc3QgVUNoYXIqIHN0cmluZywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciogcHJpb3JDb250ZXh0LCBpbnQgcHJpb3JDb250
ZXh0TGVuZ3RoLCBVRXJyb3JDb2RlKiBzdGF0dXMpCi17Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcgfHwgbGVuZ3RoID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkg
ewotICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0gICAgdGV4dCA9IHV0ZXh0X3NldHVwKHRleHQsIDAsIHN0YXR1cyk7
Ci0gICAgaWYgKFVfRkFJTFVSRSgqc3RhdHVzKSkgewotICAgICAgICBBU1NFUlQoIXRleHQpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplQ29udGV4dEF3YXJlVVRl
eHRQcm92aWRlcih0ZXh0LCAmdGV4dFVURjE2Q29udGV4dEF3YXJlRnVuY3MsIHN0cmluZywgbGVu
Z3RoLCBwcmlvckNvbnRleHQsIHByaW9yQ29udGV4dExlbmd0aCk7Ci0gICAgcmV0dXJuIHRleHQ7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaWN1L1VUZXh0UHJvdmlkZXJVVEYxNi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGE3YjQ3ZGQ3MzRiYWE3MzA4MDM0M2UwNTgwNWQ3MmUwMjNhN2E5ZTguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9pY3UvVVRleHRQcm92aWRlclVURjE2LmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBVVGV4dFByb3ZpZGVyVVRGMTZf
aAotI2RlZmluZSBVVGV4dFByb3ZpZGVyVVRGMTZfaAotCi0jaW5jbHVkZSA8dW5pY29kZS91dGV4
dC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVVUZXh0KiBvcGVuVVRGMTZDb250ZXh0QXdh
cmVVVGV4dFByb3ZpZGVyKFVUZXh0KiwgY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGNv
bnN0IFVDaGFyKiBwcmlvckNvbnRleHQsIGludCBwcmlvckNvbnRleHRMZW5ndGgsIFVFcnJvckNv
ZGUqKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVRleHRQcm92aWRl
clVURjE2X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1Rl
eHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJv
dW5kYXJpZXMubW0KaW5kZXggYjg2MGEzNTI5MmMzNTFiNDNiNjk0Nzg4MTVmZGRhMWMxYjI2ZDJi
OC4uZDhlZTU5OGM3NDM4YjU3MjBjZWVlOTgxN2RlZjNlYWJhOTU1Zjk4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTI2
LDggKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGV4dEJvdW5kYXJpZXMu
aCIKIAotI2ltcG9ydCAiVGV4dEJyZWFrSXRlcmF0b3IuaCIKLSNpbXBvcnQgIlRleHRCcmVha0l0
ZXJhdG9ySW50ZXJuYWxJQ1UuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nVG9r
ZW5pemVyLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHVu
aWNvZGUvdWJyay5oPgpAQCAtMzYsNiArMzQsOCBAQAogI2ltcG9ydCA8dW5pY29kZS91dHlwZXMu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmg+CiAjaW1wb3J0IDx3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVU1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YWU1Mzk3NmZiMWQ1ZDcyYmNhNzQ2NzM2YjY4MzcxNTA2YWE4ZDY0Ni4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVS5oIgotCi0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBpbnQgbWF4TG9j
YWxlU3RyaW5nTGVuZ3RoID0gMzI7Ci0KLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9w
ZXJ0eUxpc3RSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNU
UigiQXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwKLSAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBs
aWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0
KSk7Ci0gICAgaWYgKCFsb2NhbGUgfHwgQ0ZHZXRUeXBlSUQobG9jYWxlLmdldCgpKSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGxvY2FsZS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCi17Ci0gICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGxhbmd1YWdlc0FycmF5ID0gYWRvcHRDRihDRkxvY2FsZUNvcHlQcmVmZXJy
ZWRMYW5ndWFnZXMoKSk7Ci0gICAgaWYgKCFsYW5ndWFnZXNBcnJheSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaWYgKCFDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzQXJyYXkuZ2V0KCkp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzQXJyYXkuZ2V0KCksIDApKTsK
LX0KLQotc3RhdGljIHZvaWQgZ2V0TG9jYWxlKENGU3RyaW5nUmVmIGxvY2FsZSwgY2hhciBsb2Nh
bGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICAvLyBFbXB0eSBz
dHJpbmcgbWVhbnMgInJvb3QgbG9jYWxlIiwgYW5kIHRoYXQgaXMgd2hhdCB3ZSB1c2UgaWYgd2Ug
Y2FuJ3QgZ2V0IGEgcHJlZmVyZW5jZS4KLSAgICBsb2NhbGVTdHJpbmdCdWZmZXJbMF0gPSAwOwot
ICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZTdHJpbmdHZXRDU3RyaW5n
KGxvY2FsZSwgbG9jYWxlU3RyaW5nQnVmZmVyLCBtYXhMb2NhbGVTdHJpbmdMZW5ndGgsIGtDRlN0
cmluZ0VuY29kaW5nQVNDSUkpOwotfQotCi1zdGF0aWMgdm9pZCBnZXRTZWFyY2hMb2NhbGUoY2hh
ciBsb2NhbGVTdHJpbmdCdWZmZXJbbWF4TG9jYWxlU3RyaW5nTGVuZ3RoXSkKLXsKLSAgICBnZXRM
b2NhbGUodG9wTGFuZ3VhZ2VQcmVmZXJlbmNlKCkuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7
Ci19Ci0KLWNvbnN0IGNoYXIqIGN1cnJlbnRTZWFyY2hMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGlj
IGNoYXIgbG9jYWxlU3RyaW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3Rh
dGljIGJvb2wgZ290U2VhcmNoTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RTZWFyY2hMb2Nh
bGUpIHsKLSAgICAgICAgZ2V0U2VhcmNoTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAg
ICAgIGdvdFNlYXJjaExvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJp
bmdCdWZmZXI7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldFRleHRCcmVha0xvY2FsZShjaGFyIGxvY2Fs
ZVN0cmluZ0J1ZmZlclttYXhMb2NhbGVTdHJpbmdMZW5ndGhdKQotewotICAgIC8vIElmIHRoZXJl
IGlzIG5vIHRleHQgYnJlYWsgbG9jYWxlLCB1c2UgdGhlIHRvcCBsYW5ndWFnZSBwcmVmZXJlbmNl
LgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlID0gdGV4dEJyZWFrTG9jYWxlUHJl
ZmVyZW5jZSgpOwotICAgIGlmIChsb2NhbGUpIHsKLSAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2Fub25pY2FsTG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNh
bExhbmd1YWdlSWRlbnRpZmllckZyb21TdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxl
LmdldCgpKSkpCi0gICAgICAgICAgICBsb2NhbGUgPSBjYW5vbmljYWxMb2NhbGU7Ci0gICAgfSBl
bHNlCi0gICAgICAgIGxvY2FsZSA9IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpOwotICAgIGdldExv
Y2FsZShsb2NhbGUuZ2V0KCksIGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci19Ci0KLWNvbnN0IGNoYXIq
IGN1cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpCi17Ci0gICAgc3RhdGljIGNoYXIgbG9jYWxlU3Ry
aW5nQnVmZmVyW21heExvY2FsZVN0cmluZ0xlbmd0aF07Ci0gICAgc3RhdGljIGJvb2wgZ290VGV4
dEJyZWFrTG9jYWxlID0gZmFsc2U7Ci0gICAgaWYgKCFnb3RUZXh0QnJlYWtMb2NhbGUpIHsKLSAg
ICAgICAgZ2V0VGV4dEJyZWFrTG9jYWxlKGxvY2FsZVN0cmluZ0J1ZmZlcik7Ci0gICAgICAgIGdv
dFRleHRCcmVha0xvY2FsZSA9IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsb2NhbGVTdHJpbmdC
dWZmZXI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVVdpbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MTdlMTcwNWVmNTRiOTM5MjE0ZGExODQ4MGRi
N2EzMmMzMmM5MjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY29uc3QgY2hhciogY3VycmVudFNlYXJjaExvY2Fs
ZUlEKCkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHVzZSBzeXN0ZW0gbG9jYWxlLgotICAgIHJl
dHVybiAiIjsKLX0KLQotY29uc3QgY2hhciogY3VycmVudFRleHRCcmVha0xvY2FsZUlEKCkKLXsK
LSAgICAvLyBVc2luZyBlbl9VU19QT1NJWCBub3cgc28gd29yZCBzZWxlY3Rpb24gaW4gYWRkcmVz
cyBmaWVsZCB3b3JrcyBhcyBleHBlY3RlZCBhcyBiZWZvcmUgKGRvdWJsZS1jbGlja2luZwotICAg
IC8vIGluIGEgVVJMIHNlbGVjdHMgYSB3b3JkIGRlbGltaXRlZCBieSBwZXJpb2RzIHJhdGhlciB0
aGFuIHNlbGVjdGluZyB0aGUgZW50aXJlIFVSTCkuCi0gICAgLy8gSG93ZXZlciwgdGhpcyBpcyBu
b3QgZW50aXJlbHkgY29ycmVjdCAtIHdlIHNob3VsZCBob25vciB0aGUgc3lzdGVtIGxvY2FsZSBp
biB0aGUgbm9ybWFsIGNhc2UuCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS82Nzg2NzAz
PiBTaG91bGQgdXNlIHN5c3RlbSBsb2NhbGUgZm9yIHRleHQgYnJlYWtpbmcKLSAgICByZXR1cm4g
ImVuX1VTX1BPU0lYIjsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggZTM1NDYwMzE5NTAzMjU4Y2YyOWY3NDNhNWI4NDEwZmYyNGU5ZWViNy4uMmVk
NWI1YTk1ZWVjM2MwNTBjZTFiZDQ5ZGZhMDQ1YjYwNjcxMzFmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC02OCw3ICs2OCw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogCiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKaW5kZXggOGI0ZWMzZjhlZWI5MzJjMWM3ZGM1ZGUxNjY5ZjA4YzQwYmEwNmVjYi4uMmE1
YWQ1ZDQ1MDk0MjU3NzZiOWFjMDQwMDAzNmZjNzYwMWI2ZTA5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IlRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5o
IgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBiYWNjNWMyNTNhYzNlN2M5
NWQ1YzZmYTlmMzYxNzU1MjQ0NWE4OTUyLi5kNjNlNjA4OWNkZTQwMzdjNTVlNWYxYzhjNjIyODFl
OGFjYTYyYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTI3LDgg
KzI3LDggQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0TGluZUJveGVzLmgiCiAjaW5jbHVkZSAiU2lt
cGxlTGluZUxheW91dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJ
dGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRG
cmFnbWVudEl0ZXJhdG9yLmgKaW5kZXggYzc5MDZjMTdkYzhlMDE0ZWQwNTBmOTVmY2IwMWNjODZi
NTEwMWQ2NC4uMTA3N2JjYmJmMTYwOTU1NGJjZWJiNzc0NThmMjgwODVmZjYyNmFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21l
bnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAi
UmVuZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50
cy5oIgotI2luY2x1ZGUgIlRleHRCcmVha0l0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KICNpbmNsdWRlICJicmVha19saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtf
bGluZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAppbmRl
eCAwNzU3NmJiYzhiZDRjZmY2ZjUzYWIzNGIwYzEzNjVhM2Y4NDRhOGNhLi5lNGI5NTM2ZmQxYmVk
ZjFjZTM2M2Q2NjAxMWQ1MTIzNTkwZWY4MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9i
cmVha19saW5lcy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJicmVha19saW5lcy5oIgogCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRlcmF0b3IuaCIK
ICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvYnJlYWtfbGluZXMuaAppbmRleCA5ZTA0ZDFlNDI4Y2EyNjA4MzVhYmViZjk1ZWVj
NjQzODliZmVlNGQ2Li5hMjk0NjEyOWNiYTZlYjkxNmRhYjllNTFhODBlY2JlOWUxN2ZiMmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuaApAQCAtMjIsOSArMjIsOSBAQAog
I2lmbmRlZiBicmVha19saW5lc19oCiAjZGVmaW5lIGJyZWFrX2xpbmVzX2gKIAotI2luY2x1ZGUg
IlRleHRCcmVha0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRl
cmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lQnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuaAppbmRleCAyNzc0ZjI2ODU2MTE5ODNkZjVjMzQ4MzllZGU3MDQ2ZGVkMjZhM2ZkLi5jODlm
ZTE3Y2NkMDY5YTY1Y2UxM2Q4MWFjN2UxYTNjODlmNTE4YzdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRl
ICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGlu
ZUlubGluZUhlYWRlcnMuaCIKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9z
L01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtp
dFN1cHBvcnQubW0KaW5kZXggYTNkOTQ5NDM3YzU1YTZiNzc2MDQ2Zjc3ZDMyMGI3OTM5ZWU4ODc5
Zi4uODk4YjA1NmFhMWI2YmQzNzliZmIyMzI4ZGUzYmY5ODZiNTQyOGNkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dl
YktpdC9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTM2LDExICszNiwxMSBAQAogI2lt
cG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvYnJlYWtfbGluZXMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFy
d2luL2R5bGRTUEkuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAK
ICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwCmluZGV4IDhlMDFiNWY4ZWJm
YWFhYTRhZjVjNzU3NzA0YjAxYjU0ODRhOWIxNTAuLjM0MDNlNmMxZmZlOGI1MDAxYjBkMTY0MDQ1
ZmE5ZGI5NWMwYjk0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
VGV4dENoZWNrZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVGV4
dENoZWNrZXJFZmwuY3BwCkBAIC0zMiw5ICszMiw5IEBACiAjaW5jbHVkZSAiVGV4dENoZWNrZXJT
dGF0ZS5oIgogCiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCi0jaW5jbHVkZSAiVGV4dEJyZWFrSXRl
cmF0b3IuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIldl
YlRleHRDaGVja2VyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaD4K
ICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKaW5kZXggZWViYzYxMzZiMjRjZjdiYTk0
ZWE5ZjJmZTkyNzNlMTRlNTY3YTdjNS4uNDA5ODYwN2I3MTk2ZjM4NmEwYWVmMDVjZWMwNmVhNGJm
NzRkYWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9UZXh0Q2hl
Y2tlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tl
ckd0ay5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRleHRDaGVja2VyLmgiCiAKLSNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHRDaGVja2VyRW5jaGFudC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>